PnpSetObjectPropertyWorker

__int64 __fastcall PnpSetObjectPropertyWorker(
        INT64 a1,
        INT64 a2,
        unsigned int a3,
        INT64 a4,
        INT64 a5,
        INT64 a6,
        INT64 a7,
        __int64 a8,
        INT64 a9,
        INT64 a10){
  VOID *v14; 
  int v15; 
  VOID *v16; 
  INT64 v17; 
  INT64 v19; 
  INT64 v20; 
  INT64 v21; 
  INT64 v22; 
  INT64 v23; 
  VOID *Handle; 

  Handle = 0i64;
  if( (_WORD)a10 || !a8 && (_DWORD)a9 )
    return(unsigned int)-1073741811;
  v14 = (VOID *)(a8 & -(__int64)((_DWORD)a9 != 0));
  v15 = PnpValidatePropertyData(v14, (unsigned int)a9, a7);
  if( v15 >= 0 )
  {
    LODWORD(v23) = a10;
    LODWORD(v22) = a9;
    LODWORD(v20) = a7;
    v15 = PnpSetMappedPropertyDispatch(
            (HPNPCTX *)a1,
            (WCHAR *)a2,
            a3,
            (VOID *)a4,
            (WCHAR *)a5,
            (_DEVPROPKEY *)a6,
            v20,
            (UINT8 *)v14,
            v22,
            v23);
    if( v15 >= 0 && (int)a3 >= 7 )
      PnpObjectRaisePropertyChangeEvent(a1, a2, a3, a4, a5, a6);
    if( v15 == -1073741802 )
    {
      if( a4 )
      {
        v16 = (VOID *)a4;
        goto LABEL_8;
      }
      v15 = PnpOpenObjectRegKey(a1, a2, a3, 33554439, 0, (__int64)&Handle);
      if( v15 >= 0 )
      {
        v16 = Handle;
LABEL_8:
        LODWORD(v21) = a9;
        LODWORD(v19) = a7;
        v15 = PnpSetGenericStoreProperty((HPNPCTX *)a1, v16, (WCHAR *)a5, (_DEVPROPKEY *)a6, v19, (UINT8 *)v14, v21);
        if( v15 >= 0 )
        {
          v17 = (INT64)Handle;
          if( a4 )
            v17 = a4;
          PnpObjectRaisePropertyChangeEvent(a1, a2, a3, v17, a5, a6);
        }
      }
    }
  }
  if( Handle )
    ZwClose((_HANDLE)Handle);
  return(unsigned int)v15;
}

Referenced by:

PnpSetObjectProperty