PipCommitPendingOsExtensionResource

NTSTATUS __stdcall PipCommitPendingOsExtensionResource(
        WCHAR *ResourceId,
        VOID *hPendingOsExtensionDbRoot,
        VOID *hPendingExtensionResource,
        VOID *Context,
        INT64 _A0,
        INT64 a6,
        UINT8 _B0){
  VOID *v10; 
  int CachedContextBaseKey; 
  UINT64 v12; 
  INT64 v13; 
  INT64 *DesiredAccess; 
  VOID **phkResult; 
  INT64 a7; 
  INT64 v18; 
  INT64 a5; 
  VOID *TargetKeyHandle; 
  VOID *hKey; 
  _HANDLE v22[2]; 
  _HANDLE pSecurityDescriptor[2]; 

  a5 = 0i64;
  hKey = 0i64;
  TargetKeyHandle = 0i64;
  *(_QWORD *)v22 = 0i64;
  *(_QWORD *)pSecurityDescriptor = 0i64;
  CachedContextBaseKey = PnpCtxGetCachedContextBaseKey(
                           *(&stru_140CF2E80 + 607),
                           PNPCTX_BASE_KEY_TYPE_CONTROLSET,
                           (VOID **)&a5);
  if( CachedContextBaseKey >= 0 )
  {
    if( !hPendingOsExtensionDbRoot )
    {
      LODWORD(DesiredAccess) = 131103;
      CachedContextBaseKey = PnpCtxRegOpenKey(
                               *(&stru_140CF2E80 + 607),
                               (VOID *)a5,
                               (WCHAR *)L"Control\\PendingDriverOperations\\OsExtensionDatabase",
                               0i64,
                               (UINT64)DesiredAccess,
                               (VOID **)v22);
      if( CachedContextBaseKey < 0 )
        goto LABEL_14;
      hPendingOsExtensionDbRoot = *(VOID **)v22;
    }
    if( !hPendingExtensionResource )
    {
      LODWORD(DesiredAccess) = 131097;
      CachedContextBaseKey = PnpCtxRegOpenKey(
                               *(&stru_140CF2E80 + 607),
                               hPendingOsExtensionDbRoot,
                               ResourceId,
                               0i64,
                               (UINT64)DesiredAccess,
                               (VOID **)pSecurityDescriptor);
      if( CachedContextBaseKey < 0 )
        goto LABEL_14;
      hPendingExtensionResource = *(VOID **)pSecurityDescriptor;
    }
    LODWORD(DesiredAccess) = 131078;
    CachedContextBaseKey = PnpCtxRegCreateKey(
                             *(&stru_140CF2E80 + 607),
                             (VOID *)a5,
                             (WCHAR *)L"Control\\OsExtensionDatabase",
                             0i64,
                             (UINT64)DesiredAccess,
                             0i64,
                             &hKey,
                             0i64);
    if( CachedContextBaseKey >= 0 )
    {
      LODWORD(DesiredAccess) = 131078;
      CachedContextBaseKey = PnpCtxRegCreateKey(
                               *(&stru_140CF2E80 + 607),
                               hKey,
                               ResourceId,
                               0i64,
                               (UINT64)DesiredAccess,
                               0i64,
                               &TargetKeyHandle,
                               0i64);
      if( CachedContextBaseKey >= 0 )
      {
        CachedContextBaseKey = PiDevCfgCopyDeviceKeys(hPendingExtensionResource, TargetKeyHandle, v12, 0i64);
        if( CachedContextBaseKey >= 0 )
        {
          CachedContextBaseKey = PnpCtxRegDeleteTree(*(&stru_140CF2E80 + 607), hPendingOsExtensionDbRoot, ResourceId);
          if( CachedContextBaseKey >= 0 )
          {
            LODWORD(a5) = 0;
            DesiredAccess = &a5;
            if( PnpCtxRegEnumKey(v10, (UINT64)hPendingOsExtensionDbRoot, 0i64, 0i64) == -2147483622 )
              PnpCtxRegDeleteKey(*(&stru_140CF2E80 + 607), hPendingOsExtensionDbRoot, 0i64);
          }
        }
      }
    }
  }
LABEL_14:
  if( TargetKeyHandle )
    PnpCtxRegCloseKey((HPNPCTX *)v10, TargetKeyHandle, v12, v13, (INT64)DesiredAccess, (INT64)phkResult, a7, v18);
  if( hKey )
    PnpCtxRegCloseKey((HPNPCTX *)v10, hKey, v12, v13, (INT64)DesiredAccess, (INT64)phkResult, a7, v18);
  if( *(_QWORD *)v22 )
    PnpCtxRegCloseKey((HPNPCTX *)v10, *(VOID **)v22, v12, v13, (INT64)DesiredAccess, (INT64)phkResult, a7, v18);
  if( *(_QWORD *)pSecurityDescriptor )
    PnpCtxRegCloseKey(
      (HPNPCTX *)v10,
      *(VOID **)pSecurityDescriptor,
      v12,
      v13,
      (INT64)DesiredAccess,
      (INT64)phkResult,
      a7,
      v18);
  return CachedContextBaseKey;
}

Referenced by:

No references.