Changeset 25336 in vbox for trunk/src/VBox/HostDrivers/Support
- Timestamp:
- Dec 11, 2009 5:09:23 PM (15 years ago)
- Location:
- trunk/src/VBox/HostDrivers/Support
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/HostDrivers/Support/Makefile.kmk
r25300 r25336 175 175 VBoxDrv_DEFS = IN_RT_R0 IN_SUP_R0 SUPDRV_WITH_RELEASE_LOGGER 176 176 ifdef VBOX_WITHOUT_NATIVE_R0_LOADER 177 VBoxDrv_DEFS .amd64 = RT_WITH_W64_UNWIND_HACKVBOX_WITHOUT_NATIVE_R0_LOADER177 VBoxDrv_DEFS += VBOX_WITHOUT_NATIVE_R0_LOADER 178 178 endif 179 179 ifdef VBOX_WITH_VMMR0_DISABLE_PREEMPTION -
trunk/src/VBox/HostDrivers/Support/SUPDrv.c
r25307 r25336 5 5 6 6 /* 7 * Copyright (C) 2006-200 7Sun Microsystems, Inc.7 * Copyright (C) 2006-2009 Sun Microsystems, Inc. 8 8 * 9 9 * This file is part of VirtualBox Open Source Edition (OSE), as … … 113 113 static DECLCALLBACK(void) supdrvGipMpEvent(RTMPEVENT enmEvent, RTCPUID idCpu, void *pvUser); 114 114 115 #ifdef RT_WITH_W64_UNWIND_HACK116 DECLASM(int) supdrvNtWrapVMMR0EntryEx(PFNRT pfnVMMR0EntryEx, PVM pVM, VMCPUID idCpu, unsigned uOperation, PSUPVMMR0REQHDR pReq, uint64_t u64Arg, PSUPDRVSESSION pSession);117 DECLASM(int) supdrvNtWrapVMMR0EntryFast(PFNRT pfnVMMR0EntryFast, PVM pVM, VMCPUID idCpu, unsigned uOperation);118 DECLASM(void) supdrvNtWrapObjDestructor(PFNRT pfnDestruction, void *pvObj, void *pvUser1, void *pvUser2);119 DECLASM(void *) supdrvNtWrapQueryFactoryInterface(PFNRT pfnQueryFactoryInterface, struct SUPDRVFACTORY const *pSupDrvFactory, PSUPDRVSESSION pSession, const char *pszInterfaceUuid);120 DECLASM(int) supdrvNtWrapModuleInit(PFNRT pfnModuleInit);121 DECLASM(void) supdrvNtWrapModuleTerm(PFNRT pfnModuleTerm);122 DECLASM(int) supdrvNtWrapServiceReqHandler(PFNRT pfnServiceReqHandler, PSUPDRVSESSION pSession, uint32_t uOperation, uint64_t u64Arg, PSUPR0SERVICEREQHDR pReqHdr);123 124 DECLASM(int) UNWIND_WRAP(SUPR0ComponentRegisterFactory)(PSUPDRVSESSION pSession, PCSUPDRVFACTORY pFactory);125 DECLASM(int) UNWIND_WRAP(SUPR0ComponentDeregisterFactory)(PSUPDRVSESSION pSession, PCSUPDRVFACTORY pFactory);126 DECLASM(int) UNWIND_WRAP(SUPR0ComponentQueryFactory)(PSUPDRVSESSION pSession, const char *pszName, const char *pszInterfaceUuid, void **ppvFactoryIf);127 DECLASM(void *) UNWIND_WRAP(SUPR0ObjRegister)(PSUPDRVSESSION pSession, SUPDRVOBJTYPE enmType, PFNSUPDRVDESTRUCTOR pfnDestructor, void *pvUser1, void *pvUser2);128 DECLASM(int) UNWIND_WRAP(SUPR0ObjAddRef)(void *pvObj, PSUPDRVSESSION pSession);129 DECLASM(int) UNWIND_WRAP(SUPR0ObjAddRefEx)(void *pvObj, PSUPDRVSESSION pSession, bool fNoPreempt);130 DECLASM(int) UNWIND_WRAP(SUPR0ObjRelease)(void *pvObj, PSUPDRVSESSION pSession);131 DECLASM(int) UNWIND_WRAP(SUPR0ObjVerifyAccess)(void *pvObj, PSUPDRVSESSION pSession, const char *pszObjName);132 DECLASM(int) UNWIND_WRAP(SUPR0LockMem)(PSUPDRVSESSION pSession, RTR3PTR pvR3, uint32_t cPages, PRTHCPHYS paPages);133 DECLASM(int) UNWIND_WRAP(SUPR0UnlockMem)(PSUPDRVSESSION pSession, RTR3PTR pvR3);134 DECLASM(int) UNWIND_WRAP(SUPR0ContAlloc)(PSUPDRVSESSION pSession, uint32_t cPages, PRTR0PTR ppvR0, PRTR3PTR ppvR3, PRTHCPHYS pHCPhys);135 DECLASM(int) UNWIND_WRAP(SUPR0ContFree)(PSUPDRVSESSION pSession, RTHCUINTPTR uPtr);136 DECLASM(int) UNWIND_WRAP(SUPR0LowAlloc)(PSUPDRVSESSION pSession, uint32_t cPages, PRTR0PTR ppvR0, PRTR3PTR ppvR3, PRTHCPHYS paPages);137 DECLASM(int) UNWIND_WRAP(SUPR0LowFree)(PSUPDRVSESSION pSession, RTHCUINTPTR uPtr);138 DECLASM(int) UNWIND_WRAP(SUPR0MemAlloc)(PSUPDRVSESSION pSession, uint32_t cb, PRTR0PTR ppvR0, PRTR3PTR ppvR3);139 DECLASM(int) UNWIND_WRAP(SUPR0MemGetPhys)(PSUPDRVSESSION pSession, RTHCUINTPTR uPtr, PSUPPAGE paPages);140 DECLASM(int) UNWIND_WRAP(SUPR0MemFree)(PSUPDRVSESSION pSession, RTHCUINTPTR uPtr);141 DECLASM(int) UNWIND_WRAP(SUPR0PageAllocEx)(PSUPDRVSESSION pSession, uint32_t cPages, uint32_t fFlags, PRTR3PTR ppvR3, PRTR0PTR ppvR0, PRTHCPHYS paPages);142 DECLASM(int) UNWIND_WRAP(SUPR0PageFree)(PSUPDRVSESSION pSession, RTR3PTR pvR3);143 //DECLASM(int) UNWIND_WRAP(SUPR0Printf)(const char *pszFormat, ...);144 DECLASM(int) UNWIND_WRAP(SUPSemEventCreate)(PSUPDRVSESSION pSession, PSUPSEMEVENT phEvent);145 DECLASM(int) UNWIND_WRAP(SUPSemEventClose)(PSUPDRVSESSION pSession, SUPSEMEVENT hEvent);146 DECLASM(int) UNWIND_WRAP(SUPSemEventSignal)(PSUPDRVSESSION pSession, SUPSEMEVENT hEvent);147 DECLASM(int) UNWIND_WRAP(SUPSemEventWait)(PSUPDRVSESSION pSession, SUPSEMEVENT hEvent, uint32_t cMillies);148 DECLASM(int) UNWIND_WRAP(SUPSemEventWaitNoResume)(PSUPDRVSESSION pSession, SUPSEMEVENT hEvent, uint32_t cMillies);149 DECLASM(int) UNWIND_WRAP(SUPSemEventMultiCreate)(PSUPDRVSESSION pSession, PSUPSEMEVENTMULTI phEventMulti);150 DECLASM(int) UNWIND_WRAP(SUPSemEventMultiClose)(PSUPDRVSESSION pSession, SUPSEMEVENTMULTI hEventMulti);151 DECLASM(int) UNWIND_WRAP(SUPSemEventMultiSignal)(PSUPDRVSESSION pSession, SUPSEMEVENTMULTI hEventMulti);152 DECLASM(int) UNWIND_WRAP(SUPSemEventMultiReset)(PSUPDRVSESSION pSession, SUPSEMEVENTMULTI hEventMulti);153 DECLASM(int) UNWIND_WRAP(SUPSemEventMultiWait)(PSUPDRVSESSION pSession, SUPSEMEVENTMULTI hEventMulti, uint32_t cMillies);154 DECLASM(int) UNWIND_WRAP(SUPSemEventMultiWaitNoResume)(PSUPDRVSESSION pSession, SUPSEMEVENTMULTI hEventMulti, uint32_t cMillies);155 DECLASM(SUPPAGINGMODE) UNWIND_WRAP(SUPR0GetPagingMode)(void);156 DECLASM(void *) UNWIND_WRAP(RTMemAlloc)(size_t cb) RT_NO_THROW;157 DECLASM(void *) UNWIND_WRAP(RTMemAllocZ)(size_t cb) RT_NO_THROW;158 DECLASM(void) UNWIND_WRAP(RTMemFree)(void *pv) RT_NO_THROW;159 DECLASM(void *) UNWIND_WRAP(RTMemDup)(const void *pvSrc, size_t cb) RT_NO_THROW;160 DECLASM(void *) UNWIND_WRAP(RTMemDupEx)(const void *pvSrc, size_t cbSrc, size_t cbExtra) RT_NO_THROW;161 DECLASM(void *) UNWIND_WRAP(RTMemRealloc)(void *pvOld, size_t cbNew) RT_NO_THROW;162 DECLASM(int) UNWIND_WRAP(RTR0MemObjAllocLow)(PRTR0MEMOBJ pMemObj, size_t cb, bool fExecutable);163 DECLASM(int) UNWIND_WRAP(RTR0MemObjAllocPage)(PRTR0MEMOBJ pMemObj, size_t cb, bool fExecutable);164 DECLASM(int) UNWIND_WRAP(RTR0MemObjAllocPhys)(PRTR0MEMOBJ pMemObj, size_t cb, RTHCPHYS PhysHighest);165 DECLASM(int) UNWIND_WRAP(RTR0MemObjAllocPhysNC)(PRTR0MEMOBJ pMemObj, size_t cb, RTHCPHYS PhysHighest);166 DECLASM(int) UNWIND_WRAP(RTR0MemObjAllocCont)(PRTR0MEMOBJ pMemObj, size_t cb, bool fExecutable);167 DECLASM(int) UNWIND_WRAP(RTR0MemObjEnterPhys)(PRTR0MEMOBJ pMemObj, RTHCPHYS Phys, size_t cb);168 DECLASM(int) UNWIND_WRAP(RTR0MemObjLockUser)(PRTR0MEMOBJ pMemObj, RTR3PTR R3Ptr, size_t cb, uint32_t fFlags, RTR0PROCESS R0Process);169 DECLASM(int) UNWIND_WRAP(RTR0MemObjMapKernel)(PRTR0MEMOBJ pMemObj, RTR0MEMOBJ MemObjToMap, void *pvFixed, size_t uAlignment, unsigned fProt);170 DECLASM(int) UNWIND_WRAP(RTR0MemObjMapKernelEx)(PRTR0MEMOBJ pMemObj, RTR0MEMOBJ MemObjToMap, void *pvFixed, size_t uAlignment, unsigned fProt, size_t offSub, size_t cbSub);171 DECLASM(int) UNWIND_WRAP(RTR0MemObjMapUser)(PRTR0MEMOBJ pMemObj, RTR0MEMOBJ MemObjToMap, RTR3PTR R3PtrFixed, size_t uAlignment, unsigned fProt, RTR0PROCESS R0Process);172 DECLASM(int) UNWIND_WRAP(RTR0MemObjProtect)(RTR0MEMOBJ hMemObj, size_t offsub, size_t cbSub, uint32_t fProt);173 /*DECLASM(void *) UNWIND_WRAP(RTR0MemObjAddress)(RTR0MEMOBJ MemObj); - not necessary */174 /*DECLASM(RTR3PTR) UNWIND_WRAP(RTR0MemObjAddressR3)(RTR0MEMOBJ MemObj); - not necessary */175 /*DECLASM(size_t) UNWIND_WRAP(RTR0MemObjSize)(RTR0MEMOBJ MemObj); - not necessary */176 /*DECLASM(bool) UNWIND_WRAP(RTR0MemObjIsMapping)(RTR0MEMOBJ MemObj); - not necessary */177 /*DECLASM(RTHCPHYS) UNWIND_WRAP(RTR0MemObjGetPagePhysAddr)(RTR0MEMOBJ MemObj, size_t iPage); - not necessary */178 DECLASM(int) UNWIND_WRAP(RTR0MemObjFree)(RTR0MEMOBJ MemObj, bool fFreeMappings);179 DECLASM(int) UNWIND_WRAP(RTR0MemUserCopyFrom)(void *pvDst, RTR3PTR R3PtrSrc, size_t cb);180 DECLASM(int) UNWIND_WRAP(RTR0MemUserCopyTo)(RTR3PTR R3PtrDst, void const *pvSrc, size_t cb);181 /* RTR0MemUserIsValidAddr - not necessary */182 /* RTR0MemKernelIsValidAddr - not necessary */183 /* RTR0MemAreKrnlAndUsrDifferent - not necessary */184 /* RTProcSelf - not necessary */185 /* RTR0ProcHandleSelf - not necessary */186 DECLASM(int) UNWIND_WRAP(RTSemFastMutexCreate)(PRTSEMFASTMUTEX pMutexSem);187 DECLASM(int) UNWIND_WRAP(RTSemFastMutexDestroy)(RTSEMFASTMUTEX MutexSem);188 DECLASM(int) UNWIND_WRAP(RTSemFastMutexRequest)(RTSEMFASTMUTEX MutexSem);189 DECLASM(int) UNWIND_WRAP(RTSemFastMutexRelease)(RTSEMFASTMUTEX MutexSem);190 DECLASM(int) UNWIND_WRAP(RTSemEventCreate)(PRTSEMEVENT pEventSem);191 DECLASM(int) UNWIND_WRAP(RTSemEventSignal)(RTSEMEVENT EventSem);192 DECLASM(int) UNWIND_WRAP(RTSemEventWait)(RTSEMEVENT EventSem, unsigned cMillies);193 DECLASM(int) UNWIND_WRAP(RTSemEventWaitNoResume)(RTSEMEVENT EventSem, unsigned cMillies);194 DECLASM(int) UNWIND_WRAP(RTSemEventDestroy)(RTSEMEVENT EventSem);195 DECLASM(int) UNWIND_WRAP(RTSemEventMultiCreate)(PRTSEMEVENTMULTI pEventMultiSem);196 DECLASM(int) UNWIND_WRAP(RTSemEventMultiSignal)(RTSEMEVENTMULTI EventMultiSem);197 DECLASM(int) UNWIND_WRAP(RTSemEventMultiReset)(RTSEMEVENTMULTI EventMultiSem);198 DECLASM(int) UNWIND_WRAP(RTSemEventMultiWait)(RTSEMEVENTMULTI EventMultiSem, unsigned cMillies);199 DECLASM(int) UNWIND_WRAP(RTSemEventMultiWaitNoResume)(RTSEMEVENTMULTI EventMultiSem, unsigned cMillies);200 DECLASM(int) UNWIND_WRAP(RTSemEventMultiDestroy)(RTSEMEVENTMULTI EventMultiSem);201 DECLASM(int) UNWIND_WRAP(RTSpinlockCreate)(PRTSPINLOCK pSpinlock);202 DECLASM(int) UNWIND_WRAP(RTSpinlockDestroy)(RTSPINLOCK Spinlock);203 DECLASM(void) UNWIND_WRAP(RTSpinlockAcquire)(RTSPINLOCK Spinlock, PRTSPINLOCKTMP pTmp);204 DECLASM(void) UNWIND_WRAP(RTSpinlockRelease)(RTSPINLOCK Spinlock, PRTSPINLOCKTMP pTmp);205 DECLASM(void) UNWIND_WRAP(RTSpinlockAcquireNoInts)(RTSPINLOCK Spinlock, PRTSPINLOCKTMP pTmp);206 DECLASM(void) UNWIND_WRAP(RTSpinlockReleaseNoInts)(RTSPINLOCK Spinlock, PRTSPINLOCKTMP pTmp);207 /* RTTimeNanoTS - not necessary */208 /* RTTimeMilliTS - not necessary */209 /* RTTimeSystemNanoTS - not necessary */210 /* RTTimeSystemMilliTS - not necessary */211 /* RTThreadNativeSelf - not necessary */212 DECLASM(int) UNWIND_WRAP(RTThreadSleep)(unsigned cMillies);213 DECLASM(bool) UNWIND_WRAP(RTThreadYield)(void);214 #if 0215 /* RTThreadSelf - not necessary */216 DECLASM(int) UNWIND_WRAP(RTThreadCreate)(PRTTHREAD pThread, PFNRTTHREAD pfnThread, void *pvUser, size_t cbStack,217 RTTHREADTYPE enmType, unsigned fFlags, const char *pszName);218 DECLASM(RTNATIVETHREAD) UNWIND_WRAP(RTThreadGetNative)(RTTHREAD Thread);219 DECLASM(int) UNWIND_WRAP(RTThreadWait)(RTTHREAD Thread, unsigned cMillies, int *prc);220 DECLASM(int) UNWIND_WRAP(RTThreadWaitNoResume)(RTTHREAD Thread, unsigned cMillies, int *prc);221 DECLASM(const char *) UNWIND_WRAP(RTThreadGetName)(RTTHREAD Thread);222 DECLASM(const char *) UNWIND_WRAP(RTThreadSelfName)(void);223 DECLASM(RTTHREADTYPE) UNWIND_WRAP(RTThreadGetType)(RTTHREAD Thread);224 DECLASM(int) UNWIND_WRAP(RTThreadUserSignal)(RTTHREAD Thread);225 DECLASM(int) UNWIND_WRAP(RTThreadUserReset)(RTTHREAD Thread);226 DECLASM(int) UNWIND_WRAP(RTThreadUserWait)(RTTHREAD Thread, unsigned cMillies);227 DECLASM(int) UNWIND_WRAP(RTThreadUserWaitNoResume)(RTTHREAD Thread, unsigned cMillies);228 #endif229 /* RTThreadPreemptIsEnabled - not necessary */230 /* RTThreadPreemptIsPending - not necessary */231 /* RTThreadPreemptIsPendingTrusty - not necessary */232 DECLASM(void) UNWIND_WRAP(RTThreadPreemptDisable)(PRTTHREADPREEMPTSTATE pState);233 DECLASM(void) UNWIND_WRAP(RTThreadPreemptRestore)(RTTHREADPREEMPTSTATE pState);234 /* RTLogDefaultInstance - a bit of a gamble, but we do not want the overhead! */235 /* RTMpCpuId - not necessary */236 /* RTMpCpuIdFromSetIndex - not necessary */237 /* RTMpCpuIdToSetIndex - not necessary */238 /* RTMpIsCpuPossible - not necessary */239 /* RTMpGetCount - not necessary */240 /* RTMpGetMaxCpuId - not necessary */241 /* RTMpGetOnlineCount - not necessary */242 /* RTMpGetOnlineSet - not necessary */243 /* RTMpGetSet - not necessary */244 /* RTMpIsCpuOnline - not necessary */245 DECLASM(int) UNWIND_WRAP(RTMpIsCpuWorkPending)(void);246 DECLASM(int) UNWIND_WRAP(RTMpOnAll)(PFNRTMPWORKER pfnWorker, void *pvUser1, void *pvUser2);247 DECLASM(int) UNWIND_WRAP(RTMpOnOthers)(PFNRTMPWORKER pfnWorker, void *pvUser1, void *pvUser2);248 DECLASM(int) UNWIND_WRAP(RTMpOnSpecific)(RTCPUID idCpu, PFNRTMPWORKER pfnWorker, void *pvUser1, void *pvUser2);249 DECLASM(int) UNWIND_WRAP(RTMpPokeCpu)(RTCPUID idCpu);250 /* RTLogRelDefaultInstance - not necessary. */251 DECLASM(int) UNWIND_WRAP(RTLogSetDefaultInstanceThread)(PRTLOGGER pLogger, uintptr_t uKey);252 /* RTLogLogger - can't wrap this buster. */253 /* RTLogLoggerEx - can't wrap this buster. */254 DECLASM(void) UNWIND_WRAP(RTLogLoggerExV)(PRTLOGGER pLogger, unsigned fFlags, unsigned iGroup, const char *pszFormat, va_list args);255 /* RTLogPrintf - can't wrap this buster. */ /** @todo provide va_list log wrappers in RuntimeR0. */256 DECLASM(void) UNWIND_WRAP(RTLogPrintfV)(const char *pszFormat, va_list args);257 DECLASM(void) UNWIND_WRAP(AssertMsg1)(const char *pszExpr, unsigned uLine, const char *pszFile, const char *pszFunction);258 /* AssertMsg2 - can't wrap this buster. */259 #endif /* RT_WITH_W64_UNWIND_HACK */260 261 115 262 116 /******************************************************************************* … … 284 138 { "SUPR0AbsKernelGS", (void *)0 }, 285 139 /* Normal function pointers: */ 286 { "SUPR0ComponentRegisterFactory", (void *) UNWIND_WRAP(SUPR0ComponentRegisterFactory)},287 { "SUPR0ComponentDeregisterFactory", (void *) UNWIND_WRAP(SUPR0ComponentDeregisterFactory)},288 { "SUPR0ComponentQueryFactory", (void *) UNWIND_WRAP(SUPR0ComponentQueryFactory)},289 { "SUPR0ObjRegister", (void *) UNWIND_WRAP(SUPR0ObjRegister)},290 { "SUPR0ObjAddRef", (void *) UNWIND_WRAP(SUPR0ObjAddRef)},291 { "SUPR0ObjAddRefEx", (void *) UNWIND_WRAP(SUPR0ObjAddRefEx)},292 { "SUPR0ObjRelease", (void *) UNWIND_WRAP(SUPR0ObjRelease)},293 { "SUPR0ObjVerifyAccess", (void *) UNWIND_WRAP(SUPR0ObjVerifyAccess)},294 { "SUPR0LockMem", (void *) UNWIND_WRAP(SUPR0LockMem)},295 { "SUPR0UnlockMem", (void *) UNWIND_WRAP(SUPR0UnlockMem)},296 { "SUPR0ContAlloc", (void *) UNWIND_WRAP(SUPR0ContAlloc)},297 { "SUPR0ContFree", (void *) UNWIND_WRAP(SUPR0ContFree)},298 { "SUPR0LowAlloc", (void *) UNWIND_WRAP(SUPR0LowAlloc)},299 { "SUPR0LowFree", (void *) UNWIND_WRAP(SUPR0LowFree)},300 { "SUPR0MemAlloc", (void *) UNWIND_WRAP(SUPR0MemAlloc)},301 { "SUPR0MemGetPhys", (void *) UNWIND_WRAP(SUPR0MemGetPhys)},302 { "SUPR0MemFree", (void *) UNWIND_WRAP(SUPR0MemFree)},303 { "SUPR0PageAllocEx", (void *) UNWIND_WRAP(SUPR0PageAllocEx)},304 { "SUPR0PageFree", (void *) UNWIND_WRAP(SUPR0PageFree)},140 { "SUPR0ComponentRegisterFactory", (void *)SUPR0ComponentRegisterFactory }, 141 { "SUPR0ComponentDeregisterFactory", (void *)SUPR0ComponentDeregisterFactory }, 142 { "SUPR0ComponentQueryFactory", (void *)SUPR0ComponentQueryFactory }, 143 { "SUPR0ObjRegister", (void *)SUPR0ObjRegister }, 144 { "SUPR0ObjAddRef", (void *)SUPR0ObjAddRef }, 145 { "SUPR0ObjAddRefEx", (void *)SUPR0ObjAddRefEx }, 146 { "SUPR0ObjRelease", (void *)SUPR0ObjRelease }, 147 { "SUPR0ObjVerifyAccess", (void *)SUPR0ObjVerifyAccess }, 148 { "SUPR0LockMem", (void *)SUPR0LockMem }, 149 { "SUPR0UnlockMem", (void *)SUPR0UnlockMem }, 150 { "SUPR0ContAlloc", (void *)SUPR0ContAlloc }, 151 { "SUPR0ContFree", (void *)SUPR0ContFree }, 152 { "SUPR0LowAlloc", (void *)SUPR0LowAlloc }, 153 { "SUPR0LowFree", (void *)SUPR0LowFree }, 154 { "SUPR0MemAlloc", (void *)SUPR0MemAlloc }, 155 { "SUPR0MemGetPhys", (void *)SUPR0MemGetPhys }, 156 { "SUPR0MemFree", (void *)SUPR0MemFree }, 157 { "SUPR0PageAllocEx", (void *)SUPR0PageAllocEx }, 158 { "SUPR0PageFree", (void *)SUPR0PageFree }, 305 159 { "SUPR0Printf", (void *)SUPR0Printf }, /** @todo needs wrapping? */ 306 { "SUPSemEventCreate", (void *) UNWIND_WRAP(SUPSemEventCreate)},307 { "SUPSemEventClose", (void *) UNWIND_WRAP(SUPSemEventClose)},308 { "SUPSemEventSignal", (void *) UNWIND_WRAP(SUPSemEventSignal)},309 { "SUPSemEventWait", (void *) UNWIND_WRAP(SUPSemEventWait)},310 { "SUPSemEventWaitNoResume", (void *) UNWIND_WRAP(SUPSemEventWaitNoResume)},311 { "SUPSemEventMultiCreate", (void *) UNWIND_WRAP(SUPSemEventMultiCreate)},312 { "SUPSemEventMultiClose", (void *) UNWIND_WRAP(SUPSemEventMultiClose)},313 { "SUPSemEventMultiSignal", (void *) UNWIND_WRAP(SUPSemEventMultiSignal)},314 { "SUPSemEventMultiReset", (void *) UNWIND_WRAP(SUPSemEventMultiReset)},315 { "SUPSemEventMultiWait", (void *) UNWIND_WRAP(SUPSemEventMultiWait)},316 { "SUPSemEventMultiWaitNoResume", (void *) UNWIND_WRAP(SUPSemEventMultiWaitNoResume)},317 { "SUPR0GetPagingMode", (void *) UNWIND_WRAP(SUPR0GetPagingMode)},160 { "SUPSemEventCreate", (void *)SUPSemEventCreate }, 161 { "SUPSemEventClose", (void *)SUPSemEventClose }, 162 { "SUPSemEventSignal", (void *)SUPSemEventSignal }, 163 { "SUPSemEventWait", (void *)SUPSemEventWait }, 164 { "SUPSemEventWaitNoResume", (void *)SUPSemEventWaitNoResume }, 165 { "SUPSemEventMultiCreate", (void *)SUPSemEventMultiCreate }, 166 { "SUPSemEventMultiClose", (void *)SUPSemEventMultiClose }, 167 { "SUPSemEventMultiSignal", (void *)SUPSemEventMultiSignal }, 168 { "SUPSemEventMultiReset", (void *)SUPSemEventMultiReset }, 169 { "SUPSemEventMultiWait", (void *)SUPSemEventMultiWait }, 170 { "SUPSemEventMultiWaitNoResume", (void *)SUPSemEventMultiWaitNoResume }, 171 { "SUPR0GetPagingMode", (void *)SUPR0GetPagingMode }, 318 172 { "SUPR0EnableVTx", (void *)SUPR0EnableVTx }, 319 173 { "SUPGetGIP", (void *)SUPGetGIP }, 320 174 { "g_pSUPGlobalInfoPage", (void *)&g_pSUPGlobalInfoPage }, 321 { "RTMemAlloc", (void *) UNWIND_WRAP(RTMemAlloc)},322 { "RTMemAllocZ", (void *) UNWIND_WRAP(RTMemAllocZ)},323 { "RTMemFree", (void *) UNWIND_WRAP(RTMemFree)},324 /*{ "RTMemDup", (void *) UNWIND_WRAP(RTMemDup)},325 { "RTMemDupEx", (void *) UNWIND_WRAP(RTMemDupEx)},*/326 { "RTMemRealloc", (void *) UNWIND_WRAP(RTMemRealloc)},327 { "RTR0MemObjAllocLow", (void *) UNWIND_WRAP(RTR0MemObjAllocLow)},328 { "RTR0MemObjAllocPage", (void *) UNWIND_WRAP(RTR0MemObjAllocPage)},329 { "RTR0MemObjAllocPhys", (void *) UNWIND_WRAP(RTR0MemObjAllocPhys)},330 { "RTR0MemObjAllocPhysNC", (void *) UNWIND_WRAP(RTR0MemObjAllocPhysNC)},331 { "RTR0MemObjAllocCont", (void *) UNWIND_WRAP(RTR0MemObjAllocCont)},332 { "RTR0MemObjEnterPhys", (void *) UNWIND_WRAP(RTR0MemObjEnterPhys)},333 { "RTR0MemObjLockUser", (void *) UNWIND_WRAP(RTR0MemObjLockUser)},334 { "RTR0MemObjMapKernel", (void *) UNWIND_WRAP(RTR0MemObjMapKernel)},335 { "RTR0MemObjMapKernelEx", (void *) UNWIND_WRAP(RTR0MemObjMapKernelEx)},336 { "RTR0MemObjMapUser", (void *) UNWIND_WRAP(RTR0MemObjMapUser)},337 { "RTR0MemObjProtect", (void *) UNWIND_WRAP(RTR0MemObjProtect)},175 { "RTMemAlloc", (void *)RTMemAlloc }, 176 { "RTMemAllocZ", (void *)RTMemAllocZ }, 177 { "RTMemFree", (void *)RTMemFree }, 178 /*{ "RTMemDup", (void *)RTMemDup }, 179 { "RTMemDupEx", (void *)RTMemDupEx },*/ 180 { "RTMemRealloc", (void *)RTMemRealloc }, 181 { "RTR0MemObjAllocLow", (void *)RTR0MemObjAllocLow }, 182 { "RTR0MemObjAllocPage", (void *)RTR0MemObjAllocPage }, 183 { "RTR0MemObjAllocPhys", (void *)RTR0MemObjAllocPhys }, 184 { "RTR0MemObjAllocPhysNC", (void *)RTR0MemObjAllocPhysNC }, 185 { "RTR0MemObjAllocCont", (void *)RTR0MemObjAllocCont }, 186 { "RTR0MemObjEnterPhys", (void *)RTR0MemObjEnterPhys }, 187 { "RTR0MemObjLockUser", (void *)RTR0MemObjLockUser }, 188 { "RTR0MemObjMapKernel", (void *)RTR0MemObjMapKernel }, 189 { "RTR0MemObjMapKernelEx", (void *)RTR0MemObjMapKernelEx }, 190 { "RTR0MemObjMapUser", (void *)RTR0MemObjMapUser }, 191 { "RTR0MemObjProtect", (void *)RTR0MemObjProtect }, 338 192 { "RTR0MemObjAddress", (void *)RTR0MemObjAddress }, 339 193 { "RTR0MemObjAddressR3", (void *)RTR0MemObjAddressR3 }, … … 341 195 { "RTR0MemObjIsMapping", (void *)RTR0MemObjIsMapping }, 342 196 { "RTR0MemObjGetPagePhysAddr", (void *)RTR0MemObjGetPagePhysAddr }, 343 { "RTR0MemObjFree", (void *) UNWIND_WRAP(RTR0MemObjFree)},344 { "RTR0MemUserCopyFrom", (void *) UNWIND_WRAP(RTR0MemUserCopyFrom)},345 { "RTR0MemUserCopyTo", (void *) UNWIND_WRAP(RTR0MemUserCopyTo)},197 { "RTR0MemObjFree", (void *)RTR0MemObjFree }, 198 { "RTR0MemUserCopyFrom", (void *)RTR0MemUserCopyFrom }, 199 { "RTR0MemUserCopyTo", (void *)RTR0MemUserCopyTo }, 346 200 { "RTR0MemUserIsValidAddr", (void *)RTR0MemUserIsValidAddr }, 347 201 { "RTR0MemKernelIsValidAddr", (void *)RTR0MemKernelIsValidAddr }, … … 355 209 { "RTProcSelf", (void *)RTProcSelf }, 356 210 { "RTR0ProcHandleSelf", (void *)RTR0ProcHandleSelf }, 357 { "RTSemFastMutexCreate", (void *) UNWIND_WRAP(RTSemFastMutexCreate)},358 { "RTSemFastMutexDestroy", (void *) UNWIND_WRAP(RTSemFastMutexDestroy)},359 { "RTSemFastMutexRequest", (void *) UNWIND_WRAP(RTSemFastMutexRequest)},360 { "RTSemFastMutexRelease", (void *) UNWIND_WRAP(RTSemFastMutexRelease)},361 { "RTSemEventCreate", (void *) UNWIND_WRAP(RTSemEventCreate)},362 { "RTSemEventSignal", (void *) UNWIND_WRAP(RTSemEventSignal)},363 { "RTSemEventWait", (void *) UNWIND_WRAP(RTSemEventWait)},364 { "RTSemEventWaitNoResume", (void *) UNWIND_WRAP(RTSemEventWaitNoResume)},365 { "RTSemEventDestroy", (void *) UNWIND_WRAP(RTSemEventDestroy)},366 { "RTSemEventMultiCreate", (void *) UNWIND_WRAP(RTSemEventMultiCreate)},367 { "RTSemEventMultiSignal", (void *) UNWIND_WRAP(RTSemEventMultiSignal)},368 { "RTSemEventMultiReset", (void *) UNWIND_WRAP(RTSemEventMultiReset)},369 { "RTSemEventMultiWait", (void *) UNWIND_WRAP(RTSemEventMultiWait)},370 { "RTSemEventMultiWaitNoResume", (void *) UNWIND_WRAP(RTSemEventMultiWaitNoResume)},371 { "RTSemEventMultiDestroy", (void *) UNWIND_WRAP(RTSemEventMultiDestroy)},372 { "RTSpinlockCreate", (void *) UNWIND_WRAP(RTSpinlockCreate)},373 { "RTSpinlockDestroy", (void *) UNWIND_WRAP(RTSpinlockDestroy)},374 { "RTSpinlockAcquire", (void *) UNWIND_WRAP(RTSpinlockAcquire)},375 { "RTSpinlockRelease", (void *) UNWIND_WRAP(RTSpinlockRelease)},376 { "RTSpinlockAcquireNoInts", (void *) UNWIND_WRAP(RTSpinlockAcquireNoInts)},377 { "RTSpinlockReleaseNoInts", (void *) UNWIND_WRAP(RTSpinlockReleaseNoInts)},211 { "RTSemFastMutexCreate", (void *)RTSemFastMutexCreate }, 212 { "RTSemFastMutexDestroy", (void *)RTSemFastMutexDestroy }, 213 { "RTSemFastMutexRequest", (void *)RTSemFastMutexRequest }, 214 { "RTSemFastMutexRelease", (void *)RTSemFastMutexRelease }, 215 { "RTSemEventCreate", (void *)RTSemEventCreate }, 216 { "RTSemEventSignal", (void *)RTSemEventSignal }, 217 { "RTSemEventWait", (void *)RTSemEventWait }, 218 { "RTSemEventWaitNoResume", (void *)RTSemEventWaitNoResume }, 219 { "RTSemEventDestroy", (void *)RTSemEventDestroy }, 220 { "RTSemEventMultiCreate", (void *)RTSemEventMultiCreate }, 221 { "RTSemEventMultiSignal", (void *)RTSemEventMultiSignal }, 222 { "RTSemEventMultiReset", (void *)RTSemEventMultiReset }, 223 { "RTSemEventMultiWait", (void *)RTSemEventMultiWait }, 224 { "RTSemEventMultiWaitNoResume", (void *)RTSemEventMultiWaitNoResume }, 225 { "RTSemEventMultiDestroy", (void *)RTSemEventMultiDestroy }, 226 { "RTSpinlockCreate", (void *)RTSpinlockCreate }, 227 { "RTSpinlockDestroy", (void *)RTSpinlockDestroy }, 228 { "RTSpinlockAcquire", (void *)RTSpinlockAcquire }, 229 { "RTSpinlockRelease", (void *)RTSpinlockRelease }, 230 { "RTSpinlockAcquireNoInts", (void *)RTSpinlockAcquireNoInts }, 231 { "RTSpinlockReleaseNoInts", (void *)RTSpinlockReleaseNoInts }, 378 232 { "RTTimeNanoTS", (void *)RTTimeNanoTS }, 379 233 { "RTTimeMilliTS", (void *)RTTimeMilliTS }, … … 381 235 { "RTTimeSystemMilliTS", (void *)RTTimeSystemMilliTS }, 382 236 { "RTThreadNativeSelf", (void *)RTThreadNativeSelf }, 383 { "RTThreadSleep", (void *) UNWIND_WRAP(RTThreadSleep)},384 { "RTThreadYield", (void *) UNWIND_WRAP(RTThreadYield)},237 { "RTThreadSleep", (void *)RTThreadSleep }, 238 { "RTThreadYield", (void *)RTThreadYield }, 385 239 #if 0 /* Thread APIs, Part 2. */ 386 { "RTThreadSelf", (void *) UNWIND_WRAP(RTThreadSelf)},387 { "RTThreadCreate", (void *) UNWIND_WRAP(RTThreadCreate)}, /** @todo need to wrap the callback */388 { "RTThreadGetNative", (void *) UNWIND_WRAP(RTThreadGetNative)},389 { "RTThreadWait", (void *) UNWIND_WRAP(RTThreadWait)},390 { "RTThreadWaitNoResume", (void *) UNWIND_WRAP(RTThreadWaitNoResume)},391 { "RTThreadGetName", (void *) UNWIND_WRAP(RTThreadGetName)},392 { "RTThreadSelfName", (void *) UNWIND_WRAP(RTThreadSelfName)},393 { "RTThreadGetType", (void *) UNWIND_WRAP(RTThreadGetType)},394 { "RTThreadUserSignal", (void *) UNWIND_WRAP(RTThreadUserSignal)},395 { "RTThreadUserReset", (void *) UNWIND_WRAP(RTThreadUserReset)},396 { "RTThreadUserWait", (void *) UNWIND_WRAP(RTThreadUserWait)},397 { "RTThreadUserWaitNoResume", (void *) UNWIND_WRAP(RTThreadUserWaitNoResume)},240 { "RTThreadSelf", (void *)RTThreadSelf }, 241 { "RTThreadCreate", (void *)RTThreadCreate }, /** @todo need to wrap the callback */ 242 { "RTThreadGetNative", (void *)RTThreadGetNative }, 243 { "RTThreadWait", (void *)RTThreadWait }, 244 { "RTThreadWaitNoResume", (void *)RTThreadWaitNoResume }, 245 { "RTThreadGetName", (void *)RTThreadGetName }, 246 { "RTThreadSelfName", (void *)RTThreadSelfName }, 247 { "RTThreadGetType", (void *)RTThreadGetType }, 248 { "RTThreadUserSignal", (void *)RTThreadUserSignal }, 249 { "RTThreadUserReset", (void *)RTThreadUserReset }, 250 { "RTThreadUserWait", (void *)RTThreadUserWait }, 251 { "RTThreadUserWaitNoResume", (void *)RTThreadUserWaitNoResume }, 398 252 #endif 399 253 { "RTThreadPreemptIsEnabled", (void *)RTThreadPreemptIsEnabled }, … … 401 255 { "RTThreadPreemptIsPendingTrusty", (void *)RTThreadPreemptIsPendingTrusty }, 402 256 { "RTThreadPreemptIsPossible", (void *)RTThreadPreemptIsPossible }, 403 { "RTThreadPreemptDisable", (void *) UNWIND_WRAP(RTThreadPreemptDisable)},404 { "RTThreadPreemptRestore", (void *) UNWIND_WRAP(RTThreadPreemptRestore)},257 { "RTThreadPreemptDisable", (void *)RTThreadPreemptDisable }, 258 { "RTThreadPreemptRestore", (void *)RTThreadPreemptRestore }, 405 259 { "RTThreadIsInInterrupt", (void *)RTThreadIsInInterrupt }, 406 260 … … 416 270 { "RTMpGetSet", (void *)RTMpGetSet }, 417 271 { "RTMpIsCpuOnline", (void *)RTMpIsCpuOnline }, 418 { "RTMpIsCpuWorkPending", (void *) UNWIND_WRAP(RTMpIsCpuWorkPending)},419 { "RTMpOnAll", (void *) UNWIND_WRAP(RTMpOnAll)},420 { "RTMpOnOthers", (void *) UNWIND_WRAP(RTMpOnOthers)},421 { "RTMpOnSpecific", (void *) UNWIND_WRAP(RTMpOnSpecific)},422 { "RTMpPokeCpu", (void *) UNWIND_WRAP(RTMpPokeCpu)},272 { "RTMpIsCpuWorkPending", (void *)RTMpIsCpuWorkPending }, 273 { "RTMpOnAll", (void *)RTMpOnAll }, 274 { "RTMpOnOthers", (void *)RTMpOnOthers }, 275 { "RTMpOnSpecific", (void *)RTMpOnSpecific }, 276 { "RTMpPokeCpu", (void *)RTMpPokeCpu }, 423 277 { "RTPowerNotificationRegister", (void *)RTPowerNotificationRegister }, 424 278 { "RTPowerNotificationDeregister", (void *)RTPowerNotificationDeregister }, 425 279 { "RTLogRelDefaultInstance", (void *)RTLogRelDefaultInstance }, 426 { "RTLogSetDefaultInstanceThread", (void *) UNWIND_WRAP(RTLogSetDefaultInstanceThread)},280 { "RTLogSetDefaultInstanceThread", (void *)RTLogSetDefaultInstanceThread }, 427 281 { "RTLogLogger", (void *)RTLogLogger }, /** @todo remove this */ 428 282 { "RTLogLoggerEx", (void *)RTLogLoggerEx }, /** @todo remove this */ 429 { "RTLogLoggerExV", (void *) UNWIND_WRAP(RTLogLoggerExV)},283 { "RTLogLoggerExV", (void *)RTLogLoggerExV }, 430 284 { "RTLogPrintf", (void *)RTLogPrintf }, /** @todo remove this */ 431 { "RTLogPrintfV", (void *) UNWIND_WRAP(RTLogPrintfV)},432 { "AssertMsg1", (void *) UNWIND_WRAP(AssertMsg1)},285 { "RTLogPrintfV", (void *)RTLogPrintfV }, 286 { "AssertMsg1", (void *)AssertMsg1 }, 433 287 { "AssertMsg2", (void *)AssertMsg2 }, /** @todo replace this by RTAssertMsg2V */ 434 288 #if defined(RT_OS_DARWIN) || defined(RT_OS_SOLARIS) … … 823 677 pObj, pObj->enmType, pObj->pvUser1, pObj->pvUser2, pObj->CreatorProcess, RTProcSelf(), pObj->pfnDestructor)); 824 678 if (pObj->pfnDestructor) 825 #ifdef RT_WITH_W64_UNWIND_HACK826 supdrvNtWrapObjDestructor((PFNRT)pObj->pfnDestructor, pObj, pObj->pvUser1, pObj->pvUser2);827 #else828 679 pObj->pfnDestructor(pObj, pObj->pvUser1, pObj->pvUser2); 829 #endif830 680 RTMemFree(pObj); 831 681 } … … 1022 872 { 1023 873 case SUP_IOCTL_FAST_DO_RAW_RUN: 1024 #ifdef RT_WITH_W64_UNWIND_HACK1025 supdrvNtWrapVMMR0EntryFast((PFNRT)pDevExt->pfnVMMR0EntryFast, pSession->pVM, idCpu, SUP_VMMR0_DO_RAW_RUN);1026 #else1027 874 pDevExt->pfnVMMR0EntryFast(pSession->pVM, idCpu, SUP_VMMR0_DO_RAW_RUN); 1028 #endif1029 875 break; 1030 876 case SUP_IOCTL_FAST_DO_HWACC_RUN: 1031 #ifdef RT_WITH_W64_UNWIND_HACK1032 supdrvNtWrapVMMR0EntryFast((PFNRT)pDevExt->pfnVMMR0EntryFast, pSession->pVM, idCpu, SUP_VMMR0_DO_HWACC_RUN);1033 #else1034 877 pDevExt->pfnVMMR0EntryFast(pSession->pVM, idCpu, SUP_VMMR0_DO_HWACC_RUN); 1035 #endif1036 878 break; 1037 879 case SUP_IOCTL_FAST_DO_NOP: 1038 #ifdef RT_WITH_W64_UNWIND_HACK1039 supdrvNtWrapVMMR0EntryFast((PFNRT)pDevExt->pfnVMMR0EntryFast, pSession->pVM, idCpu, SUP_VMMR0_DO_NOP);1040 #else1041 880 pDevExt->pfnVMMR0EntryFast(pSession->pVM, idCpu, SUP_VMMR0_DO_NOP); 1042 #endif1043 881 break; 1044 882 default: … … 1398 1236 /* execute */ 1399 1237 if (RT_LIKELY(pDevExt->pfnVMMR0EntryEx)) 1400 #ifdef RT_WITH_W64_UNWIND_HACK1401 pReq->Hdr.rc = supdrvNtWrapVMMR0EntryEx((PFNRT)pDevExt->pfnVMMR0EntryEx, pReq->u.In.pVMR0, pReq->u.In.idCpu, pReq->u.In.uOperation, NULL, pReq->u.In.u64Arg, pSession);1402 #else1403 1238 pReq->Hdr.rc = pDevExt->pfnVMMR0EntryEx(pReq->u.In.pVMR0, pReq->u.In.idCpu, pReq->u.In.uOperation, NULL, pReq->u.In.u64Arg, pSession); 1404 #endif1405 1239 else 1406 1240 pReq->Hdr.rc = VERR_WRONG_ORDER; … … 1416 1250 /* execute */ 1417 1251 if (RT_LIKELY(pDevExt->pfnVMMR0EntryEx)) 1418 #ifdef RT_WITH_W64_UNWIND_HACK1419 pReq->Hdr.rc = supdrvNtWrapVMMR0EntryEx((PFNRT)pDevExt->pfnVMMR0EntryEx, pReq->u.In.pVMR0, pReq->u.In.idCpu, pReq->u.In.uOperation, pVMMReq, pReq->u.In.u64Arg, pSession);1420 #else1421 1252 pReq->Hdr.rc = pDevExt->pfnVMMR0EntryEx(pReq->u.In.pVMR0, pReq->u.In.idCpu, pReq->u.In.uOperation, pVMMReq, pReq->u.In.u64Arg, pSession); 1422 #endif1423 1253 else 1424 1254 pReq->Hdr.rc = VERR_WRONG_ORDER; … … 2228 2058 pObj, pObj->enmType, pObj->pvUser1, pObj->pvUser2, pObj->CreatorProcess, RTProcSelf(), pObj->pfnDestructor)); 2229 2059 if (pObj->pfnDestructor) 2230 #ifdef RT_WITH_W64_UNWIND_HACK2231 supdrvNtWrapObjDestructor((PFNRT)pObj->pfnDestructor, pObj, pObj->pvUser1, pObj->pvUser2);2232 #else2233 2060 pObj->pfnDestructor(pObj, pObj->pvUser1, pObj->pvUser2); 2234 #endif2235 2061 RTMemFree(pObj); 2236 2062 } … … 3299 3125 && !memcmp(pCur->pFactory->szName, pszName, cchName)) 3300 3126 { 3301 #ifdef RT_WITH_W64_UNWIND_HACK3302 void *pvFactory = supdrvNtWrapQueryFactoryInterface((PFNRT)pCur->pFactory->pfnQueryFactoryInterface, pCur->pFactory, pSession, pszInterfaceUuid);3303 #else3304 3127 void *pvFactory = pCur->pFactory->pfnQueryFactoryInterface(pCur->pFactory, pSession, pszInterfaceUuid); 3305 #endif3306 3128 if (pvFactory) 3307 3129 { … … 3772 3594 { 3773 3595 Log(("supdrvIOCtl_LdrLoad: calling pfnModuleInit=%p\n", pImage->pfnModuleInit)); 3774 #ifdef RT_WITH_W64_UNWIND_HACK3775 rc = supdrvNtWrapModuleInit((PFNRT)pImage->pfnModuleInit);3776 #else3777 3596 rc = pImage->pfnModuleInit(); 3778 #endif3779 3597 if (rc && pDevExt->pvVMMR0 == pImage->pvImage) 3780 3598 supdrvLdrUnsetVMMR0EPs(pDevExt); … … 4224 4042 { 4225 4043 LogFlow(("supdrvIOCtl_LdrLoad: calling pfnModuleTerm=%p\n", pImage->pfnModuleTerm)); 4226 #ifdef RT_WITH_W64_UNWIND_HACK4227 supdrvNtWrapModuleTerm(pImage->pfnModuleTerm);4228 #else4229 4044 pImage->pfnModuleTerm(); 4230 #endif4231 4045 } 4232 4046 … … 4318 4132 */ 4319 4133 if (pReq->Hdr.cbIn == SUP_IOCTL_CALL_SERVICE_SIZE(0)) 4320 #ifdef RT_WITH_W64_UNWIND_HACK4321 rc = supdrvNtWrapServiceReqHandler((PFNRT)pfnServiceReqHandler, pSession, pReq->u.In.uOperation, pReq->u.In.u64Arg, NULL);4322 #else4323 4134 rc = pfnServiceReqHandler(pSession, pReq->u.In.uOperation, pReq->u.In.u64Arg, NULL); 4324 #endif4325 4135 else 4326 #ifdef RT_WITH_W64_UNWIND_HACK4327 rc = supdrvNtWrapServiceReqHandler((PFNRT)pfnServiceReqHandler, pSession, pReq->u.In.uOperation,4328 pReq->u.In.u64Arg, (PSUPR0SERVICEREQHDR)&pReq->abReqPkt[0]);4329 #else4330 4136 rc = pfnServiceReqHandler(pSession, pReq->u.In.uOperation, pReq->u.In.u64Arg, (PSUPR0SERVICEREQHDR)&pReq->abReqPkt[0]); 4331 #endif4332 4137 } 4333 4138 else -
trunk/src/VBox/HostDrivers/Support/SUPDrvInternal.h
r25308 r25336 263 263 #else 264 264 # define dprintf2(a) do { } while (0) 265 #endif266 267 268 /** @def RT_WITH_W64_UNWIND_HACK269 * Changes a function name into the wrapped version if we've270 * enabled the unwind hack.271 *272 * The unwind hack is for making the NT unwind procedures skip273 * our dynamically loaded code when they try to walk the call274 * stack. Needless to say, they kind of don't expect what275 * we're doing here and get kind of confused and may BSOD. */276 #ifdef DOXYGEN_RUNNING277 # define RT_WITH_W64_UNWIND_HACK278 #endif279 /** @def UNWIND_WRAP280 * If RT_WITH_W64_UNWIND_HACK is defined, the name will be prefixed with281 * 'supdrvNtWrap'.282 * @param Name The function to wrapper. */283 #ifdef RT_WITH_W64_UNWIND_HACK284 # define UNWIND_WRAP(Name) supdrvNtWrap##Name285 #else286 # define UNWIND_WRAP(Name) Name287 265 #endif 288 266 -
trunk/src/VBox/HostDrivers/Support/win/SUPDrv-win.cpp
r25331 r25336 620 620 621 621 #ifdef VBOX_WITHOUT_NATIVE_R0_LOADER 622 # ifndef RT_ARCH_X86 623 # error "VBOX_WITHOUT_NATIVE_R0_LOADER is only safe on x86." 624 # endif 622 625 NOREF(pDevExt); NOREF(pszFilename); NOREF(pImage); 623 626 return VERR_NOT_SUPPORTED; … … 691 694 { 692 695 case /* 0xc0000003 */ STATUS_INVALID_INFO_CLASS: 696 # ifdef RT_ARCH_AMD64 697 /* Unwind will crash and BSOD, so no fallback here! */ 698 rc = VERR_NOT_IMPLEMENTED; 699 # else 693 700 /* 694 * Use the old way of loading the modules if we can. We do 695 * not try class 26 because it will not work correctly on 696 * terminal server and have issues with paging of the image. 701 * Use the old way of loading the modules. 697 702 * 698 * Note! Using the 64-bit wrappers will require hacking the699 * image verfication in supdrvOSLdrLoad.703 * Note! We do *NOT* try class 26 because it will probably 704 * not work correctly on terminal servers and such. 700 705 */ 701 # if !defined(RT_ARCH_AMD64) || defined(RT_WITH_W64_UNWIND_HACK)702 706 rc = VERR_NOT_SUPPORTED; 703 # else704 rc = VERR_NOT_IMPLEMENTED;705 707 # endif 706 708 break; … … 735 737 736 738 /** 737 * memcmp + log. 738 * 739 * memcmp + log. 740 * 739 741 * @returns Same as memcmp. 740 742 * @param pImage The image. … … 806 808 / sizeof(IMAGE_IMPORT_DESCRIPTOR); 807 809 IMAGE_IMPORT_DESCRIPTOR const *pImp; 808 pImp = (IMAGE_IMPORT_DESCRIPTOR const *)(pbImageBits 810 pImp = (IMAGE_IMPORT_DESCRIPTOR const *)(pbImageBits 809 811 + pNtHdrs->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress); 810 812 while ( cImpsLeft-- > 0 -
trunk/src/VBox/HostDrivers/Support/win/SUPDrvA-win.asm
r25274 r25336 5 5 6 6 ; 7 ; Copyright (C) 2006-200 7Sun Microsystems, Inc.7 ; Copyright (C) 2006-2009 Sun Microsystems, Inc. 8 8 ; 9 9 ; This file is part of VirtualBox Open Source Edition (OSE), as … … 32 32 ;* Header Files * 33 33 ;******************************************************************************* 34 %include "iprt/ ntwrap.mac"34 %include "iprt/asmdefs.mac" 35 35 36 36 BEGINCODE 37 37 %ifdef RT_ARCH_AMD64 38 %define _DbgPrint DbgPrint38 %define _DbgPrint DbgPrint 39 39 %endif 40 40 extern _DbgPrint … … 49 49 %endif 50 50 51 52 %ifdef RT_WITH_W64_UNWIND_HACK53 %ifdef RT_ARCH_AMD6454 55 ;56 ; This has the same order as the list in SUPDrv.c57 ;58 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, SUPR0ComponentRegisterFactory59 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, SUPR0ComponentDeregisterFactory60 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, SUPR0ComponentQueryFactory61 NtWrapDyn2DrvFunctionWith5Params supdrvNtWrap, SUPR0ObjRegister62 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, SUPR0ObjAddRef63 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, SUPR0ObjAddRefEx64 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, SUPR0ObjRelease65 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, SUPR0ObjVerifyAccess66 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, SUPR0LockMem67 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, SUPR0UnlockMem68 NtWrapDyn2DrvFunctionWith5Params supdrvNtWrap, SUPR0ContAlloc69 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, SUPR0ContFree70 NtWrapDyn2DrvFunctionWith5Params supdrvNtWrap, SUPR0LowAlloc71 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, SUPR0LowFree72 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, SUPR0MemAlloc73 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, SUPR0MemGetPhys74 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, SUPR0MemFree75 NtWrapDyn2DrvFunctionWith6Params supdrvNtWrap, SUPR0PageAllocEx76 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, SUPR0PageFree77 ;NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, SUPR0Printf - cannot wrap this buster.78 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, SUPSemEventCreate79 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, SUPSemEventClose80 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, SUPSemEventSignal81 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, SUPSemEventWait82 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, SUPSemEventWaitNoResume83 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, SUPSemEventMultiCreate84 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, SUPSemEventMultiClose85 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, SUPSemEventMultiSignal86 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, SUPSemEventMultiReset87 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, SUPSemEventMultiWait88 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, SUPSemEventMultiWaitNoResume89 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, SUPR0GetPagingMode90 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTMemAlloc91 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTMemAllocZ92 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTMemFree93 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTMemDup94 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTMemDupEx95 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTMemRealloc96 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTR0MemObjAllocLow97 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTR0MemObjAllocPage98 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTR0MemObjAllocPhys99 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTR0MemObjAllocPhysNC100 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTR0MemObjAllocCont101 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTR0MemObjEnterPhys102 NtWrapDyn2DrvFunctionWith5Params supdrvNtWrap, RTR0MemObjLockUser103 NtWrapDyn2DrvFunctionWith5Params supdrvNtWrap, RTR0MemObjMapKernel104 NtWrapDyn2DrvFunctionWith7Params supdrvNtWrap, RTR0MemObjMapKernelEx105 NtWrapDyn2DrvFunctionWith6Params supdrvNtWrap, RTR0MemObjMapUser106 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTR0MemObjProtect107 ;NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTR0MemObjAddress - not necessary108 ;NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTR0MemObjAddressR3 - not necessary109 ;NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTR0MemObjSize - not necessary110 ;NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTR0MemObjIsMapping - not necessary111 ;NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTR0MemObjGetPagePhysAddr - not necessary112 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTR0MemObjFree113 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTR0MemUserCopyFrom114 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTR0MemUserCopyTo115 ;NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTR0MemUserIsValidAddr - not necessary116 ;NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTR0MemKernelIsValidAdd - not necessary117 ;NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTR0MemAreKrnlAndUsrDifferent - not necessary118 ;NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTProcSelf - not necessary119 ;NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTR0ProcHandleSelf - not necessary120 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTSemFastMutexCreate121 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTSemFastMutexDestroy122 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTSemFastMutexRequest123 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTSemFastMutexRelease124 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTSemEventCreate125 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTSemEventSignal126 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTSemEventWait127 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTSemEventWaitNoResume128 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTSemEventDestroy129 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTSemEventMultiCreate130 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTSemEventMultiSignal131 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTSemEventMultiReset132 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTSemEventMultiWait133 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTSemEventMultiWaitNoResume134 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTSemEventMultiDestroy135 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTSpinlockCreate136 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTSpinlockDestroy137 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTSpinlockAcquire138 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTSpinlockRelease139 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTSpinlockAcquireNoInts140 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTSpinlockReleaseNoInts141 ;NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTTimeNanoTS - not necessary142 ;NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTTimeMilliTS - not necessary143 ;NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTTimeSystemNanoTS - not necessary144 ;NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTTimeSystemMilliTS - not necessary145 ;NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTThreadNativeSelf - not necessary146 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTThreadSleep147 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTThreadYield148 %if 0 ; Thread APIs, Part 2149 ;NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTThreadSelf150 NtWrapDyn2DrvFunctionWith7Params supdrvNtWrap, RTThreadCreate151 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTThreadGetNative152 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTThreadWait153 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTThreadWaitNoResume154 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTThreadGetName155 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTThreadSelfName156 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTThreadGetType157 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTThreadUserSignal158 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTThreadUserReset159 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTThreadUserWait160 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTThreadUserWaitNoResume161 %endif162 ;NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTThreadPreemptIsEnabled - not necessary163 ;NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTThreadPreemptIsPending - not necessary164 ;NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTThreadPreemptIsPendingTrusty - not necessary165 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTThreadPreemptDisable166 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTThreadPreemptRestore167 ;NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTLogDefaultInstance - a bit of a gamble, but we do not want the overhead!168 ;NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTMpCpuId - not necessary169 ;NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTMpCpuIdFromSetIndex - not necessary170 ;NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTMpCpuIdToSetIndex - not necessary171 ;NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTMpIsCpuPossible - not necessary172 ;NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTMpGetCount - not necessary173 ;NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTMpGetMaxCpuId - not necessary174 ;NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTMpGetOnlineCount - not necessary175 ;NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTMpGetOnlineSet - not necessary176 ;NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTMpGetSet - not necessary177 ;NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTMpIsCpuOnline - not necessary178 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTMpIsCpuWorkPending179 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTMpOnAll180 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTMpOnOthers181 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTMpOnSpecific182 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTMpPokeCpu183 ;NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTLogRelDefaultInstance - not necessary.184 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTLogSetDefaultInstanceThread185 ;NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTLogLogger - can't wrap this buster.186 ;NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTLogLoggerEx - can't wrap this buster.187 NtWrapDyn2DrvFunctionWith5Params supdrvNtWrap, RTLogLoggerExV188 ;NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTLogPrintf - can't wrap this buster. ;; @todo provide va_list log wrappers in RuntimeR0.189 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, RTLogPrintfV190 NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, AssertMsg1191 ;NtWrapDyn2DrvFunctionWithAllRegParams supdrvNtWrap, AssertMsg2 - can't wrap this buster.192 NtWrapDrv2DynFunctionWithAllRegParams supdrvNtWrap, RTPowerSignalEvent193 194 195 ;;196 ; @cproto DECLASM(int) supdrvNtWrapVMMR0EntryEx(PFNRT pfnVMMR0EntryEx, PVM pVM, unsigned idCpu, unsigned uOperation, PSUPVMMR0REQHDR pReq, uint64_t u64Arg, PSUPDRVSESSION pSession);197 ;198 ; @param pfnVMMR0EntryEx rcx199 ; @param pVM rdx200 ; @param idCpu r8201 ; @param uOperation r9202 ; @param pReq [rsp + 28h] / [rbp + 30h]203 ; @param u64Arg [rsp + 30h] / [rbp + 38h]204 ; @param pSession [rsp + 38h] / [rbp + 40h]205 ;206 BEGINPROC supdrvNtWrapVMMR0EntryEx207 NtWrapProlog supdrvNtWrapVMMR0EntryEx208 NtWrapCreateMarker209 210 mov rax, rcx211 mov rcx, rdx212 mov rdx, r8213 mov r8, r9214 mov r9, [rbp + 30h]215 mov r11, [rbp + 38h]216 mov [rsp + 20h], r11217 mov r11, [rbp + 40h]218 mov [rsp + 28h], r11219 call rax220 221 NtWrapDestroyMarker222 NtWrapEpilog supdrvNtWrapVMMR0EntryEx223 ENDPROC supdrvNtWrapVMMR0EntryEx224 225 226 ;;227 ; @cproto DECLASM(int) supdrvNtWrapVMMR0EntryFast(PFNRT pfnVMMR0EntryFast, PVM pVM, unsigned idCPU, unsigned uOperation);228 ;229 ; @param pfnVMMR0EntryFast rcx230 ; @param pVM rdx231 ; @param idCPU r8232 ; @param uOperation r9233 ;234 BEGINPROC supdrvNtWrapVMMR0EntryFast235 NtWrapProlog supdrvNtWrapVMMR0EntryFast236 NtWrapCreateMarker237 238 mov rax, rcx239 mov rcx, rdx240 mov rdx, r8241 mov r8, r9242 call rax243 244 NtWrapDestroyMarker245 NtWrapEpilog supdrvNtWrapVMMR0EntryFast246 ENDPROC supdrvNtWrapVMMR0EntryFast247 248 249 ;;250 ; @cproto DECLASM(void) supdrvNtWrapObjDestructor(PFNRT pfnDestruction, void *pvObj, void *pvUser1, void *pvUser2);251 ;252 ; @param pfnDestruction rcx253 ; @param pvObj rdx254 ; @param pvUser1 r8255 ; @param pvUser2 r9256 ;257 BEGINPROC supdrvNtWrapObjDestructor258 NtWrapProlog supdrvNtWrapObjDestructor259 NtWrapCreateMarker260 261 mov rax, rcx262 mov rcx, rdx263 mov rdx, r8264 mov r8, r9265 call rax266 267 NtWrapDestroyMarker268 NtWrapEpilog supdrvNtWrapObjDestructor269 ENDPROC supdrvNtWrapObjDestructor270 271 272 ;;273 ; @cproto DECLASM(void *) supdrvNtWrapQueryFactoryInterface(PFNRT pfnQueryFactoryInterface, struct SUPDRVFACTORY const *pSupDrvFactory,274 ; PSUPDRVSESSION pSession, const char *pszInterfaceUuid);275 ;276 ; @param pfnQueryFactoryInterface rcx277 ; @param pSupDrvFactory rdx278 ; @param pSession r8279 ; @param pszInterfaceUuid r9280 ;281 BEGINPROC supdrvNtWrapQueryFactoryInterface282 NtWrapProlog supdrvNtWrapQueryFactoryInterface283 NtWrapCreateMarker284 285 mov rax, rcx286 mov rcx, rdx287 mov rdx, r8288 mov r8, r9289 call rax290 291 NtWrapDestroyMarker292 NtWrapEpilog supdrvNtWrapQueryFactoryInterface293 ENDPROC supdrvNtWrapQueryFactoryInterface294 295 296 ;;297 ; @cproto DECLASM(int) supdrvNtWrapModuleInit(PFNRT pfnModuleInit);298 ;299 ; @param pfnModuleInit rcx300 ;301 BEGINPROC supdrvNtWrapModuleInit302 NtWrapProlog supdrvNtWrapModuleInit303 NtWrapCreateMarker304 305 call rcx306 307 NtWrapDestroyMarker308 NtWrapEpilog supdrvNtWrapModuleInit309 ENDPROC supdrvNtWrapModuleInit310 311 312 ;;313 ; @cproto DECLASM(void) supdrvNtWrapModuleTerm(PFNRT pfnModuleTerm);314 ;315 ; @param pfnModuleInit rcx316 ;317 BEGINPROC supdrvNtWrapModuleTerm318 NtWrapProlog supdrvNtWrapModuleTerm319 NtWrapCreateMarker320 321 call rcx322 323 NtWrapDestroyMarker324 NtWrapEpilog supdrvNtWrapModuleTerm325 ENDPROC supdrvNtWrapModuleTerm326 327 328 ;;329 ; @cproto DECLASM(int) supdrvNtWrapServiceReqHandler(PFNRT pfnServiceReqHandler, PSUPDRVSESSION pSession, uint32_t uOperation, uint64_t u64Arg, PSUPR0SERVICEREQHDR pReqHdr);330 ;331 ; @param pfnSerivceReqHandler rcx332 ; @param pSession rdx333 ; @param uOperation r8334 ; @param u64Arg r9335 ; @param pReq [rsp + 28h] / [rbp + 30h]336 ;337 BEGINPROC supdrvNtWrapServiceReqHandler338 NtWrapProlog supdrvNtWrapServiceReqHandler339 NtWrapCreateMarker340 341 mov rax, rcx342 mov rcx, rdx343 mov rdx, r8344 mov r8, r9345 mov r9, [rbp + 30h]346 call rax347 348 NtWrapDestroyMarker349 NtWrapEpilog supdrvNtWrapServiceReqHandler350 ENDPROC supdrvNtWrapServiceReqHandler351 352 353 %endif ; RT_ARCH_AMD64354 %endif ; RT_WITH_W64_UNWIND_HACK355
Note:
See TracChangeset
for help on using the changeset viewer.