PiDmObjectUpdateCachedCmProperty

VOID __stdcall PiDmObjectUpdateCachedCmProperty(
        _CM_OBJECT_TYPE CmObjectType,
        WCHAR *CmObjectName,
        _CM_REG_PROP CmRegProp,
        UINT64 CmRegPropType,
        UINT8 *PropertyBuffer,
        UINT64 PropertySize,
        UINT8 a7,
        UINT64 a8){
  UINT64 v9; 
  INT64 v10; 
  UINT64 v11; 
  INT64 v12; 
  INT64 v13; 
  UINT64 v14; 
  _UNICODE_STRING DestinationString; 
  _GUID Guid; 

  if( CmObjectType == CM_OBJECT_TYPE_DEVICE )
  {
    Guid = 0i64;
    DestinationString = 0i64;
    if( (_DWORD)CmRegPropType == 9 )
    {
      if( a7 )
      {
        if( (_DWORD)PropertyBuffer == 1 && a7 >= 2u )
        {
          RtlInitUnicodeString(&DestinationString, (PCWSTR)PropertySize);
          if( RtlGUIDFromString(&DestinationString, &Guid) >= 0 )
          {
            LODWORD(v14) = 16;
            v9 = (unsigned int)CmMapCmObjectTypeToPnpObjectType(CM_OBJECT_TYPE_DEVICE);
            LODWORD(v13) = 13;
            PiDmObjectUpdateCachedObjectProperty(
              v9,
              CmObjectName,
              v10,
              0i64,
              (INT64)&DEVPKEY_Device_ClassGuid,
              v13,
              (WCHAR *)&Guid,
              v14);
          }
        }
      }
      else
      {
        LODWORD(v14) = 0;
        v11 = (unsigned int)CmMapCmObjectTypeToPnpObjectType(CM_OBJECT_TYPE_DEVICE);
        LODWORD(v13) = 0;
        PiDmObjectUpdateCachedObjectProperty(
          v11,
          CmObjectName,
          v12,
          0i64,
          (INT64)&DEVPKEY_Device_ClassGuid,
          v13,
          0i64,
          v14);
      }
    }
  }
}

Referenced by:

PiPnpRtlCmActionCallback