阅读:2451回复:1
求助:ZwWriteFile导致系统死机
我写了一个NDIS的驱动,在里面建了一个线程用来把从网络上得到的数据写到文件中去。程序开始运行正常,但运行一段时间后总会死机,我加了调试输出,发现死在ZwWriteFile上,请教各位大虾,是何原因导致。创建和写代码如下:
HANDLE g_hCacheFile = NULL NTSTATUS status; OBJECT_ATTRIBUTES oa; UNICODE_STRING usname; IO_STATUS_BLOCK iostatus; WCHAR wcFileName[MAX_PATH]; memset(wcFileName,0,sizeof(wcFileName)); swprintf(wcFileName,L"\\??\\d:\\test.cth"); RtlInitUnicodeString(&usname, wcFileName); InitializeObjectAttributes(&oa, &usname, OBJ_CASE_INSENSITIVE|OBJ_KERNEL_HANDLE , NULL, NULL); status = ZwCreateFile(&g_hCacheFile, GENERIC_READ|GENERIC_WRITE, &oa, &iostatus, NULL, FILE_ATTRIBUTE_NORMAL, 0, FILE_OVERWRITE_IF, FILE_SYNCHRONOUS_IO_NONALERT|FILE_NO_INTERMEDIATE_BUFFERING, NULL, 0); IO_STATUS_BLOCK IOSB; LARGE_INTEGER liOffset; NTSTATUS state; liOffset.QuadPart = nOffset; state = ZwWriteFile( g_hCacheFile, NULL, NULL, NULL, &IOSB, buffer, nLength, &liOffset, NULL ); 其中写长度nLength是512的倍数。 |
|