示例#1
0
void YieldExecution( void )
{
    VMMCall(Release_Time_Slice);
    VMMCall(Begin_Nest_Exec);
    VMMCall(Resume_Exec);
    VMMCall(End_Nest_Exec);
}
示例#2
0
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
    }
示例#3
0
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
	}
示例#4
0
DWORD R0EndReentrantExecutionCB(DWORD dwCount)
    {
    _asm mov ecx, dwCount	; Reentrancy count
    VMMCall(End_Reentrant_Execution);
#pragma warning(disable:4035)	// Ignore the no return value warning
    }
示例#5
0
DWORD R0BeginReentrantExecutionCB(DWORD dwRef)
    {
    VMMCall(Begin_Reentrant_Execution);
    _asm mov eax, ecx		; Reentrancy count
#pragma warning(disable:4035)	// Ignore the no return value warning
    }
示例#6
0
DWORD R0GetCurVmHandleCB(DWORD dw)
    {
    VMMCall(Get_Cur_VM_Handle);
    _asm mov eax, ebx
#pragma warning(disable:4035)	// Ignore the no return value warning
    }
示例#7
0
DWORD R0GetVmmVersionCB(DWORD dw)
    {
    VMMCall(Get_VMM_Version);
#pragma warning(disable:4035)	// Ignore the no return value warning
    }