PnpGetObjectPropertyWorker

__int64 __fastcall PnpGetObjectPropertyWorker(
        __int64 a1,
        __int64 a2,
        unsigned int a3,
        __int64 a4,
        const wchar_t *a5,
        __int64 a6,
        int *a7,
        unsigned __int64 a8,
        int a9,
        ULONG *a10,
        int a11){
  char *v12; 
  void *v14; 
  int v15; 
  int MappedPropertyDispatch; 
  void *Handle[2]; 
  v12 = (char *)a4;
  Handle[0] = 0i64;
  if( (_WORD)a11 )
    return(unsigned int)-1073741811;
  v14 = (void *)a8;
  if( a8 )
  {
    v15 = a9;
    v14 = (void *)(-(__int64)(a9 != 0) & a8);
  }
  else
  {
    v15 = 0;
  }
  *a7 = 0;
  *a10 = 0;
  MappedPropertyDispatch = PnpGetMappedPropertyDispatch(
                             a1,
                             a2,
                             a3,
                             a4,
                             (__int64)a5,
                             a6,
                             (__int64)a7,
                             (__int64)v14,
                             v15,
                             (__int64)a10,
                             a11);
  if( MappedPropertyDispatch == -1073741802 )
  {
    if( !v12 )
    {
      MappedPropertyDispatch = PnpOpenObjectRegKey(a1, a2, a3, 33554433, 0, (__int64)Handle);
      if( MappedPropertyDispatch < 0 )
        goto LABEL_5;
      v12 = (char *)Handle[0];
    }
    MappedPropertyDispatch = PnpGetGenericStoreProperty(a1, v12, a5, a6, a7, (__int64)v14, v15, a10);
    if( MappedPropertyDispatch >= 0 )
      MappedPropertyDispatch = PnpValidatePropertyData(v14, *a10, *a7);
  }
LABEL_5:
  if( Handle[0] )
    ZwClose(Handle[0]);
  return(unsigned int)MappedPropertyDispatch;
}

Referenced by:

PnpGetObjectProperty