1. NTSTATUS                    ntStatus;  
  2. PDEVICE_OBJECT              pTargetDevObj = NULL;  
  3. POBJECT_NAME_INFORMATION    pTargetName;  
  4. WCHAR                       rgNameBuffer[1024 + 4] = {0, };   
  5. DWORD                       nReturnBytes;  
  6.   
  7.   
  8. pTargetDevObj = (PDEVICE_OBJECT)0xXXXXXXXX; // The address of the target _DEVICE_OBJECT   
  9. pTargetName   = (POBJECT_NAME_INFORMATION)rgNameBuffer;  
  10.   
  11. ntStatus = ObQueryNameString(   pTargetDevObj,   
  12.                                 pTargetName,   
  13.                                 sizeof(rgNameBuffer),   
  14.                                 &nReturnBytes );      
  15. if (!NT_SUCCESS(ntStatus))  
  16. {  
  17.     // handle error  
  18.   
  19.     // if STATUS_INFO_LENGTH_MISMATCH returns :  
  20.     //  
  21.     // The buffer pointed to by ObjectNameInfo is too small   
  22.     // to hold the requested object name information.   
  23.     // ReturnLength points to the required buffer size.   
  24.     // In this case, no object name information is returned.   
  25.     // This is an error code.   
  26. }  
  27.   
  28. // DeviceName : pTargetName.Name.Buffer (It's an UNICODE_STRING)  
Posted by 울랄라베베
:

카테고리

분류 전체보기 (20)
Kernel programming (13)
User porgramming (2)
Etc... (2)