//功能:在内核态下把缓冲区buf的内容写到磁盘上,并在D盘根目录下保存为test.txt。如果原来就存在文件D://test.txt,则覆盖写入,否则自动创建该文件。 //说明:在WindowsXP SP3系统、Microsoft WindowsXP DDK编译环境下测试通过。 //时间:2009年9月14日 NTSTATUS KernelWriteTest() { char buf[]="Hello,NT Kernel!"; UNICODE_STRING filename; OBJECT_ATTRIBUTES OA; NTSTATUS status; IO_STATUS_BLOCK IO_status; LARGE_INTEGER LI={0}; HANDLE handle=NULL; RtlInitUnicodeString(&filename, L"//??//D://test.txt"); InitializeObjectAttributes(&OA, &filename, OBJ_CASE_INSENSITIVE|OBJ_KERNEL_HANDLE, NULL, NULL); status = ZwCreateFile( &handle, GENERIC_WRITE, &OA, &IO_status, NULL, FILE_ATTRIBUTE_NORMAL, FILE_SHARE_WRITE, FILE_OPEN_IF, FILE_NON_DIRECTORY_FILE|FILE_RANDOM_ACCESS|FILE_SYNCHRONOUS_IO_NONALERT, NULL, 0 ); if ( !NT_SUCCESS(status) ) { return -1; } ZwWriteFile(handle, NULL, NULL, NULL, &IO_status, buf, sizeof(buf), &LI, NULL); ZwClose(handle); return STATUS_SUCCESS; }