ZWReadFile问题。 请指教

DontKissBossAss 2011-12-28 04:41:39
内核文件中打开文件后,我我自己制定文件偏移地址,从而实现比较快读的读取。
使用了如下代码
1:打开文件ZwCreateFile.打开文件成功。
2: ZwReadFIle时,由于我指定了LARGE_INTEGER.

结果再执行read时,返回了C0000011错误,我感觉应该是我这个LARGE_INTEGER指定问题
我是如下初始化 LargInterge结构的。 请指教如何实现我的需求。

	 LARGE_INTEGER lrOffset       = {0};


ZwCreateFile(lpFileHandle,  
FILE_READ_DATA,
&oaName,
&iosBlock,
NULL,
FILE_ATTRIBUTE_NORMAL,
FILE_SHARE_READ,
FILE_OPEN,
FILE_NON_DIRECTORY_FILE | FILE_SYNCHRONOUS_IO_NONALERT,
NULL,
0);


ntStatus = ZwReadFile(hFile,
NULL,
NULL,
NULL,
&iosBlock,
pBuffer,
ulBufferSize,
ByteOffset,
NULL);
...全文
126 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
DontKissBossAss 2011-12-30
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 woshi_ziyu 的回复:]

LZ查一下返回的错误代码 看看具体是代表什么错误
[/Quote]

错误时文件达到结尾。 呵呵。 代码没问题。是我找错位置啦。谢谢。
woshi_ziyu 2011-12-28
  • 打赏
  • 举报
回复
LZ查一下返回的错误代码 看看具体是代表什么错误
woshi_ziyu 2011-12-28
  • 打赏
  • 举报
回复

OBJECT_ATTRIBUTES objectAttributes;
IO_STATUS_BLOCK iostatus;
UNICODE_STRING logFileUnicodeString;
HANDLE hfile;

//初始化UNICODE_STRING
RtlInitUnicodeString( &logFileUnicodeString, L"\\??\\c:\\1.log" );

//初始化OBJECT_ATTRIBUTES结构体
InitializeObjectAttributes( &objectAttributes,
&logFileUnicodeString, OBJ_CASE_INSENSITIVE,
NULL, NULL );

//创建文件
NTSTATUS ntStatus = ZwCreateFile( &hfile, GENERIC_WRITE,
&objectAttributes,
&iostatus,
NULL,
FILE_ATTRIBUTE_NORMAL,
FILE_SHARE_READ,
FILE_OPEN_IF,
FILE_SYNCHRONOUS_IO_NONALERT,
NULL,
0 );

if ( NT_SUCCESS( ntStatus ) )
{
KdPrint( ( "Create File Success!\n" ) );
}
else
{
KdPrint( ( "CreateFile Fail!\n" ) );
}

ZwClose( hfile );


驱动程序中文件操作函数之ZwCreateFile

ZwReadFile routine

21,595

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧