📄 pcidp.lst
字号:
C _PATHSTART ENDS
C
C
C _PATHDATA SEGMENT DWORD PUBLIC _FLAT 'LCODE'
C _PATHDATA ENDS
C
C
C _PATHEND SEGMENT DWORD PUBLIC _FLAT 'LCODE'
C _PATHEND ENDS
C endif
C
C
C ;_16ICODE SEGMENT WORD USE16 PUBLIC '16ICODE'
C ;_16ICODE ENDS
C
C
C ;_RCODE SEGMENT WORD USE16 PUBLIC 'RCODE'
C ;_RCODE ENDS
C
C IFNDEF BLD_COFF
Microsoft (R) Macro Assembler Version 6.11c 11/11/00 07:07:33
PCIDP.ASM - Page 33 - 1
C _LGROUP GROUP _LTEXT, _TEXT, _LDATA, _DATA, _BSS, CONST, _TLS
C _IGROUP GROUP _ITEXT, _IDATA
C _SGROUP GROUP _STEXT, _SDATA
C _DBOGROUP GROUP _DBOSTART, _DBOCODE, _DBODATA
C IF DEBLEVEL
C _PGROUP GROUP _PATHSTART, _PATHDATA, _PATHEND
C ENDIF
C ENDIF
C
C endif
C
C ASSUME CS:FLAT, DS:FLAT, ES:FLAT, SS:FLAT
C
= OFFSET FLAT: C OFFSET32 EQU <OFFSET FLAT:>
C
C
C BeginDoc
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
Microsoft (R) Macro Assembler Version 6.11c 11/11/00 07:07:33
PCIDP.ASM - Page 34 - 1
C EndDoc
C
C Begin_Service_Table MACRO Device_Name, Def_Segment
C
C IFDEF Device_Name&_Name_Based
C IFNDEF @@NextInternalID
C @@NextInternalID = 0
C ENDIF
C @@NextInternalID = (@@NextInternalID + 1)
C Device_Name&_Internal_ID = @@NextInternalID + BASEID_FOR_NAMEBASEDVXD
C DefineVxDName Device_Name, %Device_Name&_Internal_ID
C ENDIF
C
C IFB <Def_Segment>
C BST2 Device_Name, VxD
C ELSE
C BST2 Device_Name, Def_Segment
C ENDIF
C ENDM
C
C DefineVxDName MACRO Device_Name, InternalID
C @@VxDName&InternalID EQU <___&Device_Name&STable>
C ENDM
C
C
C BST2 MACRO Device_Name, Def_Segment
C
C Num_&Device_Name&_Services = 0
C
C IFDEF Create_&Device_Name&_Service_Table
C
C Def_Segment&_LOCKED_DATA_SEG
C
C Device_Name&_Service_Table LABEL DWORD
C
C Device_Name&_Service MACRO Procedure, Local_Seg, Condition
C LOCAL $$&Procedure
C
C IFNB <Condition>
C $$&&Procedure MACRO extern
C IFDEF &Condition
C IFNB <extern>
C EXTRN Procedure:NEAR
C ELSE
C dd OFFSET32 Procedure
C ENDIF
C ELSE
C IFB <extern>
C dd 0
C ENDIF
C ENDIF
C ENDM
C ENDIF
C
Microsoft (R) Macro Assembler Version 6.11c 11/11/00 07:07:33
PCIDP.ASM - Page 35 - 1
C IFDIFI <Procedure>, <RESERVED>
C PUBLIC _&&Procedure
C IF1
C _&&Procedure LABEL DWORD
C ENDIF
C IFDIFI <Local_Seg>, <LOCAL>
C IFNB <Local_Seg>
C Local_Seg&&_SEG
C ELSE
C Def_Segment&_CODE_SEG
C ENDIF
C IFNB <Condition>
C $$&&Procedure extern
C ELSE
C EXTRN Procedure:NEAR
C ENDIF
C IFNB <Local_Seg>
C Local_Seg&&_ENDS
C ELSE
C Def_Segment&_CODE_ENDS
C ENDIF
C ENDIF
C IFNB <Condition>
C $$&&Procedure
C ELSE
C dd OFFSET32 Procedure
C ENDIF
C
C IFDEF Device_Name&_Name_Based
C @@&&Procedure = (Device_Name&_Internal_ID SHL 16) + Num_&Device_Name&_Services
C ELSE
C @@&&Procedure = (Device_Name&_Device_ID SHL 16) + Num_&Device_Name&_Services
C ENDIF
C ELSE
C dd 0
C ENDIF
C Num_&Device_Name&_Services = Num_&Device_Name&_Services + 1
C IFNB <Condition>
C Purge $$&&Procedure
C ENDIF
C ENDM
C
C ELSE
C
C
C
C IFDEF Device_Name&_Name_Based
C
C Device_Name&_Service MACRO Procedure, Local_Seg, Condition
C
C
C IFDIFI <Procedure>, <RESERVED>
C @@&&Procedure = (Device_Name&_Internal_ID SHL 16) + Num_&Device_Name&_Services
C ENDIF
Microsoft (R) Macro Assembler Version 6.11c 11/11/00 07:07:33
PCIDP.ASM - Page 36 - 1
C Num_&Device_Name&_Services = Num_&Device_Name&_Services + 1
C
C ENDM
C ELSE
C
C Device_Name&_Service MACRO Procedure, Local_Seg, Condition
C
C IFDIFI <Procedure>, <RESERVED>
C @@&&Procedure = (Device_Name&_Device_ID SHL 16) + Num_&Device_Name&_Services
C ENDIF
C Num_&Device_Name&_Services = Num_&Device_Name&_Services + 1
C
C ENDM
C ENDIF
C
C ENDIF
C
C ENDM
C
C
C
C End_Service_Table MACRO Device_Name, Def_Segment
C
C PURGE Device_Name&_Service
C
C IFDEF Create_&Device_Name&_Service_Table
C
C IFB <Def_Segment>
C VxD_LOCKED_DATA_ENDS
C ELSE
C Def_Segment&_LOCKED_DATA_ENDS
C ENDIF
C
C ENDIF
C
C ENDM
C
C GetVxDServiceOrdinal macro reg,service
C mov reg,@@&service
C endm
C
C GetVxDServiceAddress macro reg,service
C mov reg,OFFSET32 service
C endm
C
C
C
C
C
C
C
C
C
C
Microsoft (R) Macro Assembler Version 6.11c 11/11/00 07:07:33
PCIDP.ASM - Page 37 - 1
C
C
C
C
C
C
C
C
C Begin_Win32_Services MACRO VxDName
C ifndef Create_Win32_Services
C Create_Win32_Services = 0
C endif
C .errb <VxDName>, <VxD name missing>
C ??w32svcno = 0
C if Create_Win32_Services
C VxDName&_Win32_Services label dword
C dd csvc&VxDName, 0
C endif
C ??inw32svc = 1
C
C VxDName&_Win32_Service MACRO Name
C .erre ??inw32svc, <Missing Begin_Win32_Services>
C if Create_Win32_Services
C dd OFFSET32 Name,cparm&&Name
C endif
C @32&&Name equ ((VxDName&_Device_ID SHL 16) + ??w32svcno)
C ??w32svcno = ??w32svcno + 1
C ENDM
C ENDM
C
C
C
C
C
C
C
C
C
C
C End_Win32_Services MACRO VxDName
C .errb <VxDName>, <VxD name misssing>
C if Create_Win32_Services
C csvc&VxDName equ ($ - VxDName&_Win32_Services)/8 - 1
C endif
C ??inw32svc = 0
C PURGE VxDName&_Win32_Service
C ENDM
C
C
C
C
C
C
C
Microsoft (R) Macro Assembler Version 6.11c 11/11/00 07:07:33
PCIDP.ASM - Page 38 - 1
C
C
C
C
C Declare_Win32_Service MACRO Name, cParms
C ifndef Create_Win32_Services
C Create_Win32_Services = 0
C endif
C if Create_Win32_Services
C ?merge <Name>,,,,<EQU>,<_>,<Name>,<@>,%(cParms*4 + 8)
C ?merge <cparm>,<Name>,,,<EQU>,<cParms>
C VxD_CODE_SEG
C ?merge <EXTRN>,,,,,<_>,<Name>,<@>,%(cParms*4 + 8),<:NEAR>
C VxD_CODE_ENDS
C endif
C ENDM
C
C
C
C
C
C
C
C
C
C
C
C
C Win32call MACRO Service, CallBack
C ifndef Create_Win32_Services
C Create_Win32_Services = 0
C endif
C ife Create_Win32_Services
C mov eax,@32&Service
C ifdef IS_16
C movzx esp,sp
C endif
C call fword ptr [CallBack]
C ifdef DEBUG
C int 3
C endif
C endif
C ENDM
C
C
C
C
C
C
C
C Dword_Align MACRO Seg_Name
C LOCAL segn
C IFDEF MASM6
C align 4
Microsoft (R) Macro Assembler Version 6.11c 11/11/00 07:07:33
PCIDP.ASM - Page 39 - 1
C ELSE
C IFNB <Seg_Name>
C segn equ Seg_Name
C ELSE
C IFE ?_LCODE
C segn equ <_LTEXT>
C ELSE
C IFE ?_ICODE
C segn equ <_ITEXT>
C ELSE
C IFE ?_PCODE
C segn equ <_PTEXT>
C ELSE
C IFE ?_SCODE
C segn equ <_STEXT>
C ELSE
C .err <Dword_Align not supported>
C ENDIF
C ENDIF
C ENDIF
C ENDIF
C ENDIF
C IF (($-OFFSET segn:0) MOD 4)
C db 4 - (($-OFFSET segn:0) MOD 4) DUP (90h)
C ENDIF
C ENDIF
C ENDM
C
C
C BeginDoc
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C EndDoc
C
C Fatal_Error MACRO Msg_Ptr, Exit_Flags
C pushad
C IFB <Msg_Ptr>
C xor esi, esi
C ELSE
Microsoft (R) Macro Assembler Version 6.11c 11/11/00 07:07:33
PCIDP.ASM - Page 40 - 1
C mov esi, Msg_Ptr
C IFB <Exit_Flags>
C xor eax, eax
C ELSE
C mov eax, Exit_Flags
C ENDIF
C ENDIF
C VMMCall Fatal_Error_Handler
C ENDM
C
= 0001 C EF_Hang_On_Exit EQU 1h
C
C
0014 C cb_s STRUC
0000 00000000 C CB_VM_Status DD ?
0004 00000000 C CB_High_Linear DD ?
0008 00000000 C CB_Client_Pointer DD ?
000C 00000000 C CB_VMID DD ?
0010 00000000 C CB_Signature DD ?
C cb_s ENDS
= 62634D56 C VMCB_ID EQU 62634D56H
= 0000 C VMSTAT_EXCLUSIVE_BIT EQU 00H
= 0001 C VMSTAT_EXCLUSIVE EQU (1 SHL VMSTAT_EXCLUSIVE_BIT)
= 0001 C VMSTAT_BACKGROUND_BIT EQU 01H
= 0002 C VMSTAT_BACKGROUND EQU (1 SHL VMSTAT_BACKGROUND_BIT)
= 0002 C VMSTAT_CREATING_BIT EQU 02H
= 0004 C VMSTAT_CREATING EQU (1 SHL VMSTAT_CREATING_BIT)
= 0003 C VMS
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -