阅读:1842回复:5
请教,我在mirror驱动里只要加了创建文件的代码,驱动就不能启动了``
请教,我在mirror驱动里只要加了创建文件的代码,驱动就不能启动了``
static int nCount = 0; if (nCount < 1) { if(KeGetCurrentIrql() != PASSIVE_LEVEL) { DISPDBG((0, "Current Level is not PASSIVE_LEVEL!!!")); return STATUS_INVALID_DEVICE_STATE; } RtlInitUnicodeString( &logFileUnicodeString, logFileNameBuffer ); InitializeObjectAttributes( &objectAttributes, &logFileUnicodeString, OBJ_CASE_INSENSITIVE, NULL, NULL ); DISPDBG((0, "ntStatus:%08x", ntStatus)); ntStatus = ZwCreateFile( &hLogFile, FILE_WRITE_DATA|SYNCHRONIZE, &objectAttributes, &ioStatus, NULL, FILE_ATTRIBUTE_NORMAL, FILE_SHARE_READ, FILE_OPEN_IF, FILE_SYNCHRONOUS_IO_NONALERT, NULL, 0 ); ntStatus = ZwClose(hLogFile); DISPDBG((0,"ntStatus:%08x",ntStatus)); } 请问我是不是哪里没注意到或错了``谢谢``! |
|
最新喜欢:Leopar... |
沙发#
发布于:2007-08-30 02:03
这里是变量定义
WCHAR logFileNameBuffer[] = L"\\Device\\HarddiskVolume1\\mylog.LOG"; UNICODE_STRING logFileUnicodeString; OBJECT_ATTRIBUTES objectAttributes; HANDLE hLogFile; IO_STATUS_BLOCK ioStatus; NTSTATUS ntStatus = 0; |
|
板凳#
发布于:2007-08-30 10:39
显示驱动链接到win32k.sys,只能调用EngXXX,要用ZwCreateFile这种东西你得另想办法
|
|
地板#
发布于:2007-08-30 21:45
啊``这样啊```
coolboylmk ,还有一个问题,通过EngAllocUserMem申请的指针,可以直接在ring3层里访问吗?如果不行``要怎样做呢? 或者在ring3里的指针,要怎样才可以在mirror驱动里使用? |
|
地下室#
发布于:2007-08-30 22:38
EngAllocUserMem是在当前进程地址空间里分配内存,可以从ring3访问,但是驱动只能在切换到该进程上下文时才能访问这块内存。
看看这篇文章,应该对你有帮助 http://support.microsoft.com/kb/191840/en-us |
|
5楼#
发布于:2007-08-30 23:06
原来如此。。但是当前进程很难确定哦。。
谢谢你!我去看看你给的链接! |
|