VirtualBox

Changeset 51907 in vbox


Ignore:
Timestamp:
Jul 7, 2014 5:15:05 PM (10 years ago)
Author:
vboxsync
Message:

SUP: NT status code conversion fix + cleanups.

Location:
trunk/src/VBox/HostDrivers/Support
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/HostDrivers/Support/SUPDrvIOC.h

    r51488 r51907  
    5757# define SUP_CTL_CODE_FAST(Function)            CTL_CODE(FILE_DEVICE_UNKNOWN, (Function) | SUP_IOCTL_FLAG, METHOD_NEITHER,  FILE_WRITE_ACCESS)
    5858# define SUP_CTL_CODE_NO_SIZE(uIOCtl)           (uIOCtl)
     59
     60# define SUP_NT_STATUS_BASE                     UINT32_C(0xe9860000) /**< STATUS_SEVERITY_ERROR + C-bit + facility 0x986. */
     61# define SUP_NT_STATUS_IS_VBOX(a_rcNt)          ( ((uint32_t)(a_rcNt) & 0xffff0000) == SUP_NT_STATUS_BASE )
     62# define SUP_NT_STATUS_TO_VBOX(a_rcNt)          ( (int)((uint32_t)(a_rcNt) | UINT32_C(0xffff0000)) )
    5963
    6064#elif defined(RT_OS_SOLARIS)
  • trunk/src/VBox/HostDrivers/Support/win/SUPDrv-win.cpp

    r51786 r51907  
    20062006    {
    20072007        if (((uint32_t)rc & UINT32_C(0xffff0000)) == UINT32_C(0xffff0000))
    2008             return (NTSTATUS)( ((uint32_t)rc & UINT32_C(0xffff))
    2009                               | UINT32_C(0xe9860000) ); /* STATUS_SEVERITY_ERROR + C-bit + facility 0x986 */
     2008            return (NTSTATUS)( ((uint32_t)rc & UINT32_C(0xffff)) | SUP_NT_STATUS_BASE );
    20102009    }
    20112010    return STATUS_UNSUCCESSFUL;
  • trunk/src/VBox/HostDrivers/Support/win/SUPLib-win.cpp

    r51770 r51907  
    181181                    return VERR_SUPDRV_HARDENING_EVIL_HANDLE;
    182182                default:
    183 
    184                     return rcNt;
     183                    if (SUP_NT_STATUS_IS_VBOX(rcNt)) /* See VBoxDrvNtErr2NtStatus. */
     184                        return SUP_NT_STATUS_TO_VBOX(rcNt);
    185185                    return VERR_VM_DRIVER_OPEN_ERROR;
    186186            }
     
    696696
    697697    /* See VBoxDrvNtErr2NtStatus. */
    698     if (((uint32_t)rcNt & 0xffff0000) == UINT32_C(0xe9860000)) /** @todo defines for these? */
    699         return (int)((uint32_t)rcNt | UINT32_C(0xffff0000));
     698    if (SUP_NT_STATUS_IS_VBOX(rcNt))
     699        return SUP_NT_STATUS_TO_VBOX(rcNt);
    700700
    701701    /* Fall back on IPRT for the rest. */
  • trunk/src/VBox/HostDrivers/Support/win/SUPR3HardenedMain-win.cpp

    r51770 r51907  
    4848#include "SUPLibInternal.h"
    4949#include "win/SUPHardenedVerify-win.h"
     50#include "../SUPDrvIOC.h"
    5051
    5152
     
    14221423    if (!NT_SUCCESS(rcNt))
    14231424    {
    1424         int rc;
    1425         if ((rcNt & UINT32_C(0xffff0000)) == 0xe9860000) /* See VBoxDrvNtErr2NtStatus. */ /** @todo #defines  for VBoxDrvNtErr2NtStatus mangling */
    1426             rc = (int)(rcNt | UINT32_C(0xffff0000));
     1425        int rc = VERR_OPEN_FAILED;
     1426        if (SUP_NT_STATUS_IS_VBOX(rcNt)) /* See VBoxDrvNtErr2NtStatus. */
     1427            rc = SUP_NT_STATUS_TO_VBOX(rcNt);
    14271428        else
    14281429            supR3HardenedFatalMsg("supR3HardenedWinReSpawn", kSupInitOp_Driver, VERR_OPEN_FAILED,
    14291430                                  "NtCreateFile(%ls) failed: %#x\n", s_wszName, rcNt);
    1430         supR3HardenedFatalMsg("supR3HardenedWinReSpawn", kSupInitOp_Driver, VERR_OPEN_FAILED,
     1431        supR3HardenedFatalMsg("supR3HardenedWinReSpawn", kSupInitOp_Driver, rc,
    14311432                              "NtCreateFile(%ls) failed: %Rrc (rcNt=%#x)\n", s_wszName, rc, rcNt);
    14321433    }
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