📄 vmmz.asm
字号:
ret 2*4
EndCDecl Exec_VxD_Int@8
StartCDecl Hook_Device_Service@8
push esi
mov esi, [esp+12]
mov eax, [esp+8]
VxDCall Hook_Device_Service
;not implemented
pop esi
ret 2*4
EndCDecl Hook_Device_Service@8
StartCDecl System_Control@28
pusha
mov edx, [esp+52] ; Param3
mov edi, [esp+48] ; Param2
mov esi, [esp+44] ; Param1
mov ebx, [esp+40] ; VM handle
mov eax, [esp+36] ; system control msg
VxDCall System_Control
setnc al ; Return TRUE if successful
and eax, 1
push eax
mov eax, [esp+64] ; Get pointer to thread handle
jz @f
mov [eax], edi
@@:
mov eax, [esp+60] ; Get pointer to HVM
jz @f
mov [eax], ebx ; Return new VM handle
@@:
popa
ret 7*4
EndCDecl System_Control@28
StartCDecl Simulate_IO@20
push ebx
push ebp
push esi
push edi
mov ebp, [esp+36] ; address of Client_Reg_Struc
mov edx, [esp+32] ; I/O port number
mov ecx, [esp+28] ; type of I/O operation
mov ebx, [esp+24] ; VM handle
mov eax, [esp+20] ; data for output operations
VxDCall Simulate_IO
pop edi
pop esi
pop ebp
pop ebx
ret 5*4
EndCDecl Simulate_IO@20
StartCDecl Install_Mult_IO_Handlers@4
push edi
mov edi, [esp+8] ; points to an I/O table
VxDCall Install_Mult_IO_Handlers
setnc al
and eax, 1
pop edi
ret 1*4
EndCDecl Install_Mult_IO_Handlers@4
StartCDecl Install_IO_Handler@8
push esi
mov edx, [esp+12] ; I/O port number
mov esi, [esp+8] ; points to callback procedure
VxDCall Install_IO_Handler
setnc al
and eax, 1
pop esi
ret 2*4
EndCDecl Install_IO_Handler@8
StartCDecl Enable_Global_Trapping@4
mov edx, [esp+4] ; I/O port number
VxDCall Enable_Global_Trapping
ret 1*4
EndCDecl Enable_Global_Trapping@4
StartCDecl Enable_Local_Trapping@8
push ebx
mov edx, [esp+12] ; I/O port number
mov ebx, [esp+8] ; VM handle
VxDCall Enable_Local_Trapping
pop ebx
ret 2*4
EndCDecl Enable_Local_Trapping@8
StartCDecl Disable_Global_Trapping@4
mov edx, [esp+4] ; I/O port number
VxDCall Disable_Global_Trapping
ret 1*4
EndCDecl Disable_Global_Trapping@4
StartCDecl Disable_Local_Trapping@8
push ebx
mov edx, [esp+12] ; I/O port number
mov ebx, [esp+8] ; VM handle
VxDCall Disable_Local_Trapping
pop ebx
ret 2*4
EndCDecl Disable_Local_Trapping@8
StartCDecl Get_Profile_Decimal_Int@16
push esi
push edi
push ebx
mov eax, [esp+24] ; points to default value
mov edi, [esp+20] ; points to key name
mov esi, [esp+16] ; points to section name
VxDCall Get_Profile_Decimal_Int
xor ebx, ebx ; save return flags
setc bl
setz bh
push eax
mov eax, [esp+28] ; store 'found' flags
mov [eax], ebx
pop eax
pop ebx
pop edi
pop esi
ret 4*4
EndCDecl Get_Profile_Decimal_Int@16
StartCDecl Get_Profile_Fixed_Point@20
push esi
push edi
push ebx
mov eax, [esp+28] ; default
mov ecx, [esp+24] ; num places
mov edi, [esp+20] ; entry name
mov esi, [esp+16] ; section name
VxDCall Get_Profile_Fixed_Point
xor ebx, ebx ; save return flags
setc bl
setz bh
push eax
mov eax, [esp+28] ; store 'found' flags
mov [eax], ebx
pop eax
pop ebx
pop edi
pop esi
ret 5*4
EndCDecl Get_Profile_Fixed_Point@20
StartCDecl Convert_Decimal_String@8
mov edx, [esp+4] ; address of decimal string
VxDCall Convert_Decimal_String
mov ecx, eax ; save return value in ecx
mov eax, [esp+8] ; store converted value
mov [eax], ecx
mov eax, edx ; return pointer to end of string
ret 2*4
EndCDecl Convert_Decimal_String@8
StartCDecl Convert_Fixed_Point_String@12
mov edx, [esp+8] ; address of fixed-point string
mov ecx, [esp+4] ; no of decimal places
VxDCall Convert_Fixed_Point_String
mov ecx, eax ; save return value in ecx
mov eax, [esp+12] ; store converted value
mov [eax], ecx
mov eax, edx ; return pointer to end of string
ret 3*4
EndCDecl Convert_Fixed_Point_String@12
StartCDecl Convert_Hex_String@8
mov edx, [esp+4] ; address of hexadecimal string
VxDCall Convert_Hex_String
mov ecx, eax ; save return value in ecx
mov eax, [esp+8] ; store converted value
mov [eax], ecx
mov eax, edx ; return pointer to end of string
ret 2*4
EndCDecl Convert_Hex_String@8
StartCDecl Convert_Boolean_String@8
mov edx, [esp+4] ; address of Boolean string
VxDCall Convert_Boolean_String
jc @f
mov edx, eax
and edx, 1 ; convert -1 to 1
mov eax, [esp+8] ; store boolean value
mov [eax], edx
mov eax, 1 ; return TRUE
ret 2*4
@@:
xor eax, eax ; not successful -return FALSE
ret 2*4
EndCDecl Convert_Boolean_String@8
StartCDecl Get_Profile_String@16
push ebx
push esi
push edi
mov edx, [esp+24] ; default value
mov edi, [esp+20] ; entry name
mov esi, [esp+16] ; section name
VxDCall Get_Profile_String
xor ebx, ebx ; save return flags
setc bl
mov eax, [esp+28] ; store 'found' flags
mov [eax], ebx
mov eax, edx ; return string
pop edi
pop esi
pop ebx
ret 4*4
EndCDecl Get_Profile_String@16
StartCDecl Get_Next_Profile_String@12
push edi
push ebx
mov edi, [esp+16] ; points to keyname for entry
mov edx, [esp+12] ; points to previous entry value
VxDCall Get_Next_Profile_String
xor ebx, ebx ; save return flags
setc bl
mov eax, [esp+28] ; store 'found' flags
mov [eax], ebx
mov eax, edx ; return string
pop ebx
pop edi
ret 3*4
EndCDecl Get_Next_Profile_String@12
StartCDecl OpenFile@12
push edi
push ebx
mov edi, [esp+16] ; buffer to receive full path
mov edx, [esp+12] ; address of name of file to open
VxDCall OpenFile
xor ebx, ebx ; save return flags
setc bl
mov eax, [esp+28] ; store 'found' flags
mov [eax], ebx
mov eax, edx ; return handle
pop ebx
pop edi
ret 3*4
EndCDecl OpenFile@12
StartCDecl Get_PSP_Segment@0
VxDCall Get_PSP_Segment
ret 0*4
EndCDecl Get_PSP_Segment@0
StartCDecl Set_PM_Int_Type@8
mov edx, [esp+8] ; 0 if trap gate, else interrupt gate
mov eax, [esp+4] ; interrupt number
VxDCall Set_PM_Int_Type
ret 2*4
EndCDecl Set_PM_Int_Type@8
StartCDecl Get_Last_Updated_VM_Exec_Time@4
push ebx
mov ebx, [esp+8] ; VM handle
VxDCall Get_Last_Updated_VM_Exec_Time
pop ebx
ret 1*4
EndCDecl Get_Last_Updated_VM_Exec_Time@4
StartCDecl Get_Name_Of_Ugly_TSR@4
push ebx
VxDCall Get_Name_Of_Ugly_TSR
jz @f
mov ecx, eax
mov eax, [esp+8] ; Get pointer to TSR name
mov [eax], ecx ; Store first 4 chars
add eax, 4
mov [eax], ebx ; Store next 4 chars
add eax, 4
xor ebx, ebx
mov [eax], bl ; Zero terminator
mov eax, 1 ; Return TRUE
pop ebx
ret 1*4
@@:
xor eax, eax ; Return FALSE
pop ebx
ret 1*4
EndCDecl Get_Name_Of_Ugly_TSR@4
StartCDecl Set_Physical_HMA_Alias@4
push esi
push edi
mov esi, [esp+12] ; points to page-table entries for physical HMA alias
VxDCall Set_Physical_HMA_Alias
pop edi
pop esi
ret 1*4
EndCDecl Set_Physical_HMA_Alias@4
StartCDecl Get_Crit_Status_No_Block@8
push ebx
VxDCall Get_Crit_Status_No_Block
setc al
and eax, 1
push eax
mov eax, [esp+16] ; Get pointer to count
mov [eax], ecx ; Return count
mov eax, [esp+12] ; Get pointer to VM handle
mov [eax], ebx ; Return VM handle
pop eax
pop ebx
ret 2*4
EndCDecl Get_Crit_Status_No_Block@8
StartCDecl Call_When_Thread_Switched@4
push esi
mov esi, [esp+8] ; thread switch callback
VxDCall Call_When_Thread_Switched
pop esi
ret 1*4
EndCDecl Call_When_Thread_Switched@4
StartCDecl Test_Cur_Thread_Handle@4
push edi
mov edi, [esp+8] ; handle to thread
VxDCall Test_Cur_Thread_Handle
setz al
and eax, 1
pop edi
ret 1*4
EndCDecl Test_Cur_Thread_Handle@4
StartCDecl Get_Sys_Thread_Handle@0
push edi
VxDCall Get_Sys_Thread_Handle
mov eax, edi
pop edi
ret 0*4
EndCDecl Get_Sys_Thread_Handle@0
StartCDecl Test_Sys_Thread_Handle@4
push edi
mov edi, [esp+8] ; handle to thread
VxDCall Test_Sys_Thread_Handle
setz al
and eax, 1
pop edi
ret 1*4
EndCDecl Test_Sys_Thread_Handle@4
StartCDecl Validate_Thread_Handle@4
push edi
VxDCall Validate_Thread_Handle
setnc al
and eax, 1
pop edi
ret 1*4
EndCDecl Validate_Thread_Handle@4
StartCDecl Get_Initial_Thread_Handle@4
push ebx
push edi
mov ebx, [esp+12] ; VM handle
VxDCall Get_Initial_Thread_Handle
mov eax, edi
pop edi
pop ebx
ret 1*4
EndCDecl Get_Initial_Thread_Handle@4
StartCDecl Test_Initial_Thread_Handle@4
push edi
mov edi, [esp+8] ; handle to thread
VxDCall Test_Initial_Thread_Handle
setc al
and eax, 1
pop edi
ret 1*4
EndCDecl Test_Initial_Thread_Handle@4
StartCDecl Get_Next_Thread_Handle@0
push edi
VxDCall Get_Next_Thread_Handle
mov eax, edi
pop edi
ret 0*4
EndCDecl Get_Next_Thread_Handle@0
StartCDecl Remove_IO_Handler@4
mov edx, [esp+4] ; I/O port address
VxDCall Remove_IO_Handler
setnc al
and eax, 1
ret 1*4
EndCDecl Remove_IO_Handler@4
StartCDecl Remove_Mult_IO_Handlers@4
push edi
mov edi, [esp+8] ; VxD I/O table
VxDCall Remove_Mult_IO_Handlers
pop edi
ret 1*4
EndCDecl Remove_Mult_IO_Handlers@4
StartCDecl Unhook_Device_Service@8
push esi
mov esi, [esp+8]
VxDCall Unhook_Device_Service
setnc al
and eax, 1
pop esi
ret 2*4
EndCDecl Unhook_Device_Service@8
StartCDecl Cancel_Call_When_Not_Critical@4
push esi
mov esi, [esp+8]
VxDCall Cancel_Call_When_Not_Critical
setnc al
and eax, 1
pop esi
ret 1*4
EndCDecl Cancel_Call_When_Not_Critical@4
StartCDecl Signal_Semaphore_No_Switch@4
mov eax, [esp+4]
VxDCall Signal_Semaphore_No_Switch
ret 1*4
EndCDecl Signal_Semaphore_No_Switch@4
StartCDecl Get_Crit_Status_Thread@8
push edi
VxDCall Get_Crit_Status_Thread
setc al
and eax, 1
push eax
mov eax, [esp+16]
mov [eax], edi ; return thread
mov eax, [esp+12]
mov [eax], ecx ; return count
pop eax
pop edi
ret 2*4
EndCDecl Get_Crit_Status_Thread@8
StartCDecl Time_Slice_Sleep@4
mov eax, [esp+4]
VxDCall Time_Slice_Sleep
setnz al ; return TRUE if sleep timed out
and eax, 1
ret 1*4
EndCDecl Time_Slice_Sleep@4
MakeCDecl _AddInstanceItem
MakeCDecl _Allocate_Device_CB_Area
MakeCDecl _Allocate_LDT_Selector
MakeCDecl _AllocateThreadDataSlot
MakeCDecl _Deallocate_Device_CB_Area
MakeCDecl _FreeThreadDataSlot
MakeCDecl _GetLastUpdatedThreadExecTime
MakeCDecl _GetThreadExecTime
MakeCDecl _ModifyPageBits
MakeCDecl _PageCommit
; Search for _TetradynePage in vxbuild.h and see comment there
StartCDecl _TetradynePageReserve
VxDJmp _PageReserve
EndCDecl _TetradynePageReserve
StartCDecl _TetradynePageCommitPhys
VxDJmp _PageCommitPhys
EndCDecl _TetradynePageCommitPhys
MakeCDecl _CopyPageTable
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -