我打不开文件!!
下面的一个函数是打开一个名为 IRPLOG 的文件,将整个IRP写入并关闭,使用DDK中的WDM。
运行过程中发现无法打开文件,无论该文件已经建立或者没有建立。
void WriteIrp(PIRP irp)
{
ULONG Length;
IO_STATUS_BLOCK IoStatus;
OBJECT_ATTRIBUTES objectAttributes;
NTSTATUS status;
HANDLE FileHandle;
UNICODE_STRING fileName;
RtlInitUnicodeString(&fileName, L"IRPLOG");
InitializeObjectAttributes (&objectAttributes,
(PUNICODE_STRING)&fileName,
OBJ_CASE_INSENSITIVE,
NULL,
NULL );
status = ZwCreateFile(&FileHandle,
FILE_APPEND_DATA,
&objectAttributes,
&IoStatus,
0,
FILE_ATTRIBUTE_NORMAL,
FILE_SHARE_WRITE,
FILE_OPEN_IF,
FILE_SYNCHRONOUS_IO_NONALERT,
NULL,
0 );
//------>此处 FileHandle 返回无效的句柄!
if(NT_SUCCESS(status))
{
ZwWriteFile(FileHandle,
NULL,
NULL,
NULL,
&IoStatus,
(PUCHAR)irp, sizeof(IRP),
NULL,
NULL );
ZwClose(FileHandle);
}
if (fileName.Buffer)
ExFreePool (fileName.Buffer);
}
有没有高手帮我看看打开文件以前还有什么遗漏的步骤,该函数可以直接编译,只需
#include <wdm.h>