我用驱动创建了一个文件, 想在文件中写入数据, 代码如下:
// 写文件函数
NTSTATUS Writer()
{
::DbgPrint("写文件...\n");
NTSTATUS status=STATUS_SUCCESS;
// 创建或打开文件
HANDLE hFile=NULL;
OBJECT_ATTRIBUTES objAttrib={0};
IO_STATUS_BLOCK ioStu={0};
UNICODE_STRING fileName = RTL_CONSTANT_STRING(L"\\??\\C:\\test.txt");
InitializeObjectAttributes(
&objAttrib,
&fileName,
OBJ_CASE_INSENSITIVE|OBJ_KERNEL_HANDLE,
NULL,
NULL);
// 打开
status=::ZwCreateFile(
&hFile,
GENERIC_ALL,
&objAttrib,
&ioStu,
NULL,
FILE_ATTRIBUTE_NORMAL,
0,
FILE_OPEN_IF,
FILE_NON_DIRECTORY_FILE|FILE_SYNCHRONOUS_IO_NONALERT,
NULL,
0);
if(!NT_SUCCESS(status))
{
// 打开文件失败, 返回错误码
::DbgPrint("打开文件失败:x0%x\n", status);
return status;
}
::DbgPrint("打开成功\n");
LARGE_INTEGER byteOffset={0};
//byteOffset.
// 写文件 内容为文件名
status=::ZwWriteFile(
&hFile,
NULL,
NULL,
NULL,
&ioStu,
(PVOID)fileName.Buffer,
50,
&byteOffset,
NULL);
if(NT_SUCCESS(status))
{
::DbgPrint("写入文件成功, 共写入%d字节\n", ioStu.Information);
}
else
{
::DbgPrint("写入文件失败:x0%x\n", status);
}
// 关闭文件
::ZwClose(hFile);
::DbgPrint("关闭文件\n");
// 返回执行状态
return status;
}
复制代码
现在文件创建成功, 可是写入时出错 status值为0xc0000008 各位大哥我什么地方写错了?