VirtualBox

Changeset 52940 in vbox


Ignore:
Timestamp:
Oct 3, 2014 6:40:54 PM (10 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
96380
Message:

Eliminating some more kernel32.dll dependencies, marking APIs we like to use early as OK.

Location:
trunk
Files:
15 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/iprt/nt/nt.h

    r52876 r52940  
    11051105typedef PTEB_COMMON PTEB;
    11061106
    1107 #define NtCurrentPeb()  (((PTEB)NtCurrentTeb())->ProcessEnvironmentBlock)
     1107#define RTNtCurrentTeb()        ((PTEB)NtCurrentTeb())
     1108#define RTNtCurrentPeb()        (RTNtCurrentTeb()->ProcessEnvironmentBlock)
     1109#define NtCurrentPeb()          RTNtCurrentPeb()
     1110#define RTNtCurrentThreadId()   ((uint32_t)(uintptr_t)RTNtCurrentTeb()->ClientId.UniqueThread)
    11081111
    11091112/** @} */
     
    19231926NTSYSAPI VOID NTAPI     LdrInitializeThunk(PVOID, PVOID, PVOID);
    19241927NTSYSAPI NTSTATUS NTAPI RtlExpandEnvironmentStrings_U(PVOID, PUNICODE_STRING, PUNICODE_STRING, PULONG);
     1928NTSYSAPI VOID NTAPI     RtlExitProcess(NTSTATUS rcExitCode);
     1929NTSYSAPI VOID NTAPI     RtlExitThread(NTSTATUS rcExitCode);
    19251930NTSYSAPI NTSTATUS NTAPI RtlDosApplyFileIsolationRedirection_Ustr(IN ULONG fFlags,
    19261931                                                                 IN PCUNICODE_STRING pOrgName,
     
    19321937                                                                 IN PSIZE_T pcbFilename OPTIONAL,
    19331938                                                                 IN PSIZE_T pcbNeeded OPTIONAL);
     1939# ifdef IPRT_NT_USE_WINTERNL
     1940NTSYSAPI PVOID NTAPI    RtlAllocateHeap(HANDLE hHeap, ULONG fFlags, SIZE_T cb);
     1941NTSYSAPI PVOID NTAPI    RtlReAllocateHeap(HANDLE hHeap, ULONG fFlags, PVOID pvOld, SIZE_T cbNew);
     1942NTSYSAPI BOOLEAN NTAPI  RtlFreeHeap(HANDLE hHeap, ULONG fFlags, PVOID pvMem);
     1943# endif /* IPRT_NT_USE_WINTERNL */
     1944NTSYSAPI SIZE_T NTAPI   RtlCompactHeap(HANDLE hHeap, ULONG fFlags);
    19341945NTSYSAPI VOID NTAPI     RtlFreeUnicodeString(PUNICODE_STRING);
     1946NTSYSAPI SIZE_T NTAPI   RtlSizeHeap(HANDLE hHeap, ULONG fFlags, PVOID pvMem);
     1947NTSYSAPI NTSTATUS NTAPI RtlGetLastNtStatus(VOID);
     1948NTSYSAPI ULONG NTAPI    RtlGetLastWin32Error(VOID);
     1949NTSYSAPI VOID NTAPI     RtlSetLastWin32Error(ULONG uError);
     1950NTSYSAPI VOID NTAPI     RtlSetLastWin32ErrorAndNtStatusFromNtStatus(NTSTATUS rcNt);
     1951NTSYSAPI VOID NTAPI     RtlRestoreLastWin32Error(ULONG uError);
    19351952
    19361953RT_C_DECLS_END
  • trunk/src/VBox/HostDrivers/Support/Makefile.kmk

    r52600 r52940  
    399399#
    400400VBoxSupLib_TEMPLATE = $(if-expr "$(KBUILD_TARGET)" == "win" && defined(VBOX_WITH_HARDENING),VBOXR3HARDENEDLIB,VBOXR3)
     401VBoxSupLib_SDKS.win = VBOX_NTDLL
    401402VBoxSupLib_LDFLAGS.win.amd64 = -Entry:DllMainEntrypoint
    402403VBoxSupLib_LDFLAGS.win.x86   = -Entry:DllMainEntrypoint
  • trunk/src/VBox/HostDrivers/Support/SUPR3HardenedMain.cpp

    r52680 r52940  
    228228    for (;;)
    229229#ifdef RT_OS_WINDOWS
    230         ExitProcess(rcExit);
     230        RtlExitProcess(rcExit);
    231231#else
    232232        _Exit(rcExit);
     
    14781478        supR3HardenedFatalMsg("supR3HardenedMainInitRuntime", kSupInitOp_IPRT, VERR_MODULE_NOT_FOUND,
    14791479                              "LoadLibrary \"%s\" failed (rc=%d)",
    1480                               szPath, GetLastError());
     1480                              szPath, RtlGetLastWin32Error());
    14811481    PFNRTR3INITEX pfnRTInitEx = (PFNRTR3INITEX)GetProcAddress(hMod, SUP_HARDENED_SYM("RTR3InitEx"));
    14821482    if (!pfnRTInitEx)
    14831483        supR3HardenedFatalMsg("supR3HardenedMainInitRuntime", kSupInitOp_IPRT, VERR_SYMBOL_NOT_FOUND,
    14841484                              "Entrypoint \"RTR3InitEx\" not found in \"%s\" (rc=%d)",
    1485                               szPath, GetLastError());
     1485                              szPath, RtlGetLastWin32Error());
    14861486
    14871487    PFNSUPR3PREINIT pfnSUPPreInit = (PFNSUPR3PREINIT)GetProcAddress(hMod, SUP_HARDENED_SYM("supR3PreInit"));
     
    14891489        supR3HardenedFatalMsg("supR3HardenedMainInitRuntime", kSupInitOp_IPRT, VERR_SYMBOL_NOT_FOUND,
    14901490                              "Entrypoint \"supR3PreInit\" not found in \"%s\" (rc=%d)",
    1491                               szPath, GetLastError());
     1491                              szPath, RtlGetLastWin32Error());
    14921492
    14931493#else
     
    16201620    if (!hMod)
    16211621        supR3HardenedFatal("supR3HardenedMainGetTrustedMain: LoadLibrary \"%s\" failed, rc=%d\n",
    1622                             szPath, GetLastError());
     1622                            szPath, RtlGetLastWin32Error());
    16231623    FARPROC pfn = GetProcAddress(hMod, SUP_HARDENED_SYM("TrustedMain"));
    16241624    if (!pfn)
    16251625        supR3HardenedFatal("supR3HardenedMainGetTrustedMain: Entrypoint \"TrustedMain\" not found in \"%s\" (rc=%d)\n",
    1626                             szPath, GetLastError());
     1626                            szPath, RtlGetLastWin32Error());
    16271627    return (PFNSUPTRUSTEDMAIN)pfn;
    16281628
  • trunk/src/VBox/HostDrivers/Support/SUPR3HardenedVerify.cpp

    r52790 r52940  
    411411            else
    412412            {
    413                 int err = GetLastError();
     413                int err = RtlGetLastWin32Error();
    414414                rc = supR3HardenedError(VERR_PATH_NOT_FOUND, fFatal,
    415415                                        "supR3HardenedVerifyDir: Failed to open \"%s\": err=%d\n",
     
    525525            else
    526526            {
    527                 int err = GetLastError();
     527                int err = RtlGetLastWin32Error();
    528528                if (   !pFile->fOptional
    529529                    || (    err != ERROR_FILE_NOT_FOUND
     
    603603            pVerified->hFile = hFileOpened;
    604604        else
    605             CloseHandle((HANDLE)hFileOpened);
     605            NtClose((HANDLE)hFileOpened);
    606606    }
    607607
     
    677677                if (!fLeaveFileOpen)
    678678                {
    679                     CloseHandle((HANDLE)pVerified->hFile);
     679                    NtClose((HANDLE)pVerified->hFile);
    680680                    pVerified->hFile = -1;
    681681                }
     
    17401740#  endif
    17411741# endif
    1742         CloseHandle(hVerify);
     1742        NtClose(hVerify);
    17431743    }
    17441744    else if (RT_SUCCESS(rc))
    1745         rc = RTErrInfoSetF(pErrInfo, RTErrConvertFromWin32(GetLastError()),
    1746                            "Error %u trying to open (or duplicate handle for) '%s'", GetLastError(), pszFilename);
     1745        rc = RTErrInfoSetF(pErrInfo, RTErrConvertFromWin32(RtlGetLastWin32Error()),
     1746                           "Error %u trying to open (or duplicate handle for) '%s'", RtlGetLastWin32Error(), pszFilename);
    17471747    if (RT_FAILURE(rc))
    17481748        return rc;
  • trunk/src/VBox/HostDrivers/Support/win/SUPHardenedVerify-win.h

    r52634 r52940  
    214214#  include <iprt/string.h>
    215215
    216 #  define suplibHardenedAllocZ       RTMemAllocZ
    217 #  define suplibHardenedReAlloc      RTMemRealloc
    218 #  define suplibHardenedFree         RTMemFree
    219216#  define suplibHardenedMemComp      memcmp
    220217#  define suplibHardenedMemCopy      memcpy
     
    227224# else   /* IN_SUP_HARDENED_R3 */
    228225#  include <iprt/mem.h>
    229 #if 0
     226#  if 0
    230227#  define memcmp                     suplibHardenedMemComp
    231228#  define memcpy                     suplibHardenedMemCopy
     
    236233#  define strcmp                     suplibHardenedStrCmp
    237234#  define strncmp                    suplibHardenedStrNCmp
     235#  endif
     236# endif  /* IN_SUP_HARDENED_R3 */
     237
     238#endif /* SUP_CERTIFICATES_ONLY */
     239
     240RT_C_DECLS_END
     241
    238242#endif
    239 DECLHIDDEN(void *)  suplibHardenedAllocZ(size_t cb);
    240 DECLHIDDEN(void *)  suplibHardenedReAlloc(void *pvOld, size_t cbNew);
    241 DECLHIDDEN(void)    suplibHardenedFree(void *pv);
    242 # endif  /* IN_SUP_HARDENED_R3 */
    243 
    244 #endif /* SUP_CERTIFICATES_ONLY */
    245 
    246 RT_C_DECLS_END
    247 
    248 #endif
    249 
     243
  • trunk/src/VBox/HostDrivers/Support/win/SUPHardenedVerifyImage-win.cpp

    r52907 r52940  
    19111911        && fFlags
    19121912        && g_uNtVerCombined < SUP_MAKE_NT_VER_SIMPLE(6, 2)
    1913         && GetLastError() == ERROR_INVALID_PARAMETER)
     1913        && RtlGetLastWin32Error() == ERROR_INVALID_PARAMETER)
    19141914    {
    19151915        fFlags = 0;
     
    19171917    }
    19181918    if (hMod == NULL)
    1919         supR3HardenedFatal("Error loading '%s': %u [%ls]", pszName, GetLastError(), wszName);
     1919        supR3HardenedFatal("Error loading '%s': %u [%ls]", pszName, RtlGetLastWin32Error(), wszName);
    19201920    return hMod;
    19211921}
     
    19391939#define RESOLVE_CRYPT32_API(a_Name, a_pfnType) \
    19401940    a_pfnType pfn##a_Name = (a_pfnType)GetProcAddress(hCrypt32, #a_Name); \
    1941     if (pfn##a_Name == NULL) supR3HardenedFatal("Error locating '" #a_Name "' in 'crypt32.dll': %u", GetLastError())
     1941    if (pfn##a_Name == NULL) supR3HardenedFatal("Error locating '" #a_Name "' in 'crypt32.dll': %u", RtlGetLastWin32Error())
    19421942    RESOLVE_CRYPT32_API(CertOpenStore, PFNCERTOPENSTORE);
    19431943    RESOLVE_CRYPT32_API(CertCloseStore, PFNCERTCLOSESTORE);
     
    20262026    HMODULE hSupLibMod = (HMODULE)supR3HardenedWinLoadLibrary(szPath, true /*fSystem32Only*/);
    20272027    if (hSupLibMod == NULL)
    2028         supR3HardenedFatal("Error loading '%s': %u", szPath, GetLastError());
     2028        supR3HardenedFatal("Error loading '%s': %u", szPath, RtlGetLastWin32Error());
    20292029# endif
    20302030
     
    20362036        g_iTlsWinVerifyTrustRecursion = iTls;
    20372037    else
    2038         supR3HardenedError(GetLastError(), false /*fFatal*/, "TlsAlloc failed");
     2038        supR3HardenedError(RtlGetLastWin32Error(), false /*fFatal*/, "TlsAlloc failed");
    20392039
    20402040    /*
     
    20462046        g_pfn##a_Name = (a_pfnType)GetProcAddress(hWintrust, #a_Name); \
    20472047        if (g_pfn##a_Name == NULL && (a_uMinWinVer) < g_uNtVerCombined) \
    2048             supR3HardenedFatal("Error locating '" #a_Name "' in 'Wintrust.dll': %u", GetLastError()); \
     2048            supR3HardenedFatal("Error locating '" #a_Name "' in 'Wintrust.dll': %u", RtlGetLastWin32Error()); \
    20492049    } while (0)
    20502050
    20512051    PFNWINVERIFYTRUST pfnWinVerifyTrust = (PFNWINVERIFYTRUST)GetProcAddress(hWintrust, "WinVerifyTrust");
    20522052    if (!pfnWinVerifyTrust)
    2053         supR3HardenedFatal("Error locating 'WinVerifyTrust' in 'Wintrust.dll': %u", GetLastError());
     2053        supR3HardenedFatal("Error locating 'WinVerifyTrust' in 'Wintrust.dll': %u", RtlGetLastWin32Error());
    20542054
    20552055    RESOLVE_CRYPT_API(CryptCATAdminAcquireContext,           PFNCRYPTCATADMINACQUIRECONTEXT,          0);
     
    23742374                                if (!fFreshContext)
    23752375                                {
    2376                                     SUP_DPRINTF(("supR3HardNtViCallWinVerifyTrustCatFile: Retrying with fresh context (CryptCATAdminEnumCatalogFromHash -> %u; iCat=%#x)\n", GetLastError(), iCat));
     2376                                    SUP_DPRINTF(("supR3HardNtViCallWinVerifyTrustCatFile: Retrying with fresh context (CryptCATAdminEnumCatalogFromHash -> %u; iCat=%#x)\n", RtlGetLastWin32Error(), iCat));
    23772377                                    if (hCatInfoPrev != NULL)
    23782378                                        g_pfnCryptCATAdminReleaseCatalogContext(hCatAdmin, hCatInfoPrev, 0 /*dwFlags*/);
     
    23812381                                }
    23822382                                if (iCat == 0)
    2383                                     SUP_DPRINTF(("supR3HardNtViCallWinVerifyTrustCatFile: CryptCATAdminEnumCatalogFromHash failed %u\n", GetLastError()));
     2383                                    SUP_DPRINTF(("supR3HardNtViCallWinVerifyTrustCatFile: CryptCATAdminEnumCatalogFromHash failed %u\n", RtlGetLastWin32Error()));
    23842384                                break;
    23852385                            }
     
    24452445                            else
    24462446                            {
    2447                                 rc = RTErrInfoSetF(pErrInfo, RTErrConvertFromWin32(GetLastError()),
     2447                                rc = RTErrInfoSetF(pErrInfo, RTErrConvertFromWin32(RtlGetLastWin32Error()),
    24482448                                                   "CryptCATCatalogInfoFromContext failed: %d [file=%s]",
    2449                                                    GetLastError(), pwszName);
     2449                                                   RtlGetLastWin32Error(), pwszName);
    24502450                                SUP_DPRINTF(("supR3HardNtViCallWinVerifyTrustCatFile: CryptCATCatalogInfoFromContext failed\n"));
    24512451                            }
     
    24612461                }
    24622462                else
    2463                     rc = RTErrInfoSetF(pErrInfo, RTErrConvertFromWin32(GetLastError()),
    2464                                        "CryptCATAdminCalcHashFromFileHandle[2] failed: %d [file=%s]", GetLastError(), pwszName);
     2463                    rc = RTErrInfoSetF(pErrInfo, RTErrConvertFromWin32(RtlGetLastWin32Error()),
     2464                                       "CryptCATAdminCalcHashFromFileHandle[2] failed: %d [file=%s]", RtlGetLastWin32Error(), pwszName);
    24652465
    24662466                if (!ASMAtomicCmpXchgPtr(&s_aHashes[i].hCachedCatAdmin, hCatAdmin, NULL))
     
    24692469            }
    24702470            else
    2471                 rc = RTErrInfoSetF(pErrInfo, RTErrConvertFromWin32(GetLastError()),
    2472                                    "CryptCATAdminAcquireContext[2] failed: %d [file=%s]", GetLastError(), pwszName);
     2471                rc = RTErrInfoSetF(pErrInfo, RTErrConvertFromWin32(RtlGetLastWin32Error()),
     2472                                   "CryptCATAdminAcquireContext[2] failed: %d [file=%s]", RtlGetLastWin32Error(), pwszName);
    24732473             iPolicy++;
    24742474        } while (   fTryNextPolicy
     
    25282528        else
    25292529        {
    2530             uint32_t const idCurrentThread = GetCurrentThreadId();
     2530            uint32_t const idCurrentThread = RTNtCurrentThreadId();
    25312531            fNoRecursion = ASMAtomicCmpXchgU32(&g_idActiveThread, idCurrentThread, UINT32_MAX);
    25322532        }
     
    25922592        && (   g_iTlsWinVerifyTrustRecursion != UINT32_MAX
    25932593            ?  (uintptr_t)TlsGetValue(g_iTlsWinVerifyTrustRecursion) == 0
    2594             : g_idActiveThread != GetCurrentThreadId() );
     2594            : g_idActiveThread != RTNtCurrentThreadId() );
    25952595}
    25962596
  • trunk/src/VBox/HostDrivers/Support/win/SUPHardenedVerifyProcess-win.cpp

    r52875 r52940  
    16061606                                       pEntry->pszName, cbBits, cbBits);
    16071607
    1608         pEntry->pbBits = (uint8_t *)suplibHardenedAllocZ(cbBits);
     1608        pEntry->pbBits = (uint8_t *)RTMemAllocZ(cbBits);
    16091609        if (!pEntry->pbBits)
    16101610            return supHardNtVpSetInfo1(pErrInfo, VERR_SUP_VP_NO_MEMORY, "Failed to allocate %zu bytes for image %s.",
     
    16291629    if (pEntry->pbBits)
    16301630    {
    1631         suplibHardenedFree(pEntry->pbBits);
     1631        RTMemFree(pEntry->pbBits);
    16321632        pEntry->pbBits = NULL;
    16331633    }
     
    19261926    int             rc;
    19271927    ULONG           cbUniStr = sizeof(UNICODE_STRING) + RTPATH_MAX * sizeof(RTUTF16);
    1928     PUNICODE_STRING pUniStr  = (PUNICODE_STRING)suplibHardenedAllocZ(cbUniStr);
     1928    PUNICODE_STRING pUniStr  = (PUNICODE_STRING)RTMemAllocZ(cbUniStr);
    19291929    if (!pUniStr)
    19301930        return supHardNtVpSetInfo2(pThis, VERR_SUP_VP_NO_MEMORY,
     
    19471947        rc = supHardNtVpSetInfo2(pThis, VERR_SUP_VP_NT_QI_PROCESS_NM_ERROR,
    19481948                                 "NtQueryInformationProcess/ProcessImageFileName failed: %#x", rcNt);
    1949     suplibHardenedFree(pUniStr);
     1949    RTMemFree(pUniStr);
    19501950    if (RT_FAILURE(rc))
    19511951        return rc;
     
    21082108         * Allocate and initialize memory for the state.
    21092109         */
    2110         PSUPHNTVPSTATE pThis = (PSUPHNTVPSTATE)suplibHardenedAllocZ(sizeof(*pThis));
     2110        PSUPHNTVPSTATE pThis = (PSUPHNTVPSTATE)RTMemAllocZ(sizeof(*pThis));
    21112111        if (pThis)
    21122112        {
     
    21372137                supHardNTLdrCacheDeleteEntry(&pThis->aImages[i].CacheEntry);
    21382138#endif
    2139             suplibHardenedFree(pThis);
     2139            RTMemFree(pThis);
    21402140        }
    21412141        else
  • trunk/src/VBox/HostDrivers/Support/win/SUPR3HardenedMain-win.cpp

    r52906 r52940  
    9292        BOOL fRcAssert = (a_Expr); \
    9393        if (fRcAssert == FALSE) \
    94             supR3HardenedFatal("%s: %s -> %#x\n", __FUNCTION__, #a_Expr, GetLastError()); \
     94            supR3HardenedFatal("%s: %s -> %#x\n", __FUNCTION__, #a_Expr, RtlGetLastWin32Error()); \
    9595    } while (0)
    9696
     
    321321
    322322/**
    323  * Allocate zero filled memory on the heap.
    324  *
    325  * @returns Pointer to the memory.  Will never return NULL, triggers a fatal
    326  *          error instead.
    327  * @param   cb                  The number of bytes to allocate.
    328  */
    329 DECLHIDDEN(void *) suplibHardenedAllocZ(size_t cb)
    330 {
    331     void *pv = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, cb);
    332     if (!pv)
    333         supR3HardenedFatal("HeapAlloc failed to allocate %zu bytes.\n", cb);
    334     return pv;
    335 }
    336 
    337 
    338 /**
    339  * Reallocates memory on the heap.
    340  *
    341  * @returns Pointer to the resized memory block.  Will never return NULL,
    342  *          triggers a fatal error instead.
    343  * @param   pvOld               The old memory block.
    344  * @param   cbNew               The new block size.
    345  */
    346 DECLHIDDEN(void *) suplibHardenedReAlloc(void *pvOld, size_t cbNew)
    347 {
    348     if (!pvOld)
    349         return suplibHardenedAllocZ(cbNew);
    350     void *pv = HeapReAlloc(GetProcessHeap(), 0 /*dwFlags*/, pvOld, cbNew);
    351     if (!pv)
    352         supR3HardenedFatal("HeapReAlloc failed to allocate %zu bytes.\n", cbNew);
    353     return pv;
    354 }
    355 
    356 
    357 /**
    358  * Frees memory allocated by suplibHardenedAlloc, suplibHardenedAllocZ or
    359  * suplibHardenedReAlloc.
    360  *
    361  * @param   pv                  Pointer to the memeory to be freed.
    362  */
    363 DECLHIDDEN(void) suplibHardenedFree(void *pv)
    364 {
    365     if (pv)
    366         HeapFree(GetProcessHeap(), 0 /* dwFlags*/, pv);
    367 }
    368 
    369 
    370 /**
    371323 * Wrapper around LoadLibraryEx that deals with the UTF-8 to UTF-16 conversion
    372324 * and supplies the right flags.
     
    406358            && fFlags
    407359            && g_uNtVerCombined < SUP_MAKE_NT_VER_SIMPLE(6, 2)
    408             && GetLastError() == ERROR_INVALID_PARAMETER)
     360            && RtlGetLastWin32Error() == ERROR_INVALID_PARAMETER)
    409361            pvRet = (void *)LoadLibraryExW(wszPath, NULL /*hFile*/, 0);
    410362
     
    543495     * Allocate and initalize a new entry.
    544496     */
    545     PVERIFIERCACHEENTRY pEntry = (PVERIFIERCACHEENTRY)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
    546                                                                 sizeof(VERIFIERCACHEENTRY) + pUniStr->Length);
     497    PVERIFIERCACHEENTRY pEntry = (PVERIFIERCACHEENTRY)RTMemAllocZ(sizeof(VERIFIERCACHEENTRY) + pUniStr->Length);
    547498    if (pEntry)
    548499    {
     
    589540
    590541        /* Duplicate entry (may happen due to races). */
    591         HeapFree(GetProcessHeap(), 0 /* dwFlags*/, pEntry);
     542        RTMemFree(pEntry);
    592543    }
    593544    NtClose(hFile);
     
    761712                    uint32_t cbNeeded      = RT_OFFSETOF(VERIFIERCACHEIMPORT, szName[cbNameAligned])
    762713                                           + (pawcDir ? (cwcDir + 1) * sizeof(RTUTF16) : 0);
    763                     PVERIFIERCACHEIMPORT pImport = (PVERIFIERCACHEIMPORT)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, cbNeeded);
     714                    PVERIFIERCACHEIMPORT pImport = (PVERIFIERCACHEIMPORT)RTMemAllocZ(cbNeeded);
    764715                    if (pImport)
    765716                    {
     
    994945                SUP_DPRINTF(("supR3HardenedWinVerifyCacheProcessImportTodos: '%s' is in the cache.\n", pCur->szName));
    995946
    996             HeapFree(GetProcessHeap(), 0 /* dwFlags*/, pCur);
     947            RTMemFree(pCur);
    997948        } while (pTodo);
    998949    }
     
    15761527        if (fImage || fExecMap || fExecProt)
    15771528        {
    1578             DWORD dwSavedLastError = GetLastError();
     1529            DWORD dwSavedLastError = RtlGetLastWin32Error();
    15791530
    15801531            bool fCallRealApi;
     
    15841535            //SUP_DPRINTF(("supR3HardenedMonitor_NtCreateSection: 2 rcNt=%#x fCallRealApi=%#x\n", rcNt, fCallRealApi));
    15851536
    1586             SetLastError(dwSavedLastError);
     1537            RtlRestoreLastWin32Error(dwSavedLastError);
    15871538
    15881539            if (!NT_SUCCESS(rcNt))
     
    16561607supR3HardenedMonitor_LdrLoadDll(PWSTR pwszSearchPath, PULONG pfFlags, PUNICODE_STRING pName, PHANDLE phMod)
    16571608{
    1658     DWORD    dwSavedLastError = GetLastError();
     1609    DWORD    dwSavedLastError = RtlGetLastWin32Error();
    16591610    NTSTATUS rcNt;
    16601611
     
    16711622        supR3HardenedError(VINF_SUCCESS, false, "supR3HardenedMonitor_LdrLoadDll: name is NULL or have a zero length.\n");
    16721623        SUP_DPRINTF(("supR3HardenedMonitor_LdrLoadDll: returns rcNt=%#x (pName=%p)\n", STATUS_INVALID_PARAMETER, pName));
    1673         SetLastError(dwSavedLastError);
     1624        RtlRestoreLastWin32Error(dwSavedLastError);
    16741625        return STATUS_INVALID_PARAMETER;
    16751626    }
     
    16851636        supR3HardenedError(VINF_SUCCESS, false, "supR3HardenedMonitor_LdrLoadDll: too long name: %#x bytes\n", pName->Length);
    16861637        SUP_DPRINTF(("supR3HardenedMonitor_LdrLoadDll: returns rcNt=%#x\n", STATUS_NAME_TOO_LONG));
    1687         SetLastError(dwSavedLastError);
     1638        RtlRestoreLastWin32Error(dwSavedLastError);
    16881639        return STATUS_NAME_TOO_LONG;
    16891640    }
     
    17251676            {
    17261677                SUP_DPRINTF(("supR3HardenedMonitor_LdrLoadDll: returns rcNt=%#x\n", rcNt));
    1727                 SetLastError(dwSavedLastError);
     1678                RtlRestoreLastWin32Error(dwSavedLastError);
    17281679                return rcNt;
    17291680            }
     
    17941745                               cwcName, pawcName);
    17951746            SUP_DPRINTF(("supR3HardenedMonitor_LdrLoadDll: returns rcNt=%#x\n", STATUS_OBJECT_NAME_INVALID));
    1796             SetLastError(dwSavedLastError);
     1747            RtlRestoreLastWin32Error(dwSavedLastError);
    17971748            return STATUS_OBJECT_NAME_INVALID;
    17981749        }
     
    18201771            {
    18211772                SUP_DPRINTF(("supR3HardenedMonitor_LdrLoadDll: returns rcNt=%#x\n", rcNt));
    1822                 SetLastError(dwSavedLastError);
     1773                RtlRestoreLastWin32Error(dwSavedLastError);
    18231774                return rcNt;
    18241775            }
     
    18341785            {
    18351786                supR3HardenedError(VINF_SUCCESS, false,
    1836                                    "supR3HardenedMonitor_LdrLoadDll: GetSystemDirectoryW failed: %u\n", GetLastError());
     1787                                   "supR3HardenedMonitor_LdrLoadDll: GetSystemDirectoryW failed: %u\n", RtlGetLastWin32Error());
    18371788                SUP_DPRINTF(("supR3HardenedMonitor_LdrLoadDll: returns rcNt=%#x\n", STATUS_UNEXPECTED_IO_ERROR));
    1838                 SetLastError(dwSavedLastError);
     1789                RtlRestoreLastWin32Error(dwSavedLastError);
    18391790                return STATUS_UNEXPECTED_IO_ERROR;
    18401791            }
     
    18441795                                   "supR3HardenedMonitor_LdrLoadDll: Name too long (system32): %.*ls\n", cwcName, pawcName);
    18451796                SUP_DPRINTF(("supR3HardenedMonitor_LdrLoadDll: returns rcNt=%#x\n", STATUS_NAME_TOO_LONG));
    1846                 SetLastError(dwSavedLastError);
     1797                RtlRestoreLastWin32Error(dwSavedLastError);
    18471798                return STATUS_NAME_TOO_LONG;
    18481799            }
     
    18951846                    SUP_DPRINTF(("supR3HardenedMonitor_LdrLoadDll: returns rcNt=%#x '%ls'\n", rcNt, wszPath));
    18961847                }
    1897                 SetLastError(dwSavedLastError);
     1848                RtlRestoreLastWin32Error(dwSavedLastError);
    18981849                return rcNt;
    18991850            }
     
    19031854        else
    19041855        {
    1905             DWORD dwErr = GetLastError();
     1856            DWORD dwErr = RtlGetLastWin32Error();
    19061857            SUP_DPRINTF(("supR3HardenedMonitor_LdrLoadDll: error opening '%ls': %u\n", wszPath, dwErr));
    19071858        }
     
    19141865                 (unsigned)pName->Length / sizeof(WCHAR), pName->Buffer, pfFlags ? *pfFlags : UINT32_MAX, pwszSearchPath,
    19151866                 !((uintptr_t)pwszSearchPath & 1) && (uintptr_t)pwszSearchPath >= 0x2000U ? pwszSearchPath : L"<flags>"));
    1916     SetLastError(dwSavedLastError);
     1867    RtlRestoreLastWin32Error(dwSavedLastError);
    19171868    rcNt = g_pfnLdrLoadDllReal(pwszSearchPath, pfFlags, pName, phMod);
    19181869
     
    19201871     * Log the result and process pending WinVerifyTrust work if we can.
    19211872     */
    1922     dwSavedLastError = GetLastError();
     1873    dwSavedLastError = RtlGetLastWin32Error();
    19231874
    19241875    if (NT_SUCCESS(rcNt) && phMod)
     
    19281879    supR3HardenedWinVerifyCacheProcessWvtTodos();
    19291880
    1930     SetLastError(dwSavedLastError);
     1881    RtlRestoreLastWin32Error(dwSavedLastError);
    19311882
    19321883    return rcNt;
     
    21572108    if (RT_FAILURE(rc))
    21582109        supR3HardenedFatal("supR3HardenedWinCreateParentWatcherThread: RTThreadCreate failed: %Rrc\n", rc);
     2110}
     2111
     2112
     2113/**
     2114 * Simplify NtProtectVirtualMemory interface.
     2115 *
     2116 * Modifies protection for the current process.  Caller must know the current
     2117 * protection as it's not returned.
     2118 *
     2119 * @returns NT status code.
     2120 * @param   pvMem               The memory to change protection for.
     2121 * @param   cbMem               The amount of memory to change.
     2122 * @param   fNewProt            The new protection.
     2123 */
     2124static NTSTATUS supR3HardenedWinProtectMemory(PVOID pvMem, SIZE_T cbMem, ULONG fNewProt)
     2125{
     2126    ULONG fOldProt = 0;
     2127    return NtProtectVirtualMemory(NtCurrentProcess(), &pvMem, &cbMem, fNewProt, &fOldProt);
    21592128}
    21602129
     
    22912260    *puJmpTab                           = (uintptr_t)supR3HardenedMonitor_NtCreateSection;
    22922261
    2293     DWORD dwOldProt;
    2294     SUPR3HARDENED_ASSERT_WIN32_SUCCESS(VirtualProtectEx(NtCurrentProcess(), pbNtCreateSection, 16,
    2295                                                         PAGE_EXECUTE_READWRITE, &dwOldProt));
     2262    SUPR3HARDENED_ASSERT_NT_SUCCESS(supR3HardenedWinProtectMemory(pbNtCreateSection, 16, PAGE_EXECUTE_READWRITE));
     2263
    22962264    pbNtCreateSection[0] = 0xff;
    22972265    pbNtCreateSection[1] = 0x25;
    22982266    *(uint32_t *)&pbNtCreateSection[2] = (uint32_t)((uintptr_t)puJmpTab - (uintptr_t)&pbNtCreateSection[2+4]);
    22992267
    2300     SUPR3HARDENED_ASSERT_WIN32_SUCCESS(VirtualProtectEx(NtCurrentProcess(), pbNtCreateSection, 16,
    2301                                                         PAGE_EXECUTE_READ, &dwOldProt));
     2268    SUPR3HARDENED_ASSERT_NT_SUCCESS(supR3HardenedWinProtectMemory(pbNtCreateSection, 16, PAGE_EXECUTE_READ));
    23022269    puJmpTab++;
    23032270
     
    23682335    *(PFNRT *)&g_pfnNtCreateSectionReal = pfnCallReal;
    23692336
    2370     DWORD dwOldProt;
    2371     SUPR3HARDENED_ASSERT_WIN32_SUCCESS(VirtualProtectEx(NtCurrentProcess(), pbNtCreateSection, 16,
    2372                                                         PAGE_EXECUTE_READWRITE, &dwOldProt));
     2337    SUPR3HARDENED_ASSERT_NT_SUCCESS(supR3HardenedWinProtectMemory(pbNtCreateSection, 16, PAGE_EXECUTE_READWRITE));
     2338
    23732339    pbNtCreateSection[0] = 0xe9;
    23742340    *(uint32_t *)&pbNtCreateSection[1] = (uintptr_t)supR3HardenedMonitor_NtCreateSection
    23752341                                       - (uintptr_t)&pbNtCreateSection[1+4];
    23762342
    2377     SUPR3HARDENED_ASSERT_WIN32_SUCCESS(VirtualProtectEx(NtCurrentProcess(), pbNtCreateSection, 16,
    2378                                                         PAGE_EXECUTE_READ, &dwOldProt));
     2343    SUPR3HARDENED_ASSERT_NT_SUCCESS(supR3HardenedWinProtectMemory(pbNtCreateSection, 16, PAGE_EXECUTE_READ));
     2344
    23792345#endif
    23802346
     
    25752541    *puJmpTab = (uintptr_t)supR3HardenedMonitor_LdrLoadDll;
    25762542
    2577     SUPR3HARDENED_ASSERT_WIN32_SUCCESS(VirtualProtectEx(NtCurrentProcess(), pbLdrLoadDll, 16, PAGE_EXECUTE_READWRITE, &dwOldProt));
     2543    SUPR3HARDENED_ASSERT_NT_SUCCESS(supR3HardenedWinProtectMemory(pbLdrLoadDll, 16, PAGE_EXECUTE_READWRITE));
    25782544
    25792545    Assert(offJmpBack >= 6);
     
    25822548    *(uint32_t *)&pbLdrLoadDll[2] = (uint32_t)((uintptr_t)puJmpTab - (uintptr_t)&pbLdrLoadDll[2+4]);
    25832549
    2584     SUPR3HARDENED_ASSERT_WIN32_SUCCESS(VirtualProtectEx(NtCurrentProcess(), pbLdrLoadDll, 16, PAGE_EXECUTE_READ, &dwOldProt));
     2550    SUPR3HARDENED_ASSERT_NT_SUCCESS(supR3HardenedWinProtectMemory(pbLdrLoadDll, 16, PAGE_EXECUTE_READ));
    25852551    puJmpTab++;
    25862552
     
    27062672
    27072673    /* Patch LdrLoadDLl. */
    2708     SUPR3HARDENED_ASSERT_WIN32_SUCCESS(VirtualProtectEx(NtCurrentProcess(), pbLdrLoadDll, 16,
    2709                                                         PAGE_EXECUTE_READWRITE, &dwOldProt));
     2674    SUPR3HARDENED_ASSERT_NT_SUCCESS(supR3HardenedWinProtectMemory(pbLdrLoadDll, 16, PAGE_EXECUTE_READWRITE));
    27102675    Assert(offJmpBack >= 5);
    27112676    pbLdrLoadDll[0] = 0xe9;
    27122677    *(uint32_t *)&pbLdrLoadDll[1] = (uintptr_t)supR3HardenedMonitor_LdrLoadDll - (uintptr_t)&pbLdrLoadDll[1+4];
    27132678
    2714     SUPR3HARDENED_ASSERT_WIN32_SUCCESS(VirtualProtectEx(NtCurrentProcess(), pbLdrLoadDll, 16, PAGE_EXECUTE_READ, &dwOldProt));
     2679    SUPR3HARDENED_ASSERT_NT_SUCCESS(supR3HardenedWinProtectMemory(pbLdrLoadDll, 16, PAGE_EXECUTE_READ));
    27152680#endif
    27162681
     
    27182683     * Seal the rwx page.
    27192684     */
    2720     SUPR3HARDENED_ASSERT_WIN32_SUCCESS(VirtualProtectEx(NtCurrentProcess(), g_abSupHardReadWriteExecPage, PAGE_SIZE,
    2721                                                         PAGE_EXECUTE_READ, &dwOldProt));
     2685    SUPR3HARDENED_ASSERT_NT_SUCCESS(supR3HardenedWinProtectMemory(g_abSupHardReadWriteExecPage, PAGE_SIZE, PAGE_EXECUTE_READ));
    27222686}
    27232687
     
    28892853     * Create a security descriptor with the above ACL.
    28902854     */
    2891     PSECURITY_DESCRIPTOR pSecDesc = (PSECURITY_DESCRIPTOR)suplibHardenedAllocZ(SECURITY_DESCRIPTOR_MIN_LENGTH);
     2855    PSECURITY_DESCRIPTOR pSecDesc = (PSECURITY_DESCRIPTOR)RTMemAllocZ(SECURITY_DESCRIPTOR_MIN_LENGTH);
    28922856    pCleanup->pSecDesc = pSecDesc;
    28932857
     
    29912955                              "Command line is too long (%u chars)!", cwcCmdLine);
    29922956
    2993     PRTUTF16 pwszCmdLine = (PRTUTF16)HeapAlloc(GetProcessHeap(), 0 /* dwFlags*/, (cwcCmdLine + 1) * sizeof(RTUTF16));
     2957    PRTUTF16 pwszCmdLine = (PRTUTF16)RTMemAlloc((cwcCmdLine + 1) * sizeof(RTUTF16));
    29942958    SUPR3HARDENED_ASSERT(pwszCmdLine != NULL);
    29952959
     
    37933757                              "Error relaunching VirtualBox VM process: %u\n"
    37943758                              "Command line: '%ls'",
    3795                               GetLastError(), pwszCmdLine);
     3759                              RtlGetLastWin32Error(), pwszCmdLine);
    37963760    supR3HardenedWinDisableThreadCreation();
    37973761
     
    39523916     */
    39533917    supR3HardenedWinFlushLoaderCache();
    3954     HeapCompact(GetProcessHeap(), 0 /*dwFlags*/);
     3918    RtlCompactHeap(GetProcessHeap(), 0 /*dwFlags*/);
    39553919
    39563920    /*
     
    45024466    int    cArgs          = 0;
    45034467    int    cArgsAllocated = 4;
    4504     char **papszArgs      = (char **)suplibHardenedAllocZ(sizeof(char *) * cArgsAllocated);
     4468    char **papszArgs      = (char **)RTMemAllocZ(sizeof(char *) * cArgsAllocated);
    45054469    char  *pszSrc         = pszCmdLine;
    45064470    for (;;)
     
    45174481        {
    45184482            cArgsAllocated *= 2;
    4519             papszArgs = (char **)suplibHardenedReAlloc(papszArgs, sizeof(char *) * cArgsAllocated);
     4483            papszArgs = (char **)RTMemRealloc(papszArgs, sizeof(char *) * cArgsAllocated);
    45204484        }
    45214485        papszArgs[cArgs++] = pszSrc;
     
    51435107                               OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL /*hTemplateFile*/);
    51445108    if (hFile == NULL || hFile == INVALID_HANDLE_VALUE)
    5145         supR3HardenedFatalMsg("suplibHardenedWindowsMain", kSupInitOp_Integrity, RTErrConvertFromWin32(GetLastError()),
    5146                               "Error opening the executable: %u (%ls).", GetLastError());
     5109        supR3HardenedFatalMsg("suplibHardenedWindowsMain", kSupInitOp_Integrity, RTErrConvertFromWin32(RtlGetLastWin32Error()),
     5110                              "Error opening the executable: %u (%ls).", RtlGetLastWin32Error());
    51475111    RT_ZERO(g_SupLibHardenedExeNtPath);
    51485112    ULONG cbIgn;
  • trunk/src/VBox/HostDrivers/Support/win/SUPR3HardenedMainA-win.asm

    r52523 r52940  
    9292; @param 2  The parameter frame size on x86. Multiple of dword.
    9393; @param 3  Non-zero expression if system call.
     94; @param 4  Non-zero expression if early available call
    9495;
    9596%define SUPHNTIMP_SYSCALL 1
    96 %macro SupHardNtImport 3
     97%macro SupHardNtImport 4
    9798        ;
    9899        ; The data.
     
    146147  %endif
    147148%endif
     149
     150%if %4 == 0
     151global SUPHNTIMP_STDCALL_NAME(%1, %2) %+ _Early
     152SUPHNTIMP_STDCALL_NAME(%1, %2) %+ _Early:
     153        int3
     154 %ifdef RT_ARCH_AMD64
     155        ret
     156 %else
     157        ret     %2
     158 %endif
     159%endif
    148160%endmacro
    149161
    150162%define SUPHARNT_COMMENT(a_Comment)
    151 %define SUPHARNT_IMPORT_SYSCALL(a_Name, a_cbParamsX86) SupHardNtImport a_Name, a_cbParamsX86, SUPHNTIMP_SYSCALL
    152 %define SUPHARNT_IMPORT_STDCALL(a_Name, a_cbParamsX86) SupHardNtImport a_Name, a_cbParamsX86, 0
     163%define SUPHARNT_IMPORT_SYSCALL(a_Name, a_cbParamsX86)       SupHardNtImport a_Name, a_cbParamsX86, SUPHNTIMP_SYSCALL, 1
     164%define SUPHARNT_IMPORT_STDCALL(a_Name, a_cbParamsX86)       SupHardNtImport a_Name, a_cbParamsX86, 0,                 0
     165%define SUPHARNT_IMPORT_STDCALL_EARLY(a_Name, a_cbParamsX86) SupHardNtImport a_Name, a_cbParamsX86, 0,                 1
    153166%include "import-template-ntdll.h"
    154167%include "import-template-kernel32.h"
  • trunk/src/VBox/HostDrivers/Support/win/SUPR3HardenedMainImports-win.cpp

    r52795 r52940  
    6969    /** Where to store the function address (think __imp_ApiName). */
    7070    PFNRT              *ppfnImport;
     71    /** Pointer to an early dummy function for imports that aren't available
     72     * during early process initialization. */
     73    PFNRT               pfnEarlyDummy;
    7174} SUPHNTIMPFUNC;
    7275/** Pointer to an import table entry.  */
     
    151154 * Declare assembly symbols.
    152155 */
    153 #define SUPHARNT_IMPORT_STDCALL(a_Name, a_cbParamsX86) \
     156#define SUPHARNT_IMPORT_STDCALL_EARLY(a_Name, a_cbParamsX86) \
    154157    extern PFNRT    RT_CONCAT(g_pfn, a_Name);
    155158#define SUPHARNT_IMPORT_SYSCALL(a_Name, a_cbParamsX86) \
    156     SUPHARNT_IMPORT_STDCALL(a_Name, a_cbParamsX86) \
     159    SUPHARNT_IMPORT_STDCALL_EARLY(a_Name, a_cbParamsX86) \
    157160    extern uint32_t RT_CONCAT(g_uApiNo, a_Name); \
    158161    extern FNRT     RT_CONCAT(a_Name, _SyscallType1); \
    159162    extern FNRT     RT_CONCAT(a_Name, _SyscallType2);
     163#define SUPHARNT_IMPORT_STDCALL(a_Name, a_cbParamsX86) \
     164    extern PFNRT    RT_CONCAT(g_pfn, a_Name); \
     165    extern FNRT     RT_CONCAT(a_Name, _Early);
    160166
    161167RT_C_DECLS_BEGIN
     
    168174 */
    169175#undef SUPHARNT_IMPORT_SYSCALL
     176#undef SUPHARNT_IMPORT_STDCALL_EARLY
    170177#undef SUPHARNT_IMPORT_STDCALL
    171 #define SUPHARNT_IMPORT_SYSCALL(a_Name, a_cbParamsX86) { #a_Name, &RT_CONCAT(g_pfn, a_Name) },
    172 #define SUPHARNT_IMPORT_STDCALL(a_Name, a_cbParamsX86) { #a_Name, &RT_CONCAT(g_pfn, a_Name) },
     178#define SUPHARNT_IMPORT_SYSCALL(a_Name, a_cbParamsX86)          { #a_Name, &RT_CONCAT(g_pfn, a_Name), NULL },
     179#define SUPHARNT_IMPORT_STDCALL_EARLY(a_Name, a_cbParamsX86)    { #a_Name, &RT_CONCAT(g_pfn, a_Name), NULL },
     180#define SUPHARNT_IMPORT_STDCALL(a_Name, a_cbParamsX86)          { #a_Name, &RT_CONCAT(g_pfn, a_Name), RT_CONCAT(a_Name,_Early) },
    173181static const SUPHNTIMPFUNC g_aSupNtImpNtDllFunctions[] =
    174182{
     
    188196#undef SUPHARNT_IMPORT_SYSCALL
    189197#undef SUPHARNT_IMPORT_STDCALL
     198#undef SUPHARNT_IMPORT_STDCALL_EARLY
    190199#ifdef RT_ARCH_AMD64
    191200# define SUPHARNT_IMPORT_STDCALL(a_Name, a_cbParamsX86) \
     
    199208    { &RT_CONCAT(g_uApiNo, a_Name), &RT_CONCAT(a_Name,_SyscallType1), &RT_CONCAT(a_Name, _SyscallType2), a_cbParamsX86 },
    200209#endif
     210#define SUPHARNT_IMPORT_STDCALL_EARLY(a_Name, a_cbParamsX86) SUPHARNT_IMPORT_STDCALL(a_Name, a_cbParamsX86)
    201211static const SUPHNTIMPSYSCALL g_aSupNtImpNtDllSyscalls[] =
    202212{
  • trunk/src/VBox/HostDrivers/Support/win/SUPR3HardenedNoCrt-win.cpp

    r51770 r52940  
    117117RTDECL(void *) RTMemAllocTag(size_t cb, const char *pszTag) RT_NO_THROW
    118118{
    119     return suplibHardenedAllocZ(cb);
     119    void *pv = RtlAllocateHeap(GetProcessHeap(), 0 /*fFlags*/, cb);
     120    if (!pv)
     121        supR3HardenedFatal("RtlAllocateHeap failed to allocate %zu bytes.\n", cb);
     122    return pv;
    120123}
    121124
     
    123126RTDECL(void *) RTMemAllocZTag(size_t cb, const char *pszTag) RT_NO_THROW
    124127{
    125     return suplibHardenedAllocZ(cb);
     128    void *pv = RtlAllocateHeap(GetProcessHeap(), HEAP_ZERO_MEMORY, cb);
     129    if (!pv)
     130        supR3HardenedFatal("RtlAllocateHeap failed to allocate %zu bytes.\n", cb);
     131    return pv;
    126132}
    127133
     
    151157RTDECL(void *) RTMemReallocTag(void *pvOld, size_t cbNew, const char *pszTag) RT_NO_THROW
    152158{
    153     return suplibHardenedReAlloc(pvOld, cbNew);
     159    if (!pvOld)
     160        return RTMemAllocZTag(cbNew, pszTag);
     161
     162    void *pv = RtlReAllocateHeap(GetProcessHeap(), 0 /*dwFlags*/, pvOld, cbNew);
     163    if (!pv)
     164        supR3HardenedFatal("RtlReAllocateHeap failed to allocate %zu bytes.\n", cbNew);
     165    return pv;
    154166}
    155167
     
    157169RTDECL(void) RTMemFree(void *pv) RT_NO_THROW
    158170{
    159     suplibHardenedFree(pv);
     171    if (pv)
     172        RtlFreeHeap(GetProcessHeap(), 0 /* dwFlags*/, pv);
    160173}
    161174
  • trunk/src/VBox/HostDrivers/Support/win/VBoxSupLib-win.cpp

    r52024 r52940  
    5252            SetLastError(NO_ERROR);
    5353            if (   GetModuleFileNameW((HMODULE)hModule, wszName, RT_ELEMENTS(wszName)) > 0
    54                 && GetLastError() == NO_ERROR)
     54                && RtlGetLastWin32Error() == NO_ERROR)
    5555            {
    5656                int cExtraLoads = 2;
  • trunk/src/VBox/HostDrivers/Support/win/import-template-kernel32.h

    r52414 r52940  
    1 SUPHARNT_IMPORT_STDCALL(CloseHandle, 4)
    21SUPHARNT_IMPORT_STDCALL(CreateFileW, 28)
    32SUPHARNT_IMPORT_STDCALL(CreateProcessW, 40)
    4 SUPHARNT_IMPORT_STDCALL(ExitProcess, 4)
    5 SUPHARNT_IMPORT_STDCALL(GetCurrentThreadId, 0)
    63SUPHARNT_IMPORT_STDCALL(GetFullPathNameA, 16)
    7 SUPHARNT_IMPORT_STDCALL(GetLastError, 0)
    84SUPHARNT_IMPORT_STDCALL(GetModuleFileNameW, 12)
    95SUPHARNT_IMPORT_STDCALL(GetModuleHandleA, 4)
     
    139SUPHARNT_IMPORT_STDCALL(GetSystemDirectoryW, 8)
    1410SUPHARNT_IMPORT_STDCALL(GetTickCount, 0)
    15 SUPHARNT_IMPORT_STDCALL(HeapAlloc, 12)
    16 SUPHARNT_IMPORT_STDCALL(HeapCompact, 8)
    17 SUPHARNT_IMPORT_STDCALL(HeapFree, 8)
    18 SUPHARNT_IMPORT_STDCALL(HeapReAlloc, 16)
    1911SUPHARNT_IMPORT_STDCALL(LoadLibraryExW, 12)
    2012SUPHARNT_IMPORT_STDCALL(OutputDebugStringA, 4)
    21 SUPHARNT_IMPORT_STDCALL(SetLastError, 4)
    22 SUPHARNT_IMPORT_STDCALL(Sleep, 4)
    2313SUPHARNT_IMPORT_STDCALL(TlsAlloc, 0)
    2414SUPHARNT_IMPORT_STDCALL(TlsGetValue, 4)
    2515SUPHARNT_IMPORT_STDCALL(TlsSetValue, 8)
    26 SUPHARNT_IMPORT_STDCALL(VirtualProtectEx, 20)
    2716SUPHARNT_IMPORT_STDCALL(WriteFile, 20)
    2817
  • trunk/src/VBox/HostDrivers/Support/win/import-template-ntdll.h

    r52877 r52940  
    5454SUPHARNT_IMPORT_STDCALL(RtlAddAccessAllowedAce, 16)
    5555SUPHARNT_IMPORT_STDCALL(RtlAddAccessDeniedAce, 16)
     56SUPHARNT_IMPORT_STDCALL(RtlAllocateHeap, 12)
     57SUPHARNT_IMPORT_STDCALL(RtlCompactHeap, 8)
    5658SUPHARNT_IMPORT_STDCALL(RtlCopySid, 12)
    5759SUPHARNT_IMPORT_STDCALL(RtlCreateAcl, 12)
     
    6365SUPHARNT_IMPORT_STDCALL(RtlDosApplyFileIsolationRedirection_Ustr, 36)
    6466SUPHARNT_IMPORT_STDCALL(RtlEqualSid, 8)
     67SUPHARNT_IMPORT_STDCALL(RtlExitProcess, 4)
     68SUPHARNT_IMPORT_STDCALL(RtlExitThread, 4)
    6569SUPHARNT_IMPORT_STDCALL(RtlExpandEnvironmentStrings_U, 16)
     70SUPHARNT_IMPORT_STDCALL(RtlFreeHeap, 12)
    6671SUPHARNT_IMPORT_STDCALL(RtlFreeUnicodeString, 4)
     72SUPHARNT_IMPORT_STDCALL(RtlGetLastNtStatus, 0)
     73SUPHARNT_IMPORT_STDCALL(RtlGetLastWin32Error, 0)
    6774SUPHARNT_IMPORT_STDCALL(RtlGetVersion, 4)
    6875SUPHARNT_IMPORT_STDCALL(RtlInitializeSid, 12)
    6976SUPHARNT_IMPORT_STDCALL(RtlNtStatusToDosError, 4)
     77SUPHARNT_IMPORT_STDCALL(RtlReAllocateHeap, 16)
     78SUPHARNT_IMPORT_STDCALL(RtlRestoreLastWin32Error, 4)
    7079SUPHARNT_IMPORT_STDCALL(RtlSetDaclSecurityDescriptor, 16)
     80SUPHARNT_IMPORT_STDCALL(RtlSetLastWin32Error, 4)
     81SUPHARNT_IMPORT_STDCALL(RtlSetLastWin32ErrorAndNtStatusFromNtStatus, 4)
     82SUPHARNT_IMPORT_STDCALL(RtlSizeHeap, 12)
    7183SUPHARNT_IMPORT_STDCALL(RtlSubAuthoritySid, 8)
    7284
  • trunk/src/VBox/Runtime/r3/win/ntdll-mini-implib.def

    r52877 r52940  
    8787    RtlAddAccessAllowedAce                ;;= _RtlAddAccessAllowedAce@16
    8888    RtlAddAccessDeniedAce                 ;;= _RtlAddAccessDeniedAce@16
     89    RtlAllocateHeap                       ;;= _RtlAllocateHeap@12
     90    RtlCompactHeap                        ;;= _RtlCompactHeap@8
    8991    RtlCopySid                            ;;= _RtlCopySid@12
    9092    RtlCreateAcl                          ;;= _RtlCreateAcl@12
     
    9698    RtlDosApplyFileIsolationRedirection_Ustr ;;= _RtlDosApplyFileIsolationRedirection_Ustr@36
    9799    RtlEqualSid                           ;;= _RtlEqualSid@8
     100    RtlExitProcess                        ;;= _RtlExitProcess@4
     101    RtlExitThread                         ;;= _RtlExitThread@4
    98102    RtlExpandEnvironmentStrings_U         ;;= _RtlExpandEnvironmentStrings_U@16
     103    RtlFreeHeap                           ;;= _RtlFreeHeap@12
    99104    RtlFreeUnicodeString                  ;;= _RtlFreeUnicodeString@4
     105    RtlGetLastNtStatus                    ;;= _RtlGetLastNtStatus@0
     106    RtlGetLastWin32Error                  ;;= _RtlGetLastWin32Error@0
    100107    RtlGetVersion                         ;;= _RtlGetVersion@4
    101108    RtlInitializeSid                      ;;= _RtlInitializeSid@12
    102109    RtlNtStatusToDosError                 ;;= _RtlNtStatusToDosError@4
     110    RtlReAllocateHeap                     ;;= _RtlReAllocateHeap@16
     111    RtlRestoreLastWin32Error              ;;= _RtlRestoreLastWin32Error@4
    103112    RtlSetDaclSecurityDescriptor          ;;= _RtlSetDaclSecurityDescriptor@16
     113    RtlSetLastWin32Error                  ;;= _RtlSetLastWin32Error@4
     114    RtlSetLastWin32ErrorAndNtStatusFromNtStatus ;;= _RtlSetLastWin32ErrorAndNtStatusFromNtStatus@4
     115    RtlSizeHeap                           ;;= _RtlSizeHeap@12
    104116    RtlSubAuthoritySid                    ;;= _RtlSubAuthoritySid@8
    105117
    106 
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette