/***************************************************************************** * RING0.H * * Ring 0 equates to be used with VxDCall# * * This file should be replaced by references into the file * dev\inc\vmmwin32.inc once vmm.h is fixed to allow the No_VxD * option to include the Begin_Win32_Services macro. * * Created: * 9-Sep-92 [JonT] * History: * 25-Sep-92 [FelixA] Added defines and macros for the exported mem funcs * 25-Sep-92 [JonT] Added equates for VWin32.386 * ****************************************************************************/ // Equates for VCOND functions #ifdef WOW #define MEOW_NEED_BOP 0x80000000 #define MEOW_NO_SUSPEND_OTHERS 0x40000000 #else // WOW #define MEOW_NEED_BOP 0x00000000 #define MEOW_NO_SUSPEND_OTHERS 0x00000000 #endif // else WOW // VCOMM.386 ID numbers // (its device ID is 0x002B #define VCOMM_Device_ID 0x002B #define VCOMM_GetVersion (VCOMM_Device_ID << 16) #define VCOMM_OpenComm VCOMM_GetVersion + 1 #define VCOMM_SetupComm VCOMM_OpenComm + 1 #define VCOMM_EscapeCommFunction VCOMM_SetupComm + 1 #define VCOMM_GetCommMask VCOMM_EscapeCommFunction + 1 #define VCOMM_GetCommProp VCOMM_GetCommMask + 1 #define VCOMM_GetCommState VCOMM_GetCommProp + 1 #define VCOMM_GetCommTimeouts VCOMM_GetCommState + 1 #define VCOMM_PurgeComm VCOMM_GetCommTimeouts + 1 #define VCOMM_SetCommMask VCOMM_PurgeComm + 1 #define VCOMM_SetCommState VCOMM_SetCommMask + 1 #define VCOMM_SetCommTimeouts VCOMM_SetCommState + 1 #define VCOMM_TransmitCommChar VCOMM_SetCommTimeouts + 1 #define VCOMM_WaitCommEvent VCOMM_TransmitCommChar + 1 #define VCOMM_GetCommModemStatus VCOMM_WaitCommEvent + 1 #define VCOMM_WriteComm VCOMM_GetCommModemStatus+1 #define VCOMM_ReadComm VCOMM_WriteComm+1 #define VCOMM_ClearCommError VCOMM_ReadComm + 1 #define VCOMM_CloseComm VCOMM_ClearCommError + 1 #define VCOMM_GetLastError VCOMM_CloseComm + 1 #define VCOMM_DequeueRequest VCOMM_GetLastError + 1 #define VCOMM_QueryFriendlyName VCOMM_DequeueRequest + 1 #define VCOMM_GetCommConfig VCOMM_QueryFriendlyName + 1 #define VCOMM_SetCommConfig VCOMM_GetCommConfig + 1 #define VCOMM_GetWin32Error VCOMM_SetCommConfig + 1 #define VCOMM_FlushFileBuffers VCOMM_GetWin32Error + 1 #define VCOMM_DeviceIOControl VCOMM_FlushFileBuffers + 1 #ifndef NTKERN_DEVICE_ID #define NTKERN_DEVICE_ID 0x004B #endif #define NtKern_Get_Version (NTKERN_DEVICE_ID << 16) #define Nt_CreateFile (NtKern_Get_Version + 1) #define Nt_CloseHandle (Nt_CreateFile + 1) #define Nt_WriteFile (Nt_CloseHandle + 1) #define Nt_ReadFile (Nt_WriteFile + 1) #define Nt_IoControl (Nt_ReadFile + 1) #define Nt_FlushBuffersFile (Nt_IoControl + 1) #define Nt_CancelIo (Nt_FlushBuffersFile + 1) #define Nt_GetDevnodeFromFileHandle (Nt_CancelIo + 1 ) #define Nt_RequestWakeupLatency (Nt_GetDevnodeFromFileHandle + 1) // // Now define calls to ACPI // #ifndef ACPI_DEVICE_ID #define ACPI_DEVICE_ID 0x004c #endif #define Acpi_GetVersion (ACPI_DEVICE_ID << 16 ) #define Acpi_SetSystemIndicator ( Acpi_GetVersion + 1 ) #define AcpiGetVersion() VxDCall0( Acpi_GetVersion ) #define AcpiSetSystemIndicator( Indicator, Value )\ VxDCall2( Acpi_SetSystemIndicator, Indicator, Value ) // // definition for indicator // #define SystemStatus 0 #define MessageWaiting 1 #define VCOND_GETVERSION 0x00380000 #define VCOND_EMITSTRING 0x00380001 #define VCOND_CREATECONSOLE 0x00380002 #define VCOND_READCHARINFO 0x00380003 #define VCOND_READCHARS 0x00380004 #define VCOND_READATTRS 0x00380005 #define VCOND_WRITECHARINFO 0x00380006 #define VCOND_WRITECHARS 0x00380007 #define VCOND_WRITEATTRS 0x00380008 #define VCOND_FILLATTRS 0x00380009 #define VCOND_GETCURPOS 0x0038000a #define VCOND_GETCURATTR 0x0038000b #define VCOND_SETCURPOS 0x0038000c #define VCOND_SETCURATTR 0x0038000d #define VCOND_SETINPUTMODE 0x0038000e #define VCOND_GETINPUTMODE 0x0038000f #define VCOND_READINPUT 0x00380010 #define VCOND_PEEKINPUT 0x00380011 #define VCOND_WRITEINPUT 0x00380012 #define VCOND_ATTACHPROCESS 0x00380013 #define VCOND_DETACHPROCESS 0x00380014 #define VCOND_DELETECONSOLE 0x00380015 #define VCOND_GETNUMBEROFINPUTEVENTS 0x00380016 #define VCOND_POSTMESSAGE 0x00380017 #define VCOND_GETSCREENSIZE 0x00380018 #define VCOND_FILLCHARS 0x00380019 #define VCOND_FLUSHINPUT 0x0038001A #define VCOND_SETATTRIBUTE 0x0038001B #define VCOND_GETBUTTONCOUNT 0x0038001C #define VCOND_SETSCREENSIZE 0x0038001D #define VCOND_MATCHSCREENSIZE 0x0038001E #define VCOND_WAITFORNEWCONSOLE 0x0038001F #define VCOND_SPAWN 0x00380020 #define VCOND_GETENVIRONMENT 0x00380021 #define VCOND_GETLAUNCHINFO 0x00380022 #define VCOND_INITAPCS 0x00380023 #define VCOND_GRBREPAINTRECT 0x00380024 #define VCOND_GRBMOVERECT 0x00380025 #define VCOND_GRBSETWINDOWSIZE 0x00380026 #define VCOND_GRBSETWINDOWORG 0x00380027 #define VCOND_GRBSETSCREENSIZE 0x00380028 #define VCOND_GRBSETCURSORPOSITION 0x00380029 #define VCOND_GRBSETCURSORINFO 0x0038002A #define VCOND_GRBNOTIFYWOA 0x0038002B #define VCOND_GRBSYNC 0x0038002C #define VCOND_GRBTERMINATE 0x0038002D #define VCOND_DP32_CREATE 0x0038002E #define VCOND_DP32_GETWORK 0x0038002F #define VCOND_DP32_TERMINATE 0x00380030 #define VCOND_DP32_WAITWORK 0x00380031 #define VCOND_REDIRECTIONCOMPLETE 0x00380032 #define VCOND_DP32_DESTROY 0x00380033 #define VCOND_UNBLOCKRING3WITHFAILURE 0x00380034 #ifdef BILINGUAL_CONSOLE #define VCOND_GETCP 0x00380035 #endif // Special "exit-code" value for VCOND_Detach: This value means // "do not set the exit code." #define VCD_NOEXITCODE ((DWORD)0xffffffff) // Equates for VMM virtual memory functions #define W32_PageReserve 0x00010000 #define W32_PageCommit 0x00010001 #define W32_PageDecommit 0x00010002 #define W32_PagerRegister 0x00010003 #define W32_PagerQuery 0x00010004 #define W32_HeapAllocate 0x00010005 #define W32_ContextCreate 0x00010006 #define W32_ContextDestroy 0x00010007 #define W32_PageAttach 0x00010008 #define W32_PageFlush 0x00010009 #define W32_PageFree 0x0001000a #define W32_ContextSwitch 0x0001000b #define W32_HeapReAllocate 0x0001000c #define W32_PageModifyPermissions 0x0001000d #define W32_PageQuery 0x0001000e #define W32_GetCurrentContext 0x0001000f #define W32_HeapFree 0x00010010 #define W32_RegOpenKey 0x00010011 #define W32_RegCreateKey 0x00010012 #define W32_RegCloseKey 0x00010013 #define W32_RegDeleteKey 0x00010014 #define W32_RegSetValue 0x00010015 #define W32_RegDeleteValue 0x00010016 #define W32_RegQueryValue 0x00010017 #define W32_RegEnumKey 0x00010018 #define W32_RegEnumValue 0x00010019 #define W32_RegQueryValueEx 0x0001001a #define W32_RegSetValueEx 0x0001001b #define W32_RegFlushKey 0x0001001c #define W32_RegQueryInfoKey16 0x0001001d #define W32_GetDemandPageInfo 0x0001001e #define W32_BlockOnID 0x0001001f #define W32_SignalID 0x00010020 #define W32_RegLoadKey 0x00010021 #define W32_RegUnLoadKey 0x00010022 #define W32_RegSaveKey 0x00010023 #define W32_RegRemapPreDefKey 0x00010024 #define W32_PageChangePager 0x00010025 #define W32_RegQueryMultipleValues 0x00010026 #define W32_RegReplaceKey 0x00010027 #define W32_BoostFileCache 0x00010028 #ifdef GANGLOAD #define W32_CacheAndDecommitPages (W32_BoostFileCache+1) #define W32_RegNotifyChangeKeyValue (W32_CacheAndDecommitPages+1) #else #define W32_RegNotifyChangeKeyValue (W32_BoostFileCache+1) #endif #define W32_PageOutPages (W32_RegNotifyChangeKeyValue+1) #define W32_mmSetCacheMidPoint (W32_PageOutPages+1) #ifdef WRITE_WATCH #define W32_mmGetWriteWatch (W32_mmSetCacheMidPoint+1) #define W32_mmResetWriteWatch (W32_mmGetWriteWatch+1) #endif // WRITE_WATCH // DEBUG Win32 API (debug device id is 0x0002) #define DEBUG_WIN32_FAULT 0x00020000 // REBOOT.386 Win32 API (reboot device id is 0x0009) #define REBOOT_WIN32_INIT 0x00090000 #define REBOOT_CHANGE_PHASE 0x00090001 // VWIN32.386 ID numbers (vwin32 device ID is 0x002a) #define VW32_GetVersion 0x002A0000 #define VW32_GetPager 0x002A0001 #define VW32_GetTickCount 0x002A0002 #define VW32_EnableExceptions 0x002A0003 #define VW32_AllocSyncPrimitive 0x002A0006 #define VW32_CreateThread (0x002A0008+MEOW_NEED_BOP) #define VW32_BlockThread 0x002A0009 #define VW32_WakeThread 0x002A000A #define VW32_TerminateThread 0x002A000B #define VW32_Initialize 0x002A000C #define VW32_QueueUserAPC 0x002A000D #define VW32_CleanAPCList 0x002A000E #define VW32_QueueKernelAPC 0x002A000F #define VW32_Int21Dispatch (0x002A0010+MEOW_NO_SUSPEND_OTHERS) #define VW32_IFSMGR_DupHandle 0x002A0011 #define VW32_AdjustThreadPri 0x002A0013 #define VW32_GetThreadContext 0x002A0014 #define VW32_SetThreadContext 0x002A0015 #define VW32_ReadProcessMemory 0x002A0016 #define VW32_WriteProcessMemory 0x002A0017 #define VW32_GetCR0State 0x002A0018 #define VW32_SetCR0State 0x002A0019 #define VW32_SuspendThread 0x002A001A #define VW32_ResumeThread 0x002A001B #define VW32_DeliverPendingKernelAPCs (0x002A001C+MEOW_NEED_BOP) #define VW32_WaitCrst 0x002A001D #define VW32_WakeCrst 0x002A001E #define VW32_DeviceIOCtl 0x002A001F #define VW32_GetVMCPDVersion 0x002A0020 #define VW32_SetWin32Priority 0x002A0021 #define VW32_AttachThreadToGroup 0x002A0026 #define VW32_Int31Dispatch 0x002A0029 #define VW32_Int41Dispatch (0x002A002A+MEOW_NO_SUSPEND_OTHERS) #define VW32_BlockForTermination 0x002A002B #define VW32_TerminationHandler2 (0x002A002C+MEOW_NEED_BOP) #define VW32_BlockThreadEx 0x002A002D #define VW32_ReleaseSyncObject 0x002A0030 #define VW32_UndoCrst 0x002A0032 #ifndef WOW #define VW32_Ring0ThreadStart 0x002A0034 #endif // ndef WOW #define VW32_EnableAPCService 0x002A0036 #define VW32_FaultPop 0x002A0037 #define VW32_ForceCrsts 0x002A0038 #define VW32_RestoreCrsts 0x002A0039 #define VW32_FreezeAllThreads 0x002A003A #define VW32_UnFreezeAllThreads 0x002A003B #define VW32_IFSMGR_CloseHandle 0x002A003C #define VW32_AttachConappThreadToVM 0x002A003D #define VW32_ActiveTimeBiasSet 0x002A003E #define VW32_ModifyPagePermission 0x002A003F #define VW32_QueryPage 0x002A0040 #define VW32_ForceLeaveCrst 0x002A0041 #define VW32_ForceEnterCrst 0x002A0042 #define VW32_Get_FP_Instruction_Size 0x002A0043 #define VW32_QueryPerformanceCounter 0x002A0044 #define VW32_SetDeviceFocus 0x002A0045 #define VW32_UnFreezeThread 0x002A0046 #define VW32_VMM_Replace_Global_Env 0x002A0047 #define VW32_SendKernelShutdown 0x002A0048 #define VW32_RestoreSysCrst 0x002A0049 #define VW32_AddSysCrst 0x002A004A #define VW32_SetTimeOut 0x002A004B #define VW32_CancelTimeOut 0x002A004C #define VW32_ThrowException 0x002A004D #define VW32_SimCtrlC 0x002A004E #define VW32_VMM_SystemControl 0x002A004F #define VW32_SetTimer 0x002A0050 #define VW32_CancelTimer 0x002A0051 #define VW32_GetNextResumeDueTime 0x002A0052 #define VW32_BiosSupportsResumeTimers 0x002A0053 #define VW32_SetResumeTimer 0x002A0054 #define VW32_QueueUserApcEx 0x002A0055 #define VW32_DisposeObject 0x002A0056 #define VW32_DuplicateObject 0x002A0057 #define VW32_UnuseTdbx 0x002A0058 #define VW32_InterlockedAdd386 0x002A0059 #define VW32_InterlockedCmpxchg386 0x002A005A #define VW32_InterlockedXadd386 0x002A005B #define VW32_WaitSingleObject 0x002A005C #define VW32_WaitMultipleObjects 0x002A005D #define VW32_ReleaseSem 0x002A005E #define VW32_ReleaseMutex 0x002A005F #define VW32_SetEvent 0x002A0060 #define VW32_PulseEvent 0x002A0061 #define VW32_ResetEvent 0x002A0062 #define VW32_DisposeTimerR3Apc 0x002A0063 #define VW32_SetWin32PriorityClass 0x002A0064 #ifdef WOW #define MEOWService(dwID) ((dwID & 0x3FFF0000)==0x3FFF0000) #define MEOW_SetSelector 0x3FFF0000 #define MEOW_LoadLibrary 0x3FFF0001 #define MEOW_GetProcAddress 0x3FFF0002 #define MEOW_FreeLibrary 0x3FFF0003 #endif // def WOW // Allows use of MM* rather than VxDCall#( ..k #if !defined(WINBASEAPI) #if !defined(_KERNEL32_) #define WINBASEAPI __declspec(dllimport) #else #define WINBASEAPI #endif #endif extern WINBASEAPI DWORD __stdcall VxDCall0( ULONG ); extern WINBASEAPI DWORD __stdcall VxDCall1( ULONG ,ULONG ); extern WINBASEAPI DWORD __stdcall VxDCall2( ULONG ,ULONG ,ULONG ); extern WINBASEAPI DWORD __stdcall VxDCall3( ULONG ,ULONG ,ULONG ,ULONG ); extern WINBASEAPI DWORD __stdcall VxDCall4( ULONG ,ULONG ,ULONG ,ULONG ,ULONG ); extern WINBASEAPI DWORD __stdcall VxDCall5( ULONG ,ULONG ,ULONG ,ULONG ,ULONG ,ULONG ); extern WINBASEAPI DWORD __stdcall VxDCall6( ULONG ,ULONG ,ULONG ,ULONG ,ULONG ,ULONG ,ULONG ); extern WINBASEAPI DWORD __stdcall VxDCall7( ULONG ,ULONG ,ULONG ,ULONG ,ULONG ,ULONG ,ULONG ,ULONG ); extern WINBASEAPI DWORD __stdcall VxDCall8( ULONG ,ULONG ,ULONG ,ULONG ,ULONG ,ULONG ,ULONG ,ULONG ,ULONG ); extern WINBASEAPI DWORD __stdcall VxDCall9( ULONG ,ULONG ,ULONG ,ULONG ,ULONG ,ULONG ,ULONG ,ULONG ,ULONG, ULONG ); extern WINBASEAPI DWORD __stdcall VxDCall10( ULONG ,ULONG ,ULONG ,ULONG ,ULONG ,ULONG ,ULONG ,ULONG ,ULONG, ULONG, ULONG ); extern WINBASEAPI DWORD __stdcall VxDCall11( ULONG ,ULONG ,ULONG ,ULONG ,ULONG ,ULONG ,ULONG ,ULONG ,ULONG, ULONG, ULONG, ULONG ); /* ASM VxDCall0 PROTO STDCALL, :DWORD VxDCall1 PROTO STDCALL, :DWORD, :DWORD VxDCall2 PROTO STDCALL, :DWORD, :DWORD, :DWORD VxDCall3 PROTO STDCALL, :DWORD, :DWORD, :DWORD, :DWORD VxDCall4 PROTO STDCALL, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD VxDCall5 PROTO STDCALL, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD VxDCall6 PROTO STDCALL, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD VxDCall7 PROTO STDCALL, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD VxDCall8 PROTO STDCALL, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD VxDCall9 PROTO STDCALL, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD VxDCall10 PROTO STDCALL, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD VxDCall11 PROTO STDCALL, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD */ #define PageReserve(page, npages, flags) VxDCall3(W32_PageReserve,page, npages, flags) #ifdef WRITE_WATCH #define R0GetWriteWatch( ulFlags, pBaseAddr, dwRegionSize, pulAddr, pdwCount, pdwGranularity) \ VxDCall6( W32_mmGetWriteWatch, ulFlags, pBaseAddr, dwRegionSize, pulAddr, pdwCount, pdwGranularity) #define R0ResetWriteWatch( pBaseAddr, dwRegionSize ) \ VxDCall2( W32_mmResetWriteWatch, pBaseAddr, dwRegionSize ) #endif // WRITEWATCH extern BOOL PageCommit(ULONG page, ULONG npages, ULONG hpd, ULONG pagerdata, ULONG flags); #define PageDecommit(page, npages, flags) VxDCall3(W32_PageDecommit, page, npages, flags) #define PagerRegister(ppd) VxDCall1(W32_PagerRegister, (ULONG)ppd) #define PagerQuery(hpd, ppd) VxDCall2(W32_PagerQuery, (ULONG)hpd, (ULONG)ppd) #define PageChangePager(page, npages, hpd, pagerdata, flags) \ VxDCall5(W32_PageChangePager, (ULONG)page, (ULONG)npages, (ULONG)hpd, \ (ULONG)pagerdata, (ULONG)flags) #define ContextCreate() VxDCall0(W32_ContextCreate) #define GetCurrentContext() VxDCall0(W32_GetCurrentContext) #define VMMHeapFree(p, f) VxDCall2(W32_HeapFree, (ULONG)(p), f) #define VMMHeapAllocate(p, f) VxDCall2(W32_HeapAllocate, (ULONG)(p), f) #define VMMHeapReAllocate(p, cb, f) VxDCall3(W32_HeapReAllocate, (ULONG)(p), cb, f) #define VMMBlockOnID(id, f) VxDCall2(W32_BlockOnID, (ULONG)(id), f) #define VMMSignalID(id) VxDCall1(W32_SignalID, (ULONG)(id)) #define ContextDestroy(hcd) VxDCall1(W32_ContextDestroy, hcd) #define ContextSwitch(hcd) VxDCall1(W32_ContextSwitch, hcd) #define PageQuery(pbase, pmbi, cbmbi) VxDCall3(W32_PageQuery, (ULONG)pbase, (ULONG)pmbi, cbmbi) #define PageAttach(pagesrc, hcontextsrc, pagedst, cpg) VxDCall4(W32_PageAttach, pagesrc, hcontextsrc, pagedst, cpg) #define PageFlush(page, npages) VxDCall2(W32_PageFlush, page, npages) #define PageFree(laddr, flags) VxDCall2(W32_PageFree, (ULONG)laddr, flags) #define GetDemandPageInfo(laddr, flags) VxDCall2(W32_GetDemandPageInfo, (ULONG)laddr, flags) #define EnableExceptions(handler, selCS, selDS, hdlr1, hdlr2, hdlr3, hdlr4, thcb) \ VxDCall8(VW32_EnableExceptions, (ULONG)handler, (ULONG)selCS, \ (ULONG)selDS, (ULONG)hdlr1, (ULONG)hdlr2, (ULONG)hdlr3, \ (ULONG)hdlr4, (ULONG)thcb) #define InitializeWin32VxD(pcdis) \ VxDCall1(VW32_Initialize, (DWORD) pcdis) #ifdef WOW #define W32CreateThread(ThreadHandle, ProcessHandle, ContextHandle, \ ThreadFlags, regEIP, pContext, dwStackSize, \ ppStackTop, pptib, ppTDBX ) \ VxDCall10(VW32_CreateThread, (ULONG)ThreadHandle, (ULONG)ProcessHandle, \ (ULONG) ContextHandle, (ULONG) ThreadFlags, \ (ULONG) regEIP, (ULONG) pContext, (ULONG) dwStackSize, \ (ULONG) ppStackTop, (ULONG) pptib, (ULONG) ppTDBX ) #else // WOW #define W32CreateThread(ThreadHandle, ProcessHandle, ContextHandle, \ ThreadFlags, regCS, regEIP, regSS, regESP, ppTDBX ) \ VxDCall9(VW32_CreateThread, (ULONG)ThreadHandle, (ULONG)ProcessHandle, \ (ULONG) ContextHandle, (ULONG) ThreadFlags, (ULONG) regCS, \ (ULONG) regEIP, (ULONG) regSS, (ULONG) regESP, (ULONG) ppTDBX ) #endif // else WOW #define VxDTerminateThread(ThreadHandle, ApcData) \ VxDCall2(VW32_TerminateThread, (DWORD) ThreadHandle, (DWORD) ApcData) #define VxDSuspendThread(ThreadHandle) \ VxDCall1(VW32_SuspendThread, (DWORD) ThreadHandle) #define VxDResumeThread(ThreadHandle) \ VxDCall1(VW32_ResumeThread, (DWORD) ThreadHandle) #define VW32DeliverPendingKernelAPCs() \ VxDCall0(VW32_DeliverPendingKernelAPCs) // Registry Macros #define W32RegOpenKey(hKey,SubKey,lphKey) VxDCall3(W32_RegOpenKey,(ULONG)hKey,(ULONG)SubKey,(ULONG)lphKey) #define W32RegCreateKey(hKey,SubKey,lphKey) VxDCall3(W32_RegCreateKey,(ULONG)hKey,(ULONG)SubKey,(ULONG)lphKey) #define W32RegCloseKey(hKey) VxDCall1(W32_RegCloseKey,(ULONG)hKey) #define W32RegFlushKey(hKey) VxDCall1(W32_RegFlushKey,(ULONG)hKey) #define W32RegDeleteKey(hKey,SubKey) VxDCall2(W32_RegDeleteKey,(ULONG)hKey,(ULONG)SubKey) #define W32RegDeleteValue(hKey,ValName) VxDCall2(W32_RegDeleteValue,(ULONG)hKey,(ULONG)ValName) #define W32RegEnumKey(hKey,dwIdx,lpbBuf,dwcbBuf) VxDCall4(W32_RegEnumKey,(ULONG)hKey,dwIdx,(ULONG)lpbBuf,dwcbBuf) #define W32RegQueryValue(hKey,szSubKey,lpszVal,lpcbVal) VxDCall4(W32_RegQueryValue,(ULONG)hKey,(ULONG)szSubKey,(ULONG)lpszVal,(ULONG)lpcbVal) #define W32RegSetValue(hKey,szSubKey,dwType,lpszVal,cbVal) VxDCall5(W32_RegSetValue,(ULONG)hKey,(ULONG)szSubKey,dwType,(ULONG)lpszVal,cbVal) #define W32RegEnumValue(hKey,iVal,lpszVal,lpcbVal,lpdwRes,lpdwType,lpbData,lpcbData) \ VxDCall8(W32_RegEnumValue,(ULONG)hKey,(ULONG)iVal,(ULONG)lpszVal,(ULONG)lpcbVal,(ULONG)lpdwRes,(ULONG)lpdwType,(ULONG)lpbData,(ULONG)lpcbData) #define W32RegQueryValueEx(hKey,lpszVal,lpdwRes,lpdwType,lpbData,lpcbData) \ VxDCall6(W32_RegQueryValueEx,(ULONG)hKey,(ULONG)lpszVal,(ULONG)lpdwRes,(ULONG)lpdwType,(ULONG)lpbData,(ULONG)lpcbData) #define W32RegSetValueEx(hKey,lpszVal,dwRes,dwType,lpbData,lpcbData) \ VxDCall6(W32_RegSetValueEx,(ULONG)hKey,(ULONG)lpszVal,dwRes,dwType,(ULONG)lpbData,(ULONG)lpcbData) #define W32RegQueryInfoKey( hKey, lpcSubKeys, lpcbMaxSubKeyLen, \ lpcValues, lpcbMaxValueNameLen, lpcbMaxValueLen) \ VxDCall6(W32_RegQueryInfoKey16, (ULONG)hKey,(ULONG) lpcSubKeys, \ (ULONG) lpcbMaxSubKeyLen,(ULONG) lpcValues, \ (ULONG) lpcbMaxValueNameLen,(ULONG) lpcbMaxValueLen) #define W32RegLoadKey(hKey, lpszSubKey, lpszFile) \ VxDCall3(W32_RegLoadKey, (ULONG)hKey, (ULONG)lpszSubKey, (ULONG)lpszFile) #define W32RegUnLoadKey(hKey, lpszSubKey) \ VxDCall2(W32_RegUnLoadKey, (ULONG)hKey, (ULONG)lpszSubKey) #define W32RegSaveKey(hKey, lpszFile, lpsa) \ VxDCall3(W32_RegSaveKey, (ULONG)hKey, (ULONG)lpszFile, (ULONG)lpsa) #define W32RegRemapPreDefKey(hKey,hkRootKey) VxDCall2(W32_RegRemapPreDefKey,(ULONG)hKey,(ULONG)hkRootKey) #define W32RegQueryMultipleValues(hKey, val_list, num_vals, \ lpValueBuf, ldwTotsize)\ VxDCall5(W32_RegQueryMultipleValues, (ULONG)hKey, (ULONG)val_list, \ (ULONG)num_vals, (ULONG)lpValueBuf, (ULONG)ldwTotsize) #define W32RegReplaceKey(hKey, lpszSubKey, lpszReplaceFile, lpszBackupFile) \ VxDCall4(W32_RegReplaceKey, (ULONG)hKey, (ULONG)lpszSubKey, \ (ULONG)lpszReplaceFile, (ULONG)lpszBackupFile) #define W32BoostFileCache() VxDCall0(W32_BoostFileCache) #define W32RegNotifyChangeKeyValue(hKey, fWatchSubtree, dwNotifyFilter, hEvent) \ VxDCall4(W32_RegNotifyChangeKeyValue, (ULONG)hKey, (ULONG)fWatchSubtree, \ (ULONG)dwNotifyFilter, (ULONG)hEvent) // low level APC function interface #define W32CleanAPCList() VxDCall0( VW32_CleanAPCList ) #define W32QueueUserAPC( pfnRing3APC, dwParam, ThreadHandle ) \ VxDCall3( VW32_QueueUserAPC, (ULONG)(pfnRing3APC), \ (ULONG)(dwParam), (ULONG)(ThreadHandle) ) #define W32QueueKernelAPC( pfnRing0APC, dwParam, ThreadHandle, ulFlags ) \ VxDCall4( VW32_QueueKernelAPC, (ULONG)pfnRing0APC, dwParam, \ (ULONG)ThreadHandle, ulFlags ) #define W32QueueUserApcEx( pfnRing3APC, dwParam, ThreadHandle, R0RunDown ) \ VxDCall4( VW32_QueueUserApcEx, (ULONG)(pfnRing3APC), \ (ULONG)(dwParam), (ULONG)(ThreadHandle), (ULONG)(R0RunDown)) // Thread priority adjusting #define AdjustThreadPriority( R0ThreadHandle, PriBoost ) \ VxDCall2(VW32_AdjustThreadPri,R0ThreadHandle,(DWORD)(PriBoost)) // Way to get to IFSMGR's Win32_DupHandle thru vwin32 #define W32_IFSMGR_DupHandle(pdbSrc, pdbDst, phandle, flags, \ bogusnetxattachhandle, pfSpecialNetxDup) \ VxDCall6(VW32_IFSMGR_DupHandle, pdbSrc, pdbDst, phandle, \ flags, bogusnetxattachhandle, pfSpecialNetxDup) // Close a ring0 file handle #define W32_IFSMGR_CloseHandle(handle) \ VxDCall1(VW32_IFSMGR_CloseHandle, handle) // Prototype #define's for VWin32 functions #define VWIN32GetVersion() \ ((USHORT)VxDCall0(VW32_GetVersion)) #define FVW32GetPager(pR0_dwWaitSingleObject, \ pR0_bSetPevt, \ pR0_EnterCrst, pR0_LeaveCrst, \ pR0_BlockOnID, pR0_SignalID, \ pR0_OpenFile, pR0_CloseDosFileHandle, pmmfPageOut, \ ppfmdArray) \ VxDCall10(VW32_GetPager, pR0_dwWaitSingleObject, \ pR0_bSetPevt, \ pR0_EnterCrst, pR0_LeaveCrst, \ pR0_BlockOnID, pR0_SignalID, \ pR0_OpenFile, pR0_CloseDosFileHandle, pmmfPageOut, \ ppfmdArray) #define PageModifyPermissions(page, npages, permand, permor) VxDCall4(W32_PageModifyPermissions, page, npages, permand, permor) #define ModifyPagePermission(R0Thread, lpvAddr, cbSize, fperAnd, fperOr) \ VxDCall5(VW32_ModifyPagePermission, \ (DWORD)R0Thread, \ (DWORD)lpvAddr, \ cbSize, \ fperAnd, \ fperOr) #define VWIN32QueryPage(R0Thread, lpvAddr, lpvBuffer, cbSize) \ VxDCall4(VW32_QueryPage, \ (DWORD)R0Thread, \ (DWORD)lpvAddr, \ (DWORD)lpvBuffer, \ cbSize) #define VxDBlockForTermination() \ VxDCall0(VW32_BlockForTermination) #define VxDTerminationHandler2(ptermdata) \ VxDCall1(VW32_TerminationHandler2, (ULONG)(ptermdata)) // Defines for Win32 VxD debug api support services #define VxDGetThreadContext(ptcb, pcontext) \ VxDCall2(VW32_GetThreadContext, (DWORD)(ptcb), (DWORD)(pcontext)) #define VxDSetThreadContext(ptcb, pcontext) \ VxDCall2(VW32_SetThreadContext, (DWORD)(ptcb), (DWORD)(pcontext)) #define VxDReadProcessMemory(ptcb, pBaseAddress, pBuffer, cbRead, pcbRead) \ VxDCall5(VW32_ReadProcessMemory, (ptcb), \ (ULONG)(pBaseAddress), (ULONG)(pBuffer), (cbRead), \ (ULONG)(pcbRead)) #define VxDWriteProcessMemory(ptcb, pBaseAddress, pBuffer, cbWrite, pcbWritten)\ VxDCall5(VW32_WriteProcessMemory, (ptcb), \ (ULONG)(pBaseAddress), (ULONG)(pBuffer), (cbWrite), \ (ULONG)(pcbWritten)) // Defines for floating point Cr0 flag support (EM, MP) #define GetCR0State(ptcb) \ VxDCall1(VW32_GetCR0State, (ptcb)) #define SetCR0State(ptcb, state) \ VxDCall2(VW32_SetCR0State, (ptcb), (state)) #define WaitCrst( pcrst ) VxDCall1( VW32_WaitCrst, (DWORD)pcrst ) #define WakeCrst( pcrst ) VxDCall1( VW32_WakeCrst, (DWORD)pcrst ) #define UndoCrst( pcrst ) VxDCall1( VW32_UndoCrst, (DWORD)pcrst ) // support for DeviceIOControl API; go to ring0 with this #define DeviceIOCtl(VxdDDB, dwIoControlCode, lpvInBuffer, \ cbInBuffer, lpvOutBuffer, cbOutBuffer, \ lpcbBytesReturned, lpoOverlapped, hDevice,\ ppdb, lpDDBName) \ VxDCall11(VW32_DeviceIOCtl, (DWORD) VxdDDB, \ (DWORD) dwIoControlCode, (DWORD) lpvInBuffer, \ (DWORD) cbInBuffer, (DWORD) lpvOutBuffer, \ (DWORD) cbOutBuffer, (DWORD) lpcbBytesReturned, \ (DWORD) lpoOverlapped, (DWORD)hDevice,\ (DWORD) ppdb, lpDDBName) #define SetWin32Priority( r0ThHandle, PriVal ) \ VxDCall2( VW32_SetWin32Priority, (DWORD)r0ThHandle, (DWORD)PriVal ) #define SetWin32PriorityClass( ThreadArray, NumOfElements ) \ VxDCall2( VW32_SetWin32PriorityClass, (DWORD)(ThreadArray), (DWORD)(NumOfElements) ) #define AttachThreadToGroup( r0ThToAttach, r0ThInGroup ) \ VxDCall2( VW32_AttachThreadToGroup, (DWORD)r0ThToAttach, (DWORD) r0ThInGroup ) #define VW32BlockThread( Timeout ) \ VxDCall1( VW32_BlockThread, Timeout) #define VW32BlockThreadEx( Timeout, Alertable ) \ VxDCall2( VW32_BlockThreadEx, Timeout, Alertable ) #define ReleaseSyncObj( pSyncObj, bAbandoned ) \ VxDCall2( VW32_ReleaseSyncObject, (DWORD)pSyncObj, bAbandoned ) #ifndef WOW #define Ring0ThreadStart( R0TParmBlk ) VxDCall1( VW32_Ring0ThreadStart, (DWORD)R0TParmBlk ) #endif // ndef WOW #define EnableAPCService( KSvcR0Handle ) VxDCall1( VW32_EnableAPCService, KSvcR0Handle ) #define VW32FaultPop(pcontext, ulExceptionNumber, fDebug) \ VxDCall3(VW32_FaultPop, (DWORD)pcontext, ulExceptionNumber, fDebug) #define VW32ForceCrsts() \ VxDCall0(VW32_ForceCrsts) #define VW32RestoreCrsts(h, ptdb) \ VxDCall2(VW32_RestoreCrsts, (DWORD)(h), (DWORD)(ptdb)) #define VW32FreezeAllThreads() \ VxDCall0(VW32_FreezeAllThreads) #define VW32UnFreezeAllThreads() \ VxDCall0(VW32_UnFreezeAllThreads) #define VW32ForceLeaveCrst(pcrst, ptdb) \ VxDCall2(VW32_ForceLeaveCrst, (DWORD)pcrst, (DWORD)ptdb) #define VW32ForceEnterCrst(pcrst, ptdb, recur) \ VxDCall3(VW32_ForceEnterCrst, (DWORD)pcrst, (DWORD)ptdb, (DWORD)recur) extern Get_FP_Instruction_Size(ULONG, ULONG); #define AttachConappThreadToVM( R0ThreadHandle, hVM ) \ VxDCall2( VW32_AttachConappThreadToVM, (DWORD)R0ThreadHandle, (DWORD)hVM ) #define ActiveTimeBiasSet() VxDCall0(VW32_ActiveTimeBiasSet) #define VW32SetDeviceFocus() \ VxDCall0(VW32_SetDeviceFocus) #define VW32UnFreezeThread(ptcb) \ VxDCall1(VW32_UnFreezeThread, (DWORD)(ptcb)) #define VW32SendKernelShutdown() \ VxDCall0(VW32_SendKernelShutdown) #define VW32RestoreSysCrst(pcrst, ptdb, count) \ VxDCall3(VW32_RestoreSysCrst, (DWORD)pcrst, (DWORD)ptdb, (DWORD)count) #define VW32AddSysCrst(plcrst, order) \ VxDCall2(VW32_AddSysCrst, (DWORD)(plcrst), (DWORD)(order)) #define VW32SetTimeOut(pfn, ms, data) \ VxDCall3(VW32_SetTimeOut, (DWORD)(pfn), (DWORD)(ms), (DWORD)(data)) #define VW32CancelTimeOut(hto) \ VxDCall1(VW32_CancelTimeOut, (DWORD)(hto)) #define VW32ThrowException(type) \ VxDCall1(VW32_ThrowException, (DWORD)(type)) #define VW32VMMSystemControl(dwControlMsg, dwEDXParam, dwESIParam, dwEDIParam) \ VxDCall4(VW32_VMM_SystemControl, (DWORD)(dwControlMsg), (DWORD)(dwEDXParam), (DWORD)(dwESIParam), (DWORD)(dwEDIParam)) #define VW32SetTimer(lpTimerDb, lpDueTime, lPeriod, pfnCompletion, lpCompletionArg, fResume) \ VxDCall6(VW32_SetTimer, (DWORD)(lpTimerDb), (DWORD)(lpDueTime), (DWORD)(lPeriod), (DWORD)(pfnCompletion), (DWORD)(lpCompletionArg), (DWORD)(fResume)) #define VW32CancelTimer(lpTimerDb) \ VxDCall1(VW32_CancelTimer, (DWORD)(lpTimerDb)) #define VW32GetNextResumeDueTime(lpFileTime) \ VxDCall1(VW32_GetNextResumeDueTime, (DWORD)(lpFileTime)) #define VW32BiosSupportsResumeTimers() \ VxDCall0(VW32_BiosSupportsResumeTimers) #define VW32SetResumeTimer(lpSystemTime) \ VxDCall1(VW32_SetResumeTimer, (DWORD)(lpSystemTime)) #define VW32DisposeObject(pobj) \ VxDCall1(VW32_DisposeObject, (DWORD)(pobj)) #define VW32DuplicateObject(pobj, ppdbSrc, ppdbDest) \ VxDCall3(VW32_DuplicateObject, (DWORD)(pobj), (DWORD)(ppdbSrc), (DWORD)(ppdbDest)) #define VW32InterlockedAdd386(paddend, quantity) \ VxDCall2(VW32_InterlockedAdd386,(DWORD)(paddend),(DWORD)(quantity)) #define VW32InterlockedCmpxchg386(pdest, exchange, comperand) \ VxDCall3(VW32_InterlockedCmpxchg386,(DWORD)(pdest),(DWORD)(exchange),(DWORD)(comperand)) #define VW32InterlockedXadd386(paddend, exchange) \ VxDCall2(VW32_InterlockedXadd386,(DWORD)(paddend),(DWORD)(exchange)) #define VW32UnuseTdbx(ptdbx) \ VxDCall1(VW32_UnuseTdbx, (DWORD)(ptdbx)) #define VW32WaitSingleObject(pObj, dwTimeout, fAlertable) \ VxDCall3(VW32_WaitSingleObject, (DWORD)(pObj),(dwTimeout),(fAlertable)) #define VW32WaitMultipleObjects(cObj, paObj, dwTimeout, dwFlags, fAlertable) \ VxDCall5(VW32_WaitMultipleObjects, (cObj), (DWORD)(paObj), (dwTimeout), (dwFlags), (fAlertable)) #define VW32ReleaseSem(psem, cRel, plPrev) \ VxDCall3(VW32_ReleaseSem, (DWORD)(psem), (DWORD)(cRel), (DWORD)(plPrev)) #define VW32ReleaseMutex(pmutx) \ VxDCall1(VW32_ReleaseMutex, (DWORD)(pmutx)) #define VW32SetEvent(pevt) \ VxDCall1(VW32_SetEvent, (DWORD)(pevt)) #define VW32PulseEvent(pevt) \ VxDCall1(VW32_PulseEvent, (DWORD)(pevt)) #define VW32ResetEvent(pevt) \ VxDCall1(VW32_ResetEvent, (DWORD)(pevt)) #define VW32DisposeTimerR3Apc(ptimerr3apc) \ VxDCall1(VW32_DisposeTimerR3Apc, (DWORD)(ptimerr3apc)) // Send a fault to kernel debugger #define DEBUG_Win32Fault(faultnum, errorcd, pcontext) \ VxDCall3(DEBUG_WIN32_FAULT, (faultnum), (errorcd), (ULONG)(pcontext)) #define REBOOT_Win32Init(pfnTermDialogBox, thcbFault) \ VxDCall2(REBOOT_WIN32_INIT,(DWORD)(pfnTermDialogBox),(DWORD)(thcbFault)) #define REBOOT_ChangePhase(bPhase, dwData) \ VxDCall2(REBOOT_CHANGE_PHASE,(DWORD)(bPhase),(DWORD)(dwData)) // VCOND interface #define VCOND_GetLaunchInfo(conID, cmdline, curdir, flag) VxDCall4(VCOND_GETLAUNCHINFO, conID, (ULONG)cmdline, (ULONG)curdir, (ULONG)flag) #define VCOND_EmitString(conID, pString, len) VxDCall3(VCOND_EMITSTRING, conID, (ULONG)pString, len) #define VCOND_CreateConsole(hvm, pConsole) VxDCall2(VCOND_CREATECONSOLE, (ULONG) hvm, (ULONG) pConsole) #define VCOND_ReadCharInfo(conID, bufptr, len, coord) VxDCall4(VCOND_READCHARINFO, conID, (ULONG)bufptr, len, (ULONG)coord) #define VCOND_ReadChars(conID, bufptr, coord, len) VxDCall4(VCOND_READCHARS, conID, (ULONG)bufptr, (ULONG)coord, len) #define VCOND_ReadAttrs(conID, bufptr, coord, len, wantbytes) VxDCall5(VCOND_READATTRS, conID, (ULONG)bufptr, (ULONG)coord, len, wantbytes) #define VCOND_WriteCharInfo(conID, bufptr, len, coord) VxDCall4(VCOND_WRITECHARINFO, conID, (ULONG)bufptr, len, (ULONG)coord) #define VCOND_WriteChars(conID, bufptr, coord, len) VxDCall4(VCOND_WRITECHARS, conID, (ULONG)bufptr, (ULONG)coord, len) #define VCOND_WriteAttrs(conID, bufptr, coord, len, wantbytes) VxDCall5(VCOND_WRITEATTRS, conID, (ULONG)bufptr, (ULONG)coord, len, wantbytes) #define VCOND_FillAttrs(conID, attr, coord, len) VxDCall4(VCOND_FILLATTRS, conID, (ULONG)attr, (ULONG)coord, len) #define VCOND_GetCurPos(conID) VxDCall1(VCOND_GETCURPOS, conID) #define VCOND_GetCurAttr(conID) VxDCall1(VCOND_GETCURATTR, conID) #define VCOND_SetCurPos(conID, coord) VxDCall2(VCOND_SETCURPOS, conID, (ULONG)coord) #define VCOND_SetCurAttr(conID, attr) VxDCall2(VCOND_SETCURATTR, conID, (ULONG)attr) #define VCOND_SetInputMode(conID, mode) VxDCall2(VCOND_SETINPUTMODE, conID, (ULONG)mode) #define VCOND_GetInputMode(conID) VxDCall1(VCOND_GETINPUTMODE, conID) #define VCOND_ReadInput(conID, lpBuffer, nEvents, bFile) VxDCall4(VCOND_READINPUT, conID, (ULONG)lpBuffer, (ULONG)nEvents, (ULONG)bFile) #define VCOND_PeekInput(conID, lpBuffer, nEvents, bFile) VxDCall4(VCOND_PEEKINPUT, conID, (ULONG)lpBuffer, (ULONG)nEvents, (ULONG)bFile) #define VCOND_WriteInput(conID, lpBuffer, nEvents) VxDCall3(VCOND_WRITEINPUT, conID, (ULONG)lpBuffer, (ULONG)nEvents) #define VCOND_AttachProcess(conID) VxDCall1(VCOND_ATTACHPROCESS, conID) #define VCOND_DetachProcess(conID, exitCode) VxDCall2(VCOND_DETACHPROCESS, conID, ( (DWORD)(exitCode) ) & 0xff) #define VCOND_DetachProcess_NoEC(conID) VxDCall2(VCOND_DETACHPROCESS, conID, VCD_NOEXITCODE) #define VCOND_DeleteConsole(conID) VxDCall1(VCOND_DELETECONSOLE, conID) #define VCOND_GetNumberOfInputEvents(conID) VxDCall1(VCOND_GETNUMBEROFINPUTEVENTS, conID) #define VCOND_PostMessage(hvm, msg, wparam) VxDCall3(VCOND_POSTMESSAGE, (ULONG)hvm, (ULONG)msg, (ULONG)wparam) #define VCOND_InitAPCs(nAPCs, ConAPCs, szPath) VxDCall3(VCOND_INITAPCS, nAPCs, (ULONG)ConAPCs , (ULONG)szPath) #define VCOND_GetScreenSize(conID) VxDCall1(VCOND_GETSCREENSIZE, conID) #define VCOND_FillChars(conID, c, coord, len) VxDCall4(VCOND_FILLCHARS, conID, (ULONG)c, (ULONG)coord, len) #define VCOND_FlushInput(conID) VxDCall1(VCOND_FLUSHINPUT, conID) #define VCOND_SetAttribute(conID, attr) VxDCall2(VCOND_SETATTRIBUTE, conID, (ULONG)attr) #define VCOND_GetButtonCount() VxDCall0(VCOND_GETBUTTONCOUNT) #define VCOND_SetScreenSize(conID, cSize) VxDCall2(VCOND_SETSCREENSIZE, conID, (ULONG)cSize) #define VCOND_MatchScreenSize(conID, cSize) VxDCall2(VCOND_MATCHSCREENSIZE, conID, (ULONG)cSize) #define VCOND_WaitForNewConsole() VxDCall0(VCOND_WAITFORNEWCONSOLE) #define VCOND_UnblockRing3WithFailure() VxDCall0(VCOND_UNBLOCKRING3WITHFAILURE) //#define VCOND_Spawn(conID, lpszImageName, lpszCurrentDirectory, // lpszCommandLine, lpszEnvironment, lpdwExitCode // (line too long...) #define VCOND_Spawn(a1, a2, a3, a4, a5, a6) \ VxDCall6(VCOND_SPAWN, (ULONG) a1, (ULONG) a2, \ (ULONG) a3, (ULONG) a4, (ULONG) a5, (ULONG) a6) #define VCOND_GetEnvironment(conID, pEnv, len) VxDCall3(VCOND_GETENVIRONMENT, conID, (ULONG) pEnv, len) #define VCOND_GrbRepaintRect(conID, lpConsoleWindow) VxDCall2(VCOND_GRBREPAINTRECT, conID, (ULONG) lpConsoleWindow) #define VCOND_GrbMoveRect(conID, psrSrcRect, cDestOrg) VxDCall3(VCOND_GRBMOVERECT, conID, (ULONG) psrSrcRect, (ULONG) cDestOrg) #define VCOND_GrbSetWindowSize(conID, dwSize) VxDCall2(VCOND_GRBSETWINDOWSIZE, conID, dwSize) #define VCOND_GrbSetWindowOrg(conID, dwOrg) VxDCall2(VCOND_GRBSETWINDOWORG, conID, dwOrg) #define VCOND_GrbSetScreenSize(conID, dwSize) VxDCall2(VCOND_GRBSETSCREENSIZE, conID, dwSize) #define VCOND_GrbSetCursorPosition(conID, dwLoc) VxDCall2(VCOND_GRBSETCURSORPOSITION, conID, (ULONG) dwLoc) #define VCOND_GrbSetCursorInfo(conID, dwInfo) VxDCall2(VCOND_GRBSETCURSORINFO, conID, dwInfo) #define VCOND_GrbNotifyWOA(conID) VxDCall1(VCOND_GRBNOTIFYWOA, conID) #define VCOND_GrbSync(conID) VxDCall1(VCOND_GRBSYNC, conID) #define VCOND_GrbTerminate(conID) VxDCall1(VCOND_GRBTERMINATE, conID) #define VCOND_DP32_Create(pExename, pCmdline, pCurdir, pStdxInfo, pspseg) \ VxDCall5(VCOND_DP32_CREATE, (ULONG) pExename, \ (ULONG) pCmdline, (ULONG) pCurdir, (ULONG) pStdxInfo, (ULONG) pspseg) #define VCOND_DP32_Getwork(pRedir) VxDCall1(VCOND_DP32_GETWORK, (ULONG) pRedir) #define VCOND_DP32_Terminate(pRedir) VxDCall1(VCOND_DP32_TERMINATE, (ULONG) pRedir) #define VCOND_DP32_Waitwork(pRedir) VxDCall1(VCOND_DP32_WAITWORK, (ULONG) pRedir) #define VCOND_RedirectionComplete(conID, redirFlags) VxDCall2(VCOND_REDIRECTIONCOMPLETE, conID, redirFlags) #define VCOND_DP32_Destroy(pRedir) VxDCall1(VCOND_DP32_DESTROY, (ULONG) pRedir) #ifdef BILINGUAL_CONSOLE #define VCOND_GetCP(conID) VxDCall1(VCOND_GETCP, conID) #endif #ifdef WOW #define MEOWLoadLibrary(pszLibraryName) VxDCall1(MEOW_LoadLibrary, (ULONG)pszLibraryName) #define MEOWGetProcAddress(hModule, pszFunctionName, dwOrdinal) VxDCall3(MEOW_GetProcAddress, (ULONG)hModule, (ULONG)pszFunctionName, (ULONG)dwOrdinal) #define MEOWFreeLibrary(hModule) VxDCall1(MEOW_FreeLibrary, (ULONG)hModule) #endif // def WOW