Первые две строки этого кода показывают имя файла, исключая имя устройства, например / Документ / темп но я хочу
чтобы показать также имя устройства, например, 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);
Рассматривали ли вы использовать функцию GetFullPathName?
Ссылаться на http://msdn.microsoft.com/en-us/library/aa364963%28VS.85%29.aspx для более точного объяснения, что он делает.
Других решений пока нет …