阅读:1872回复:3
ZwWriteFile为什么INVALID_PARAMETER ?
g_szContent[12]="Hello World!";
if( ZwCreateFile( &hFile, FILE_APPEND_DATA, &ObjAttr, &iosb, 0, FILE_ATTRIBUTE_NORMAL, FILE_SHARE_READ, FILE_OPEN_IF, FILE_NON_DIRECTORY_FILE, NULL, 0)==STATUS_SUCCESS) { ns=ZwWriteFile( hFile, NULL, NULL, NULL, &iosb, (PVOID)g_szContent, 12*sizeof(char), NULL, NULL); ZwClose(hFile); } 总是返回0xC000000D=STATUS_INVALID_PARAMETER 是什么原因啊?难道传给ZwWriteFile的buffer必须是ExAllocatePool返回的堆中的内存吗? [编辑 - 12/20/04 by Odyssey] |
|
沙发#
发布于:2004-12-20 00:59
NTSTATUS
ZwCreateFile( OUT PHANDLE FileHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, OUT PIO_STATUS_BLOCK IoStatusBlock, IN PLARGE_INTEGER AllocationSize OPTIONAL, IN ULONG FileAttributes, IN ULONG ShareAccess, IN ULONG CreateDisposition, IN ULONG CreateOptions, IN PVOID EaBuffer OPTIONAL, IN ULONG EaLength ); OUT PIO_STATUS_BLOCK 不能空(NULL) ! |
|
板凳#
发布于:2004-12-20 08:56
NTSTATUS &iosb不会是空的。 我把ZwCreateFile中的参数改成FILE_SYNCHRONOUS_IO_NONALERT,就可以写进去了。这个函数是在一个Worker Thread里面调用的,是不是和这个有关? |
|
地板#
发布于:2007-08-02 16:13
将AllocationSize设为NULL
|
|