CmGetInterfaceClassMappedPropertyFromComposite

NTSTATUS __stdcall CmGetInterfaceClassMappedPropertyFromComposite(
        HPNPCTX *hPnpCtx,
        WCHAR *ClassGuid,
        VOID *ObjectBaseKey,
        _DEVPROPKEY *PropertyKey,
        UINT64 *PropertyType,
        UINT8 *PropertyBuffer,
        UINT64 BufferSize,
        UINT64 *PropertySize){
  NTSTATUS v8; 
  INT64 v9; 
  unsigned int pid; 
  __int64 v11; 
  NTSTATUS ObjectProperty; 

  v8 = 0;
  v9 = (INT64)PropertyBuffer;
  *(_DWORD *)PropertyType = 0;
  *(_DWORD *)PropertySize = 0;
  if( PropertyBuffer )
    v9 = -(__int64)((_DWORD)BufferSize != 0) & (unsigned __int64)PropertyBuffer;
  pid = PropertyKey->pid;
  if( pid < 2 )
    return -1073741264;
  if( pid == 10 )
  {
    v11 = *(_QWORD *)&PropertyKey->fmtid.Data1 - *(_QWORD *)&DEVPKEY_NAME.fmtid.Data1;
    if( *(_QWORD *)&PropertyKey->fmtid.Data1 == *(_QWORD *)&DEVPKEY_NAME.fmtid.Data1 )
      v11 = *(_QWORD *)PropertyKey->fmtid.Data4 - *(_QWORD *)DEVPKEY_NAME.fmtid.Data4;
    if( !v11 )
    {
      ObjectProperty = PnpGetObjectProperty(
                         (ULONG)hPnpCtx,
                         (INT64)ClassGuid,
                         4i64,
                         (INT64)ObjectBaseKey,
                         0i64,
                         (INT64)&DEVPKEY_DeviceInterfaceClass_Name,
                         (INT64)PropertyType,
                         v9);
      v8 = ObjectProperty;
      if( !ObjectProperty || ObjectProperty == -1073741789 )
        *(_DWORD *)PropertySize = 0;
    }
  }
  return v8;
}

Referenced by:

CmGetInterfaceClassMappedProperty
CmGetInterfaceClassMappedPropertyKeys