void YieldExecution( void ) { VMMCall(Release_Time_Slice); VMMCall(Begin_Nest_Exec); VMMCall(Resume_Exec); VMMCall(End_Nest_Exec); }
DWORD R0FreeLdtSelectorCB(DWORD dwSel) { // VMMCall _Free_LDT_Selector, <VM, Selector, flags> _asm { push 0 push dwSel } VMMCall(Get_Cur_VM_Handle); _asm push ebx VMMCall(_Free_LDT_Selector) _asm add esp, 12 #pragma warning(disable:4035) // Ignore the no return value warning }
DWORD R0V86mmgrFreeBufferCB(DWORD dwRef) { V86MMGRALLOCPARMS *pParms = (V86MMGRALLOCPARMS *)dwRef; VMMCall(Get_Cur_VM_Handle) ; mov ebx, vmHandle VMMCall(Get_Next_VM_Handle) ; ~~jfl 2001/05/17 Test with 2 VMs. _asm { push fs push ds pop fs mov edi, pParms mov esi, dword ptr [edi+4] ; extended memory to copy if carry set xor eax, eax cmp eax, esi ; Set carry if esi != 0 mov ecx, dword ptr [edi] ; mov ecx, NumBytes push ebp mov ebp, [ebx.CB_Client_Pointer] ; OFFSET32 ClientRegisters }
DWORD R0EndReentrantExecutionCB(DWORD dwCount) { _asm mov ecx, dwCount ; Reentrancy count VMMCall(End_Reentrant_Execution); #pragma warning(disable:4035) // Ignore the no return value warning }
DWORD R0BeginReentrantExecutionCB(DWORD dwRef) { VMMCall(Begin_Reentrant_Execution); _asm mov eax, ecx ; Reentrancy count #pragma warning(disable:4035) // Ignore the no return value warning }
DWORD R0GetCurVmHandleCB(DWORD dw) { VMMCall(Get_Cur_VM_Handle); _asm mov eax, ebx #pragma warning(disable:4035) // Ignore the no return value warning }
DWORD R0GetVmmVersionCB(DWORD dw) { VMMCall(Get_VMM_Version); #pragma warning(disable:4035) // Ignore the no return value warning }