PnpSetObjectPropertyWorker

__int64 __fastcall PnpSetObjectPropertyWorker(
        __int64 a1,
        __int64 a2,
        int a3,
        __int64 a4,
        __int64 a5,
        __int64 a6,
        int a7,
        __int64 a8,
        ULONG SecurityDescriptorLength,
        int a10){
  void *v14; 
  int v15; 
  char *v16; 
  void *v17; 
  void *Handle[2]; 
  Handle[0] = 0i64;
  if( (_WORD)a10 || !a8 && SecurityDescriptorLength )
    return(unsigned int)-1073741811;
  v14 = (void *)(a8 & -(__int64)(SecurityDescriptorLength != 0));
  v15 = PnpValidatePropertyData(v14, SecurityDescriptorLength, a7);
  if( v15 >= 0 )
  {
    v15 = PnpSetMappedPropertyDispatch(a1, a2, a3, a4, a5, a6, a7, (__int64)v14, SecurityDescriptorLength, a10);
    if( v15 >= 0 && a3 >= 7 )
      PnpObjectRaisePropertyChangeEvent(a1, a2, (unsigned int)a3, a4, a5, a6);
    if( v15 == -1073741802 )
    {
      if( a4 )
      {
        v16 = (char *)a4;
        goto LABEL_8;
      }
      v15 = PnpOpenObjectRegKey(a1, a2, a3, 33554439, 0, (__int64)Handle);
      if( v15 >= 0 )
      {
        v16 = (char *)Handle[0];
LABEL_8:
        v15 = PnpSetGenericStoreProperty(a1, v16, (const wchar_t *)a5, a6, a7, v14, SecurityDescriptorLength);
        if( v15 >= 0 )
        {
          v17 = Handle[0];
          if( a4 )
            v17 = (void *)a4;
          PnpObjectRaisePropertyChangeEvent(a1, a2, (unsigned int)a3, (__int64)v17, a5, a6);
        }
      }
    }
  }
  if( Handle[0] )
    ZwClose(Handle[0]);
  return(unsigned int)v15;
}

Referenced by:

PnpSetObjectProperty