阅读:1397回复:3
请教我的打开磁盘的代码错在哪里(含源代码)
各位老大,我想在我的驱动中直接读写硬盘扇区,但发现使用ZwCreateFile时出错,返回值STATUS_OBJECT_NAME_INVALID,请教各位大虾是何原因导致,如何修改。
具体代码如下: NTSTATUS status; OBJECT_ATTRIBUTES oa; UNICODE_STRING usname; IO_STATUS_BLOCK iostatus; WCHAR wcFileName[260]; HANDLE hCacheFile = NULL; memset(wcFileName,0,sizeof(wcFileName)); swprintf(wcFileName,L"\\\\.\\PhysicalDrive0"); RtlInitUnicodeString(&usname, wcFileName); InitializeObjectAttributes(&oa, &usname, OBJ_CASE_INSENSITIVE|OBJ_KERNEL_HANDLE , NULL, NULL); status = ZwCreateFile(&hCacheFile, GENERIC_ALL, &oa, &iostatus, NULL, FILE_ATTRIBUTE_NORMAL, FILE_SHARE_WRITE|FILE_SHARE_READ, FILE_OPEN, FILE_SYNCHRONOUS_IO_NONALERT|FILE_NO_INTERMEDIATE_BUFFERING, NULL, 0); if(!NT_SUCCESS(status)) { DbgPrint("\n ZwCreateFile=%x",status); return; } ZwClose(hCacheFile); |
|
沙发#
发布于:2008-11-11 13:20
使用\Device\Harddisk0\DR0
|
|
|
板凳#
发布于:2008-11-11 17:10
\Device\Harddisk0\DR0 or \??\PhysicalDrive0
请不要用应用层的打开方式. |
|
|
地板#
发布于:2008-11-17 14:30
用了楼上的方法,问题已经解决。谢谢二位大牛。
|
|