专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > 驱动开发

ZWReadFile有关问题。

发布时间:2010-06-14 17:45:22 文章来源:www.iduyao.cn 采编人员:星星草
ZWReadFile问题。 请指教
内核文件中打开文件后,我我自己制定文件偏移地址,从而实现比较快读的读取。
使用了如下代码
1:打开文件ZwCreateFile.打开文件成功。
2: ZwReadFIle时,由于我指定了LARGE_INTEGER. 

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

C/C++ code
     LARGE_INTEGER lrOffset       = {0};


C/C++ code
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);  

C/C++ code

ntStatus = ZwReadFile(hFile,
                                                    NULL,
                                                    NULL,
                                                    NULL,
                                                    &iosBlock,
                                                    pBuffer,
                                                    ulBufferSize,
                                                    ByteOffset,
                                                    NULL);


------解决方案--------------------
C/C++ code

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 );

------解决方案--------------------
LZ查一下返回的错误代码 看看具体是代表什么错误
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: