- NTSTATUS ntStatus;
- PDEVICE_OBJECT pTargetDevObj = NULL;
- POBJECT_NAME_INFORMATION pTargetName;
- WCHAR rgNameBuffer[1024 + 4] = {0, };
- DWORD nReturnBytes;
- pTargetDevObj = (PDEVICE_OBJECT)0xXXXXXXXX; // The address of the target _DEVICE_OBJECT
- pTargetName = (POBJECT_NAME_INFORMATION)rgNameBuffer;
- ntStatus = ObQueryNameString( pTargetDevObj,
- pTargetName,
- sizeof(rgNameBuffer),
- &nReturnBytes );
- if (!NT_SUCCESS(ntStatus))
- {
- // handle error
- // if STATUS_INFO_LENGTH_MISMATCH returns :
- //
- // The buffer pointed to by ObjectNameInfo is too small
- // to hold the requested object name information.
- // ReturnLength points to the required buffer size.
- // In this case, no object name information is returned.
- // This is an error code.
- }
- // DeviceName : pTargetName.Name.Buffer (It's an UNICODE_STRING)