摘要:命名内核对象有一种问题:任何程序都可以创建一个命名对象,这样如果某个程序要实现单例运行而创建了一个内核对象,这种情况下另一程序也创建了同名的内核对象时,该单例程序就无法正常运行了。这是DoS攻击的一种。 在Vista中有一种机制使得用户创建的命名内核对象永远不会和其它程序创建的对象冲突,要使用定制的前缀并把它作为人的私有命名空间,如Global和Local,服务进程会确保为内核对象定义一边界描述...
阅读全文
摘要:单字节和双字节字符示例: #include #include #include #include #include int main(){ char* str1 = "Count."; wchar_t* wstr1 = L"Count."; char * mbstr1; char * locale_string; // strlen gives the length of si...
阅读全文
摘要:1,windows对程序错误的处理, int APIENTRY _tWinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPTSTR lpCmdLine,int nCmdShow){ LPVOID lpMsgBuf; HANDLE hFile = ::CreateFile(_T("C:\\12.txt"),0,0,...
阅读全文
摘要:读了前5章,感触最深的是作者在例子程序中对UNICODE的考虑,另外就是将windows的API和UNIX进行对比,结合前段时间在看的《UNIX网络编程 卷2》,感觉对比性很强。 印象最深刻的就是第5章的3个排序示例,将外部文件排序用内存来实现,堆,内存映射文件以及基准指针的使用让人大开眼见,不过比之《windows核心编程》还是有差距 #include "EvryThng....
阅读全文
摘要:#define _AFXDLL#include #include #include using namespace std;class CSortStringArray : public CStringArray {public: void Sort();private: BOOL CompareAndSwap(int pos);};void CSortStringArray::Sor...
阅读全文
摘要:void my_lock(int fd){ struct flock lock; lock.l_type = F_WRLCK; lock.l_whence = SEEK_SET; lock.l_start = 0; lock.l_len = 0; /**//* write lock entire file */ Fcntl(f...
阅读全文
摘要:本书是关于Gecko和基于Gecko应用程序来开发XPCOM组件的。简介部分探讨组件的概念,第一章你将编译简单的代码并注册到Mozilla中,此时会探讨组件和模块之间的关系,XPCOM接口以及注册的过程。 假定读者熟悉C++中的继承和封装,很多例子是javascript的,它用来做完脚本对象在Mozilla中访问XPCOM组件,因此熟悉它也是很好的。 XPCOM...
阅读全文
摘要:/**//* include globals */#include "unpipc.h"#define MAXNITEMS 1000000#define MAXNTHREADS 100 /**//* globals shared by threads */int nitems; /**...
阅读全文
摘要:多个生产者,单个消费者,只考虑生产者之间的同步互斥 #include "unpipc.h"#define MAXNITEMS 1000000#define MAXNTHREADS 100int nitems; /**//* read-only by producer and consumer */struc...
阅读全文
摘要:如何知道进程在一个空消息队列中放入一个消息?如果阻塞在msgrcv调用中,则除了等待无法做其他事情,如果给msgrcv指定非阻塞标志(IPC_NOWAIT),尽管不阻塞了,但必须持续调用该函数来确定何时有消息到达,也就是采用轮询方式(polling),Posix消息队列允许异步事件通知来通知何时有消息放入到某个空消息队列中,有2种方式: 1)产生一个信号 2)创建一个线程执行一个指定函...
阅读全文
摘要:1,获取Posix IPC的名字 #include "unpipc.h"char* px_ipc_name(const char* name){ char* dir,*dst,*slash; if((dst = malloc(PATH_MAX))==NULL) return NULL;//分配失败 if((dir=getenv("PX_IPC_NAME"))==NU...
阅读全文
摘要:P61,练习2解答 1,#include using namespace std;//筛法求素数void FilterPrime(int n){ bool* isPrimes = new bool[n+1]; for(int i=2;i>num; FilterPrime(num); system("pause"); return 0;} 2,#include usin...
阅读全文
摘要:钱能《C++程序设计教材》P14 日期数据存在在文件abc.txt中,格式如下面所示,若年,月,日加起来等于15,则收集,然后按日期从小到大的顺序打印出来 Sample Input: 03-11-1203-08-1204-08-1102-07-06 Sample Output: 02年07月06日03年08月04日 1,c++版本 #include #include #...
阅读全文
摘要:1, #include #pragma warning( disable : 4996 ) // disable deprecated warning #include #pragma warning( default : 4996 ) //-----------------------------------------------------------------------------/...
阅读全文
摘要: 在《浅谈基于Mozilla ThunderBird的扩展开发》这篇入门文章中简单介绍了基于Mozllia平台进行扩展开发的基础知识,但仍然欠缺最为重要的一种武器---没错,XPCOM!这篇文章就是为它准备的。
So,what's next?
没错,自己如何开发XPCOM组件并在扩展中使用。网上对于这方面的资料不是很多,而且没有特别完整的示例,这就是我写这篇文章的目的所在,通过一个简单的XPCOM组件的开发全过程,展示XPCOM组件的内部细节。
阅读全文
摘要://AddRef和Release的实现#include using namespace std;#include void trace(const char* msg) { cout (this) ; } else if (iid == IID_IX) { trace("CA QI: Return pointer to IX.") ; *ppv =...
阅读全文
摘要://QueryInterface的实现#include #include #include using namespace std;interface IX:IUnknown{ virtual void __stdcall FX() = 0;};interface IY:IUnknown{ virtual void __stdcall FY() = 0;};interface IZ:IUnknow...
阅读全文
摘要:昨天和两个同学一起玩魔兽3C的时候,由于很长时间我都是躲在练功房里砍木头人升级,而这种体力活不需要我监视英雄的举动,所以我就不断地切出游戏去上网,这种行为弄得两个哥们十分郁闷。呵呵,谁让我是主机呢,于是就不断地出现掉线的情况。过后我就在想,那么如何在游戏中限制用户这种动作呢,使得他无法利用’ WIN功能键”不断地切进切出。下面就是我给出的一个解决方案,原理是:利用一个底层的键盘钩子函数对待处理的键盘消息进行过滤。这个钩子即使在用户对窗口最小化或切换到另一个应用程序也是有效的。
阅读全文
摘要: 作者在这一篇中将解释如何去跟踪折射光线。这将涉及到在相交点处产生新的光线,并且计算新光线的方向。此外,作者还将运用Lambert-Beer 定律来解释光线在物体内部的吸收情况。最后作者将展示如何加入反锯齿的效果,并且如何对光线跟踪器进行加速优化。
阅读全文
摘要:1,处理operator new内存分配失败的情况 #include using namespace std;template class newhandlersupport { //提供类set_new_handler支持的基类public: static new_handler set_new_handler(new_handler p); static void* ...
阅读全文