内核文件中打开文件后,我我自己制定文件偏移地址,从而实现比较快读的读取。
使用了如下代码
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_STRINGRtlInitUnicodeString( &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查一下返回的错误代码 看看具体是代表什么错误