-1

此代码的前两行显示不包括设备名称的文件名,如/Document/temp,但我还想显示设备名称,如 L"\Device\Harddisk0\DR0\Document\temp。我正在使用此代码调用 ObQueryNameString 例程,但它显示为NULL。

请告诉我代码有什么问题。我认为内存分配不正确。

PFILE_OBJECT pFileObject = IoGetCurrentIrpStackLocation(Irp)->FileObject;
if (pFileObject)
{
        DbgPrint("FileName : %wZ\n", pFileObject->FileName);
}

NTSTATUS status = STATUS_UNSUCCESSFUL;

OBJECT_NAME_INFORMATION objName = {0};
ULONG ReturnLength = 1024;  

ObQueryNameString(DeviceObject, objName, sizeof(objName), ReturnLength);

DbgPrint("FileName : %wZ\n", &objName);
4

1 回答 1

-2

您是否考虑过使用 GetFullPathName 函数?有关更准确的解释,请参阅http://msdn.microsoft.com/en-us/library/aa364963%28VS.85%29.aspx 。

于 2013-03-19T08:17:21.110 回答