阅读:1653回复:3
FileHandle的奇怪问题
我得到了一个文件的FileHandle,想要获取文件的路径名。用了下面的代码:
ObReferenceObjectByHandle( FileHandle, 0, NULL, KernelMode, &pFileObj, NULL ); if(pFileObj==NULL) { DbgPrint("get fileobject error\n"); return; } RtlUnicodeStringToAnsiString(&ObjectName,pFileObj->ObjectName,TRUE); 但是这个RtlUnicodeStringToAnsiString(&ObjectName,pFileObj->ObjectName,TRUE);的调用会导致一个bsod,不知道为什么,貌似是pFileObj->ObjectName不对,指向的不是路径. 然后我又用下面的代码试了一下,ok: ObReferenceObjectByHandle( FileHandle, 0, NULL, KernelMode, &pFileObj, NULL ); obQueryNameString(FileObject,pFullFilePath,MAXFILEPATHLEN,&ret); RtlUnicodeStringToAnsiString(&ObjectName,pFullPath,TRUE); 实在很纳闷为什么第一种方法不行,哪位大侠给解释下,为什么第一种方法不对! |
|
沙发#
发布于:2008-07-27 22:52
自己up
|
|
板凳#
发布于:2008-07-28 23:47
|
|
地板#
发布于:2009-01-08 10:39
记得是这样的:
FILE_OBJECT的ObjectName域,只有在IRP_MJ_Create请求中才可用,在别的地方使用,都是不对地。 |
|
|