PnprIsMemoryDevice

char __fastcall PnprIsMemoryDevice(_DEVICE_OBJECT *PhysicalDeviceObject, char a2){
  WCHAR *v2; 
  char v3; 
  NTSTATUS DeviceInterfaces; 
  UINT64 Size; 
  WCHAR *SymbolicLinkList; 
  char Data; 
  UINT64 Type; 
  UINT64 RequiredSize; 

  LODWORD(RequiredSize) = 0;
  v2 = 0i64;
  SymbolicLinkList = 0i64;
  v3 = 0;
  Data = 0;
  LODWORD(Type) = 0;
  if( !a2 )
  {
    LODWORD(Size) = 1;
    if( IoGetDevicePropertyData(
           PhysicalDeviceObject,
           (_DEVPROPKEY *)&DEVPKEY_Spare_Memory,
           0i64,
           0i64,
           Size,
           &Data,
           &RequiredSize,
           &Type) < 0
      || (_DWORD)Type != 17
      || !Data )
    {
      return v3;
    }
    goto LABEL_8;
  }
  DeviceInterfaces = IoGetDeviceInterfaces(&GUID_DEVICE_MEMORY, PhysicalDeviceObject, 0i64, &SymbolicLinkList);
  v2 = SymbolicLinkList;
  if( DeviceInterfaces >= 0 && *SymbolicLinkList )
LABEL_8:
    v3 = 1;
  if( v2 )
    ExFreePoolWithTag(v2, 0);
  return v3;
}

Referenced by:

PnprAddDeviceResources