阅读:2905回复:8
如何加锁、等锁、解锁文件 ?
我的Filter在Create之后需要 读、写 文件的内容,在单线程的情况没有问题
在Create之后得到FileObject然后发Irp去Read、Write 但是我的测试程序一旦发起的线程多了,读写就会返回STATUS_FILE_LOCK_CONFLICT 。有时几十个线程可以,有时几个线程就不行,有时上百个线程才不行,没有规律 我的应用层测试程序 for(int i=0;i < nThreadNum;i++) { .... _beginthreadex(NULL , 0 , TestThread , context , 0 , &uThreadID); } unsigned __stdcall TestThread(LPVOID pParam) { ....... if (!WriteFile(...)) { ...... } ...... } 搜索了所有我能搜索的网站,OSR上说可以用Map的方式去读,可是还要写,不知道该怎么办 |
|
|
沙发#
发布于:2007-05-19 22:06
换句话来问:
1.如何等待正在被其他线程(IRP)锁定的文件解除锁定 ? 2.如何将一个文件进行锁定让其他线程(IRP)等待我的读写完成 ? 谢谢指导 ! |
|
|
板凳#
发布于:2007-05-21 17:23
顶起来,就是字节锁的原因,但如何等待解锁呢 ?
|
|
|
地板#
发布于:2007-05-26 19:29
谢谢 michaelgz
文件驱动和过滤驱动的开发都是 陷阱式 的,从这个坑跳到那个坑 |
|
|