李sir_Blog

博客园 首页 联系 订阅 管理

2010年6月3日

摘要: 最理想的比较字符串函数是CompareString(Ex)和CompareStringOrdinal。对于需要以符合用户语言习惯的方式向用户显示的字符串,请用CompareString(Ex)进行比较。CompareString函数的原型如下:int CompareString(LCID locale, //LCID GetThreadLocale();DWORD dwCmdFlags,PCTST... 阅读全文
posted @ 2010-06-03 16:05 李sir 阅读(797) 评论(0) 推荐(0)

摘要: 1.为什么使用线程池 假使你设计了一个服务器程序,有监听线程不断的监听是否有从客户端发来的新登陆请求,如果收到新的请求,那么就新创建一个线程,做一系列针对该客户端的工作,而监听线程得以继续执行,以处理下一个登陆请求。新建的线程处理过登陆之后,很可能就没有其他任务了,因此该线程退出了。 这里涉及到了线程的创建和销毁,如果在同一时刻收到了50000个登录请求,那就要循环创建50000个线程分别处理,可... 阅读全文
posted @ 2010-06-03 15:35 李sir 阅读(111) 评论(0) 推荐(0)

摘要: 这是非常有趣的话题。试想,让另一个程序执行你的代码,以达到一些非常的目的,这时需要注入dll。一.注入dll1.通过注册表项 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs 来指定你的dll的路径,那么当一个GUI程序启动时就要加载User32.dll,而User32.dll将... 阅读全文
posted @ 2010-06-03 15:32 李sir 阅读(225) 评论(0) 推荐(0)

摘要: 如果想确认一个dll是否已经被映射到进程空间中,尽量使用GetModuleHandle,最好不要冒然使用LoadLibrary(Ex).GetProcAddress可以传递函数名或者序号(通过MAKEINTRESOURCE(2)来"制作"序号).四.DllMain(Dll入口)其实,DllMain函数并不是最初的入口,它被_DllMainCRTStartup函数调用。当系统调用_DllMainCR... 阅读全文
posted @ 2010-06-03 15:25 李sir 阅读(192) 评论(0) 推荐(0)

摘要: 转载自http://www.cnblogs.com/yoran/archive/2008/02/29/1086669.html一.概述可以被wait的东东有: 0.多个线程WaitForSingleObject()同一个AutoResetEvent,那么此对象signed之后,哪个线程变为可调度呢?1.进程句柄、线程句柄、事件等等内核对象,正常使用时(运行时)都是unsigned的,完蛋了才sig... 阅读全文
posted @ 2010-06-03 15:20 李sir 阅读(171) 评论(0) 推荐(0)

摘要: 转载自http://www.cnblogs.com/yoran/archive/2008/03/02/1087702.html1.虚拟地址空间的大小•32位系统每个进程的虚拟地址空间是0x00000000 - 0xFFFFFFFF, 4GB,其中 从 0X80000000 - 0xFFFFFFFF为系统为内核占用;•64位系统每个进程的虚拟地址空间是0x000000000000... 阅读全文
posted @ 2010-06-03 15:15 李sir 阅读(224) 评论(0) 推荐(0)

摘要: 转载自http://www.cnblogs.com/yoran/archive/2008/03/02/1088084.html内存映射文件可以大大减少操作文件的开销,让程序运行更顺利,使不同进程共享数据变得更容易.一.执行程序当创建一个线程时, 1.系统只是保留了足够大的对应的.exe文件区域,将.exe文件本身作为物理内存,执行映射,却并未提交;2.访问.exe文件的部分区域,以确定依赖的.dl... 阅读全文
posted @ 2010-06-03 15:00 李sir 阅读(252) 评论(0) 推荐(0)

摘要: 转载自http://www.cnblogs.com/yoran/archive/2008/03/03/1088175.html堆(Heap)和栈(Stack)不同,堆是给进程用的,用来存储各个线程申请的内存块。不能同时在堆上进行Alloc操作,这就意味这如果2个线程同时执行new操作,那么一个可以执行,另一个要等到这个执行完毕才可以执行new——否则的话,可能返回同一个地址... 阅读全文
posted @ 2010-06-03 14:57 李sir 阅读(127) 评论(0) 推荐(0)

摘要: 转载http://hi.baidu.com/csw8923/blog/item/0a6fe71086ce270b213f2e8c.htmlCreateProcess 函数 CreateProcess 函数可用来创建一个进程 BOOL CreateProcess( PCTSTR pszApplicationName, // 指定新进程要使用的可执行文件名。 PTSTR pszCommandLine,... 阅读全文
posted @ 2010-06-03 13:50 李sir 阅读(1977) 评论(0) 推荐(0)

摘要: 转载自http://hi.baidu.com/csw8923/blog/item/c401baa293d1cda4cbefd082.html要点描述:1.调用GetEnvironmentStrings函数来获取完整的环境块。在GUI的环境下2.在CUI的程序里,可以通过程序main入口点函数的TCHAR *en[]参数来接收环境变量。3.使用SendMessage函数为应用程序即可更新环境变量。4... 阅读全文
posted @ 2010-06-03 11:46 李sir 阅读(314) 评论(0) 推荐(0)

摘要: 装载自http://hi.baidu.com/csw8923/blog/item/20f8f858320f5fd49c8204ac.html1、进程控制 CreateToolhelp32Snapshot 函数给当前系统内执行的进程拍快照(Snapshot),列表中记录着进程的ID、进程对应的可执行文件的名称和创建该进程的进程ID数据。 实用Process32First函数和Process32Nex... 阅读全文
posted @ 2010-06-03 11:21 李sir 阅读(250) 评论(0) 推荐(1)

摘要: 终止进程是通过以下4种方式来实现的: *主线程入口点函数返回.(推荐) *进程中线程调用ExitProcess函数(避免) *另一个进程中线程调用TerminateProcess函数(避免)* 进程,自然死亡(几乎不可能) 一、主线程的入口点函数返回 主程序入口点函数返回之后,这个应用程序的进程才终止. 主线程的入口点函数返回,保证以下操作会被执行. 1.线程创建任何C++对象都将由这些对象的... 阅读全文
posted @ 2010-06-03 10:02 李sir 阅读(2532) 评论(0) 推荐(0)

摘要: 转载自http://hi.baidu.com/csw8923/blog/item/8ba92b3498f8e047241f14d6.html3.3.1 对象句柄的继承要点记录: 父(内核对象权限)子句柄的继承可以利用 SECURITY_ATTRIBUTES 结构(内核对象安全) 中的bInheritHandle参数来设置是否开放给子进程继承权。进程句柄继承,就是父进程将自己的句柄继承给子进程使子进... 阅读全文
posted @ 2010-06-03 09:49 李sir 阅读(250) 评论(0) 推荐(0)

摘要: 转载自http://hi.baidu.com/csw8923/blog/item/c568f682d1fb1eb66d811907.html要点描述:1.CreateBoundaryDescriptor -- 创建一个边界描述符2.WinBuiltinAdministratorsSid -- 创建一个SID对应的本地管理员组(一个角色principal会有有一个sid来唯一标识)3.AddSIDT... 阅读全文
posted @ 2010-06-03 09:40 李sir 阅读(579) 评论(0) 推荐(0)