PiDmObjectUpdateCachedCmProperty

VOID __fastcall PiDmObjectUpdateCachedCmProperty(
        INT64 a1,
        WCHAR *a2,
        WCHAR a3,
        INT64 a4,
        INT64 a5,
        const WCHAR *SourceString,
        UINT64 a7){
  UINT64 v8; 
  INT64 v9; 
  UINT64 v10; 
  INT64 v11; 
  INT64 v12; 
  SIZE_T v13; 
  struct _UNICODE_STRING DestinationString; 
  GUID Guid; 
  if( (_DWORD)a1 == 1 )
  {
    Guid = 0i64;
    DestinationString = 0i64;
    if( (_DWORD)a4 == 9 )
    {
      if( (_DWORD)a7 )
      {
        if( (_DWORD)a5 == 1 && (unsigned int)a7 >= 2 )
        {
          RtlInitUnicodeString(&DestinationString, SourceString, a3);
          if( RtlGUIDFromString(&DestinationString, &Guid) >= 0 )
          {
            LODWORD(v13) = 16;
            v8 = (unsigned int)CmMapCmObjectTypeToPnpObjectType(1);
            LODWORD(v12) = 13;
            PiDmObjectUpdateCachedObjectProperty(
              v8,
              a2,
              v9,
              0i64,
              (INT64)&DEVPKEY_Device_ClassGuid,
              v12,
              (WCHAR *)&Guid,
              v13);
          }
        }
      }
      else
      {
        LODWORD(v13) = 0;
        v10 = (unsigned int)CmMapCmObjectTypeToPnpObjectType(1);
        LODWORD(v12) = 0;
        PiDmObjectUpdateCachedObjectProperty(v10, a2, v11, 0i64, (INT64)&DEVPKEY_Device_ClassGuid, v12, 0i64, v13);
      }
    }
  }
}

Referenced by:

PiPnpRtlCmActionCallback