- 博客(11)
- 资源 (4)
- 收藏
- 关注
原创 多线程之简单定时器的实现代码
MultiThreadTimer.h#ifndef MULTI_H#define MULTI_H#include <vector>#include <Windows.h>#include <process.h>#include <iostream>using namespace std;typedef void(*TimerFunc) (LPVOID);typedef struct
2017-08-28 22:35:54 481
原创 内核对象(3)之单实例程序的创建
前面讲过使用命名对象来跨进程共享内核对象 现在我们来讲讲单实例程序的创建 其实很简单,使用Create内核对象的函数,当第二次创建的时候,会提示ERROR_ALREADY_EXISTS ,这个时候我们要终止程序的运行 以下是一个例子,大家只需关注入口函数的前9行#include "stdafx.h"#include <Windows.h>#include <Psapi.h>#includ
2017-08-28 22:13:20 277
原创 内核对象(2)之跨越边界进程共享内核对象
在两个进程之间共享内核对象的方法有很多 1.通过对象句柄的继承性共享内核对象,但是这两个进程之间必须要存在父子关系 步骤是:创建一个内核对象,将该内核对象的安全属性的bInheritHandle属性置为true,再用CreateProcess创建一个进程,将参数中的bInheritHandles也置为true,这样再新进程创建完成时,系统会自动复制父进程的句柄表中的可继承标志为true的句柄到子
2017-08-26 21:15:41 319
原创 内核对象(1)
内核对象的含义: 内核对象就是类似符号对象、事件对象、文件对象、文件映射对象、 I / O完成端口对象、作业对象、信箱对象、互斥对象、管道对象、进程对象,信标对象、线程 对象和等待计时器对象等 关于内核对象的注意点: 1.内核对象是内核而不是进程所拥有的 2.由于第1点的原因,内核对象的生存周期可能比创建他的进程周期还要长(只要内核的引用计数还没变为0),举个例子,我在某个进程A里创建了
2017-08-25 21:17:17 393
原创 线程同步
第一种方法是临界区 临界区是一段独占对某些资源访问的代码,同一时刻内只能有1个线程访问资源 CRITICAL_SECTION cs;//定义一个全局变量 EnterCriticalSection(&cs);//进入临界区 LeaveCriticalSection(&cs);//离开临界区 DeleteCriticalSection(&cs);//删除临界区对象 例一#include<Wi
2017-08-21 23:05:00 190
原创 线程创建
CreateThread(SEC_ATTRS SecurityAttributes, ULONG StackSize, SEC_THREAD_START StartFunction, PVOID ThreadParameter, ULONG CreationFlags, PULONG ThreadId) SecurityAttributes:指向一个SEC_ATT
2017-08-19 17:48:48 165
原创 WinExec,ShellExecute,CreateProcess
创建进程函数的使用 WinExec(LPCSTR lpCmdLine,UINT uCmdShow); lpCmdLine: 文件名和参数; 如没指定路径会按以下顺序查找: 程序目录/当前目录/System32/Windows/PATH环境变量 lpCmdLine举例:”java -?”//启动jdk的帮助功能 uCmdShow: SW_FORCEMINIMIZE: 在WindowNT5.0
2017-08-16 16:14:33 1080
原创 创建DLL详解(3)
前面我们讲过了DLL导出函数和DLL导出类,今天我们讲讲纯资源DLL的写法 首先创建DLL 这样工程就创建完成 我们在资源文件里添加了两个图片,在这里我们记住第二张图片的ID IDB_BITMAP2 注意这里要设置无入口点为true 设置流程 点击确定 点击编译,编译完成,可以再其他工程中使用这个DLL了 接下来我们测试下这个DLL 找到刚才工程的resour
2017-08-15 22:22:41 181
原创 创建DLL详解(2)
上一篇中我们讲到DLL导出函数的使用,这一篇我们讲下DLL导出类的使用 首先创建工程 选择DLL类型 创建工程完成后 这里DLLClass.h是我手动添加的 其实这里导出类的创建也很简单 直接再类的前面加上_declspec(dllexport) 例如class _declspec(dllexport) People { public: P
2017-08-14 23:50:19 175
原创 创建DLL详解(1)
我们知道dll有很多好处 1.可以把用过的函数或者类封装起来,供别人调用,而且还不公开源码 2.可以在不重新编译的情况下,更新程序 3.DLL可以实现程序模块化,一个团队,每个人可以完成不同的部分,完成后可以直接拼接 那么怎么创建DLL工程呢 选择win32项目 选择DLL类型 这是DLL的入口函数,如果你不想在DLL被加载时做处理,这个地方可不管 重点在于对应于工程
2017-08-14 22:32:38 296
原创 KMP算法详解
关于Next数组,我已经有过说明 但是有了next数组怎么用呢 现在我进行简单的图解,为大家讲解一下 简单设置两个变量I,q; #include <iostream>using namespace std;void GetKMP(char* target,int target_length,int next[]);void KMP(const char* P,const c
2017-08-14 13:42:55 175
windows核心编程第7章 SchedLab
2017-09-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人