?? vxwin.asm
字號(hào):
ArgVar dwIRQHandle, DWORD
EnterProc
mov eax, dwIRQHandle
VxDCall VPICD_Force_Default_Behavior
mov eax, STATUS_SUCCESS
clc
LeaveProc
return
EndProc _winVPICD_Force_Default_Behavior
;------------------------------------------------------------------------------
; FUNC winEnable_Local_Trapping
;
; STATUS winEnable_Local_Trapping(DWORD dwVMHandle, WORD wPort);
;------------------------------------------------------------------------------
BeginProc _winEnable_Local_Trapping
ArgVar dwVMHandle, DWORD
ArgVar wPort, WORD
EnterProc
push ebx
mov ebx, dwVMHandle
xor edx,edx
mov dx, wPort
VMMCall Enable_Local_Trapping
pop ebx
LeaveProc
return
EndProc _winEnable_Local_Trapping
;------------------------------------------------------------------------------
; FUNC winDisable_Local_Trapping
;
; STATUS winDisable_Local_Trapping(DWORD dwVMHandle, WORD wPort);
;------------------------------------------------------------------------------
BeginProc _winDisable_Local_Trapping
ArgVar dwVMHandle, DWORD
ArgVar wPort, WORD
EnterProc
push ebx
mov ebx, dwVMHandle
xor edx,edx
mov dx, wPort
VMMCall Disable_Local_Trapping
pop ebx
LeaveProc
return
EndProc _winDisable_Local_Trapping
;------------------------------------------------------------------------------
; FUNC winGet_Profile_String
;
; STATUS winGet_Profile_String(PBYTE lpszSeciton, PBYTE lpszResult, PBYTE *pResult);
;------------------------------------------------------------------------------
;BeginProc _winGet_Profile_String
;ArgVar lpszSection, DWORD
;ArgVar lpszKey, DWORD
;ArgVar pResult, DWORD
; EnterProc
; push ebx
; push esi
; push edi
;
; mov esi, pResult
; mov edx, dword ptr [esi]
; mov esi, lpszSection
; mov edi, lpszKey
;
; VMMCall Get_Profile_String
; jc winGet_Profile_String_Fail
; mov esi, pResult
; mov dword ptr [esi], edx
; mov eax, STATUS_SUCCESS
; clc
; jmp winGet_Profile_String_Exit
;
;winGet_Profile_String_Fail:
; mov eax, STATUS_ERROR
; stc
;
;winGet_Profile_String_Exit:
; pop edi
; pop esi
; pop ebx
; LeaveProc
; return
;EndProc _winGet_Profile_String
;------------------------------------------------------------------------------
; FUNC winGet_Profile_Boolean
;
; STATUS winGet_Profile_Boolean(PBYTE lpszSeciton, PBYTE lpszResult, PDWORD *pResult);
;------------------------------------------------------------------------------
;BeginProc _winGet_Profile_Boolean
;ArgVar lpszSection, DWORD
;ArgVar lpszKey, DWORD
;ArgVar pResult, DWORD
; EnterProc
; push ebx
; push esi
; push edi
;
; mov esi, pResult
; mov eax, dword ptr [esi]
; mov esi, lpszSection
; mov edi, lpszKey
;
; VMMCall Get_Profile_Boolean
; jc winGet_Profile_Boolean_Fail
; mov esi, pResult
; mov dword ptr [esi], eax
; mov eax, STATUS_SUCCESS
; clc
; jmp winGet_Profile_Boolean_Exit
;
;winGet_Profile_Boolean_Fail:
; mov eax, STATUS_ERROR
; stc
;
;winGet_Profile_Boolean_Exit:
; pop edi
; pop esi
; pop ebx
; LeaveProc
; return
;EndProc _winGet_Profile_Boolean
;------------------------------------------------------------------------------
; FUNC winGet_Profile_Decimal_Int
;
; STATUS winGet_Profile_Decimal_Int(PBYTE lpszSeciton, PBYTE lpszResult, PDWORD *pResult);
;------------------------------------------------------------------------------
;BeginProc _winGet_Profile_Decimal_Int
;ArgVar lpszSection, DWORD
;ArgVar lpszKey, DWORD
;ArgVar pResult, DWORD
; EnterProc
; push ebx
; push esi
; push edi
;
; mov esi, pResult
; mov eax, dword ptr [esi]
; mov esi, lpszSection
; mov edi, lpszKey
;
; VMMCall Get_Profile_Decimal_Int
; jc winGet_Profile_Decimal_Int_Fail
; mov esi, pResult
; mov dword ptr [esi], eax
; mov eax, STATUS_SUCCESS
; clc
; jmp winGet_Profile_Decimal_Int_Exit
;
;winGet_Profile_Decimal_Int_Fail:
; mov eax, STATUS_ERROR
; stc
;
;winGet_Profile_Decimal_Int_Exit:
; pop edi
; pop esi
; pop ebx
; LeaveProc
; return
;EndProc _winGet_Profile_Decimal_Int
;------------------------------------------------------------------------------
; FUNC winGet_Profile_Hex_Int
;
;BOOL winGet_Profile_Hex_Int(PBYTE lpszSeciton, PBYTE lpszKey,
; PDWORD pdwResult);
;------------------------------------------------------------------------------
BeginProc _winGet_Profile_Hex_Int
ArgVar lpszSection, DWORD
ArgVar lpszKey, DWORD
ArgVar pResult, DWORD
EnterProc
push ebx
push esi
push edi
mov esi, pResult
mov eax, dword ptr [esi]
mov esi, lpszSection
mov edi, lpszKey
VMMCall Get_Profile_Hex_Int
jc winGet_Profile_Hex_Int_Fail
mov esi, pResult
mov dword ptr [esi], eax
mov eax, 1
clc
jmp winGet_Profile_Hex_Int_Exit
winGet_Profile_Hex_Int_Fail:
xor eax, eax
stc
winGet_Profile_Hex_Int_Exit:
pop edi
pop esi
pop ebx
LeaveProc
return
EndProc _winGet_Profile_Hex_Int
;------------------------------------------------------------------------------
; FUNC winGet_VMM_Version
;
; STATUS winGet_VMM_Version(PWORD pwVersion);
;------------------------------------------------------------------------------
BeginProc _winGet_VMM_Version
ArgVar pwVersion, DWORD
EnterProc
push esi
VMMCall Get_VMM_Version
mov esi, pwVersion
mov word ptr [esi], ax
clc
pop esi
LeaveProc
return
EndProc _winGet_VMM_Version
;------------------------------------------------------------------------------
; FUNC winVDMAD_Scatter_Lock
;
; STATUS winVDMAD_Scatter_Lock(DWORD dwVM, BYTE bFlags, DWORD pEDDS );
;------------------------------------------------------------------------------
BeginProc _winVDMAD_Scatter_Lock
ArgVar dwVM, DWORD
ArgVar bFlags, BYTE
ArgVar pEDDS, DWORD
EnterProc
mov ebx, dwVM
mov al, bFlags
mov edi, pEDDS
VxDCall VDMAD_Scatter_Lock
jc winVDMAD_Scatter_Lock_Fail
mov eax, STATUS_SUCCESS
jmp winVDMAD_Scatter_Lock_Exit
winVDMAD_Scatter_Lock_Fail :
mov eax, STATUS_ERROR
winVDMAD_Scatter_Lock_Exit :
LeaveProc
return
EndProc _winVDMAD_Scatter_Lock
;------------------------------------------------------------------------------
; FUNC winVDMAD_Scatter_Unlock
;
; STATUS winVDMAD_Scatter_Unlock(DWORD dwVM, BYTE bFlags, DWORD pEDDS );
;------------------------------------------------------------------------------
BeginProc _winVDMAD_Scatter_Unlock
ArgVar dwVM, DWORD
ArgVar bFlags, BYTE
ArgVar pEDDS, DWORD
EnterProc
mov ebx, dwVM
mov al, bFlags
mov edi, pEDDS
VxDCall VDMAD_Scatter_Unlock
jc winVDMAD_Scatter_Unlock_Fail
mov eax, STATUS_SUCCESS
jmp winVDMAD_Scatter_Unlock_Exit
winVDMAD_Scatter_Unlock_Fail :
mov eax, STATUS_ERROR
winVDMAD_Scatter_Unlock_Exit :
LeaveProc
return
EndProc _winVDMAD_Scatter_Unlock
;------------------------------------------------------------------------------
; FUNC winList_Allocate
;
; STATUS winList_Allocate ( DWORD dwListHandle, PDWORD pNode);
;------------------------------------------------------------------------------
BeginProc _winList_Allocate
ArgVar dwListHandle, DWORD
ArgVar pNode, DWORD
EnterProc
push esi
;TRC940902 - The pager might need to move memory around during
;allocation, so it bad to disable interrupts during
;allocation/dellocation.
pushfd
cli
mov esi, dwListHandle
VMMCall List_Allocate
jc winList_Allocate_Fail
popfd
mov esi, pNode
mov [esi],eax
mov eax, STATUS_SUCCESS
clc
jmp winList_Allocate_Exit
winList_Allocate_Fail:
popfd
mov eax, STATUS_ERROR
stc
winList_Allocate_Exit:
pop esi
LeaveProc
return
EndProc _winList_Allocate
;------------------------------------------------------------------------------
; FUNC winList_Attach_Tail
;
; STATUS winList_Attach_Tail ( DWORD dwListHandle, DWORD dwNode);
;------------------------------------------------------------------------------
BeginProc _winList_Attach_Tail
ArgVar dwListHandle, DWORD
ArgVar dwNode, DWORD
EnterProc
push esi
pushfd
cli
mov esi, dwListHandle
mov eax, dwNode
VMMCall List_Attach_Tail
popfd
pop esi
LeaveProc
return
EndProc _winList_Attach_Tail
;------------------------------------------------------------------------------
; FUNC winList_Create
;
; STATUS winList_Create ( DWORD dwNodeSize, PDWORD pNode);
;------------------------------------------------------------------------------
BeginProc _winList_Create
ArgVar dwNodeSize, DWORD
ArgVar pNode, DWORD
EnterProc
push ebx
push ecx
Assert_Ints_Enabled
mov ecx, dwNodeSize
mov eax, LF_Alloc_Error + LF_Async
VMMCall List_Create
jc winList_Create_Fail
mov ebx, pNode
mov [ebx], esi
mov eax, STATUS_SUCCESS
clc
jmp winList_Create_Exit
winList_Create_Fail:
mov eax, STATUS_ERROR
stc
winList_Create_Exit:
pop ecx
pop ebx
LeaveProc
return
EndProc _winList_Create
;------------------------------------------------------------------------------
; FUNC winList_Destroy
;
; STATUS winList_Destroy ( DWORD dwListHandle );
;------------------------------------------------------------------------------
BeginProc _winList_Destroy
ArgVar dwListHandle, DWORD
EnterProc
push esi
mov esi, dwListHandle
VMMCall List_Destroy
pop esi
LeaveProc
return
EndProc _winList_Destroy
;------------------------------------------------------------------------------
; FUNC winList_Get_First
;
; STATUS winList_Get_First ( DWORD dwListHandle, PDWORD pNode);
;------------------------------------------------------------------------------
BeginProc _winList_Get_First
ArgVar dwListHandle, DWORD
ArgVar pNode, DWORD
EnterProc
push esi
pushfd
cli
mov esi, dwListHandle
VMMCall List_Get_First
jz winList_Get_First_Fail
popfd
mov esi, pNode
mov [esi], eax
mov eax, STATUS_SUCCESS
clc
jmp winList_Get_First_Exit
winList_Get_First_Fail:
popfd
mov eax, STATUS_ERROR
stc
winList_Get_First_Exit:
pop esi
LeaveProc
return
EndProc _winList_Get_First
;------------------------------------------------------------------------------
; FUNC winList_Get_Next
;
; STATUS winList_Get_Next ( DWORD dwListHandle, PDWORD pNode);
;------------------------------------------------------------------------------
BeginProc _winList_Get_Next
ArgVar dwListHandle, DWORD
ArgVar pNode, DWORD
EnterProc
push esi
pushfd
cli
mov esi, pNode
mov eax, [esi]
mov esi, dwListHandle
VMMCall List_Get_Next
jz winList_Get_Next_Fail
popfd
mov esi, pNode
mov [esi], eax
mov eax, STATUS_SUCCESS
clc
jmp winList_Get_Next_Exit
winList_Get_Next_Fail:
popfd
mov eax, STATUS_ERROR
stc
winList_Get_Next_Exit:
pop esi
LeaveProc
return
EndProc _winList_Get_Next
;------------------------------------------------------------------------------
; FUNC winList_Deallocate
;
; STATUS winList_Deallocate ( DWORD dwListHandle, DWORD dwNode);
;------------------------------------------------------------------------------
BeginProc _winList_Deallocate
ArgVar dwListHandle, DWORD
ArgVar dwNode, DWORD
EnterProc
push esi
pushfd
cli
mov esi, dwListHandle
mov eax, dwNode
VMMCall List_Deallocate
popfd
pop esi
LeaveProc
return
EndProc _winList_Deallocate
;------------------------------------------------------------------------------
; FUNC winList_Remove
;
; STATUS winList_Remove ( DWORD dwListHandle, DWORD dwNode);
;------------------------------------------------------------------------------
BeginProc _winList_Remove
ArgVar dwListHandle, DWORD
ArgVar dwNode, DWORD
EnterProc
push esi
pushfd
cli
mov esi, dwListHandle
mov eax, dwNode
VMMCall List_Remove
popfd
pop esi
LeaveProc
return
EndProc _winList_Remove
;------------------------------------------------------------------------------
; FUNC winHeapAllocate
;
; PVOID winHeapAllocate ( DWORD dwSize );
;------------------------------------------------------------------------------
BeginProc _winHeapAllocate
ArgVar dwSize, DWORD
EnterProc
push esi
mov eax, dwSize
VMMCall _HeapAllocate < eax, HeapZeroInit >
pop esi
LeaveProc
return
EndProc _winHeapAllocate
;------------------------------------------------------------------------------
; FUNC winHeapFree
;
; STATUS winHeapFree ( DWORD dwAddress );
;------------------------------------------------------------------------------
BeginProc _winHeapFree
ArgVar dwAddress, DWORD
EnterProc
mov eax, dwAddress
VMMCall _HeapFree < eax, 0>
LeaveProc
return
EndProc _winHeapFree
BeginProc _winMapPhysToLinear
ArgVar dwPhysAddr, DWORD
ArgVar dwBytes, DWORD
ArgVar dwFlags, DWORD
EnterProc
VMMCall _MapPhysToLinear < dwPhysAddr, dwBytes, dwFlags >
LeaveProc
return
EndProc _winMapPhysToLinear
BeginProc _winSelectorMapFlat
ArgVar dwVMHandle
ArgVar dwSelector
ArgVar dwFlags
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -