阅读:1767回复:4
读文件的问题????
我在我的驱动程序中打开文件:
InitializeObjectAttributes( &object_attributes, &FileName, OBJ_CASE_INSENSITIVE, NULL, NULL ); status = ZwCreateFile( &file_handle, GENERIC_READ | GENERIC_WRITE, &object_attributes, &IoStatus, NULL, FILE_ATTRIBUTE_NORMAL, 0, FILE_OPEN, FILE_NON_DIRECTORY_FILE | FILE_RANDOM_ACCESS, NULL, 0 ); if (!NT_SUCCESS(status)) { return status; } status=ZwReadFile( file_handle, NULL, NULL, NULL, &IoStatus, this_chain->DiskInfro, length, &start_offset, NULL ); ZwCreateFile的返回值为0,可是我用debugprint看到file_handle的值为0x01,zwreadfile()的返回值为0xc0000008,我查了以下,表示 STATUS_INVALID_HANDLE。不只那位大侠能告诉答案,感激不仅啊! 顺便问一句:我在驱动程序中创建了个线程,用什么函数请求内存比较合理一些。 [编辑 - 4/23/02 作者: du_lin] |
|
最新喜欢:cyliu |
沙发#
发布于:2002-04-23 19:33
你的文件名称是什么啊?
|
|
板凳#
发布于:2002-04-23 20:18
文件名称是\\\\??\\\\c:\\\\disk\\\\file.txt
|
|
地板#
发布于:2002-04-25 17:03
这个问题我也苦恼很久了.
我知道用L\"systemRoot\\\\system32\\\\..\"能操作文件 但是L\"\\\\??\\\\...\" 就不行. 返回的status = c000003a(STATUS_OBJECT_PATH_NOT_FOUND). 我想是\\\\??在wdm中要别的字符串代替. 用什么呢? 不知道. 如果老兄知道了,也告诉我一声! Email to:VICO_N@21CN.COM :( |
|
|
地下室#
发布于:2002-04-25 17:17
文件名必须是UNICODE
sprintf(&ucaPathBuffer[0],\"\\\\??\\\\c:\\\\s.txt\"); RtlInitAnsiString(&anstrBuffer,&ucaPathBuffer[0]); RtlAnsiStringToUnicodeString(&usInterFaceFileName,&anstrBuffer,TRUE); InitializeObjectAttributes (&tObjAttributes, &usInterFaceFileName, OBJ_KERNEL_HANDLE|OBJ_OPENIF|OBJ_CASE_INSENSITIVE, NULL, NULL ); stStatus= ZwCreateFile( &hFileNameHandle, SYNCHRONIZE|FILE_READ_DATA, &tObjAttributes, &tIoStatusBlock, 0, FILE_ATTRIBUTE_NORMAL, FILE_SHARE_WRITE|FILE_SHARE_READ, FILE_OPEN, FILE_SYNCHRONOUS_IO_NONALERT, NULL, 0 ); |
|