CmQueryDevicePanelPldProperty

NTSTATUS __fastcall CmQueryDevicePanelPldProperty(
        HPNPCTX *hPnpCtx,
        WCHAR *ObjectName,
        PNP_OBJECT_TYPE ObjectType,
        VOID *ObjectBaseKey,
        _DEVPROPKEY *PropertyKey,
        INT64 a6,
        INT64 a7,
        INT64 a8,
        INT64 a9){
  ULONG v9; 
  PVOID v13; 
  int ObjectProperty; 
  unsigned int v16; 
  VOID **PoolWithTag; 
  UINT64 NumberOfBytes; 

  v9 = (unsigned int)hPnpCtx;
  *(_QWORD *)a8 = 0i64;
  *(_DWORD *)a9 = 0;
  v13 = *(PVOID *)a6;
  NumberOfBytes = 0i64;
  while( 1 )
  {
    ObjectProperty = PnpGetObjectProperty(
                       v9,
                       (INT64)ObjectName,
                       (unsigned int)ObjectType,
                       (INT64)ObjectBaseKey,
                       0i64,
                       (INT64)PropertyKey,
                       (INT64)&NumberOfBytes + 4,
                       (INT64)v13);
    if( ObjectProperty != -1073741789 )
      break;
    v16 = NumberOfBytes;
    if( (unsigned int)NumberOfBytes <= *(_DWORD *)a7 )
      return -1073741823;
    if( *(_QWORD *)a6 )
    {
      ExFreePoolWithTag(*(PVOID *)a6, 0);
      v16 = NumberOfBytes;
    }
    *(_DWORD *)a7 = v16;
    PoolWithTag = ExAllocatePoolWithTag(1ui64, v16, 1380994640i64);
    *(_QWORD *)a6 = PoolWithTag;
    v13 = PoolWithTag;
    if( !PoolWithTag )
    {
      ObjectProperty = -1073741801;
      break;
    }
  }
  if( ObjectProperty < 0 )
    return ObjectProperty;
  return -1073741823;
}

Referenced by:

CmUpdateDevicePanel
CmUpdateDevicePanelInterface