📄 pcidp.lst
字号:
Microsoft (R) Macro Assembler Version 6.11c 11/11/00 07:07:33
PCIDP.ASM - Page 1 - 1
PAGE 58,132
;******************************************************************************
TITLE PCIDP.ASM -
;******************************************************************************
;
; Title: PCIDP.asm - Virtual PCI-DP Device Driver
;
; Version: 1.00
;
; Date: Oct 2000
;
; Author:
;
; Note: Best viewed with TABs set to 2.
;------------------------------------------------------------------------------
;
; Change log:
;
; DATE REV DESCRIPTION
; ----------- --- -----------------------------------------------------------
; 24-Oct-2000 1.0 Initial release
;
;==============================================================================
.386p
;******************************************************************************
; Include files.
;******************************************************************************
.xlist
include vmm.inc
C ;****************************************************************************
C ; *
C ; THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY *
C ; KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE *
C ; IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR *
C ; PURPOSE. *
C ; *
C ; Copyright (C) 1993-95 Microsoft Corporation. All Rights Reserved. *
C ; *
C ;****************************************************************************
C
C ifndef _VMM_
= 0001 C _VMM_ EQU 1
= 0000 C FALSE EQU 0
= FFFFFFFF C VMM_TRUE EQU (NOT FALSE)
= 0000 C DEBLEVELRETAIL EQU 0
= 0001 C DEBLEVELNORMAL EQU 1
= 0002 C DEBLEVELMAX EQU 2
C ifndef DEBLEVEL
C ifdef DEBUG
C DEBLEVEL EQU DEBLEVELNORMAL
C else
= 0000 C DEBLEVEL EQU DEBLEVELRETAIL
C endif
C endif
Microsoft (R) Macro Assembler Version 6.11c 11/11/00 07:07:33
PCIDP.ASM - Page 2 - 1
C ifndef WIN31COMPAT
= 0001 C WIN40SERVICES EQU 1
C endif
C ifdef MASM6
C ifndef NO_MASM6_OPTIONS
C
C
C
C option oldmacros
C ifndef NEWSTRUCTS
C option oldstructs
C endif
C option noscoped
C option segment:flat
C option offset:flat
C option proc:private
C endif
C endif
C
C
C
C
C IFDEF MASM6
C BeginDoc MACRO
C ENDM
C EndDoc MACRO
C ENDM
C
C BeginMsg MACRO
C ENDM
C EndMsg MACRO
C ENDM
C ELSE
C BeginDoc EQU <>
C EndDoc EQU <>
C
C BeginMsg EQU <>
C EndMsg EQU <>
C ENDIF
C
= 0000 C UNDEFINED_DEVICE_ID EQU 00000H
= 0001 C VMM_DEVICE_ID EQU 00001H
= 0002 C DEBUG_DEVICE_ID EQU 00002H
= 0003 C VPICD_DEVICE_ID EQU 00003H
= 0004 C VDMAD_DEVICE_ID EQU 00004H
= 0005 C VTD_DEVICE_ID EQU 00005H
= 0006 C V86MMGR_DEVICE_ID EQU 00006H
= 0007 C PAGESWAP_DEVICE_ID EQU 00007H
= 0008 C PARITY_DEVICE_ID EQU 00008H
= 0009 C REBOOT_DEVICE_ID EQU 00009H
= 000A C VDD_DEVICE_ID EQU 0000AH
= 000B C VSD_DEVICE_ID EQU 0000BH
= 000C C VMD_DEVICE_ID EQU 0000CH
= 000D C VKD_DEVICE_ID EQU 0000DH
Microsoft (R) Macro Assembler Version 6.11c 11/11/00 07:07:33
PCIDP.ASM - Page 3 - 1
= 000E C VCD_DEVICE_ID EQU 0000EH
= 000F C VPD_DEVICE_ID EQU 0000FH
= 0010 C BLOCKDEV_DEVICE_ID EQU 00010H
= 0011 C VMCPD_DEVICE_ID EQU 00011H
= 0012 C EBIOS_DEVICE_ID EQU 00012H
= 0013 C BIOSXLAT_DEVICE_ID EQU 00013H
= 0014 C VNETBIOS_DEVICE_ID EQU 00014H
= 0015 C DOSMGR_DEVICE_ID EQU 00015H
= 0016 C WINLOAD_DEVICE_ID EQU 00016H
= 0017 C SHELL_DEVICE_ID EQU 00017H
= 0018 C VMPOLL_DEVICE_ID EQU 00018H
= 0019 C VPROD_DEVICE_ID EQU 00019H
= 001A C DOSNET_DEVICE_ID EQU 0001AH
= 001B C VFD_DEVICE_ID EQU 0001BH
= 001C C VDD2_DEVICE_ID EQU 0001CH
= 001D C WINDEBUG_DEVICE_ID EQU 0001DH
= 001E C TSRLOAD_DEVICE_ID EQU 0001EH
= 001F C BIOSHOOK_DEVICE_ID EQU 0001FH
= 0020 C INT13_DEVICE_ID EQU 00020H
= 0021 C PAGEFILE_DEVICE_ID EQU 00021H
= 0022 C SCSI_DEVICE_ID EQU 00022H
= 0023 C MCA_POS_DEVICE_ID EQU 00023H
= 0024 C SCSIFD_DEVICE_ID EQU 00024H
= 0025 C VPEND_DEVICE_ID EQU 00025H
= 0026 C APM_DEVICE_ID EQU 00026H
= 0026 C VPOWERD_DEVICE_ID EQU APM_DEVICE_ID
= 0027 C VXDLDR_DEVICE_ID EQU 00027H
= 0028 C NDIS_DEVICE_ID EQU 00028H
= 0029 C BIOS_EXT_DEVICE_ID EQU 00029H
= 002A C VWIN32_DEVICE_ID EQU 0002AH
= 002B C VCOMM_DEVICE_ID EQU 0002BH
= 002C C SPOOLER_DEVICE_ID EQU 0002CH
= 002D C WIN32S_DEVICE_ID EQU 0002DH
= 002E C DEBUGCMD_DEVICE_ID EQU 0002EH
= 0033 C CONFIGMG_DEVICE_ID EQU 00033H
= 0034 C DWCFGMG_DEVICE_ID EQU 00034H
= 0035 C SCSIPORT_DEVICE_ID EQU 00035H
= 0036 C VFBACKUP_DEVICE_ID EQU 00036H
= 0037 C ENABLE_DEVICE_ID EQU 00037H
= 0038 C VCOND_DEVICE_ID EQU 00038H
= 003C C ISAPNP_DEVICE_ID EQU 0003CH
= 003D C BIOS_DEVICE_ID EQU 0003DH
= 0040 C IFSMgr_Device_ID EQU 00040H
= 0041 C VCDFSD_DEVICE_ID EQU 00041H
= 0042 C MRCI2_DEVICE_ID EQU 00042H
= 0043 C PCI_DEVICE_ID EQU 00043H
= 0044 C PELOADER_DEVICE_ID EQU 00044H
= 0045 C EISA_DEVICE_ID EQU 00045H
= 0046 C DRAGCLI_DEVICE_ID EQU 00046H
= 0047 C DRAGSRV_DEVICE_ID EQU 00047H
= 0048 C PERF_DEVICE_ID EQU 00048H
= 0049 C AWREDIR_DEVICE_ID EQU 00049H
= 0060 C ETEN_Device_ID EQU 00060H
= 0061 C CHBIOS_Device_ID EQU 00061H
Microsoft (R) Macro Assembler Version 6.11c 11/11/00 07:07:33
PCIDP.ASM - Page 4 - 1
= 0062 C VMSGD_Device_ID EQU 00062H
= 0063 C VPPID_Device_ID EQU 00063H
= 0064 C VIME_Device_ID EQU 00064H
= 0065 C VHBIOSD_Device_ID EQU 00065H
= F000 C BASEID_FOR_NAMEBASEDVXD EQU 0f000H
= 0FFF C BASEID_FOR_NAMEBASEDVXD_MASK EQU 0fffH
= 0000 C VMM_INIT_ORDER EQU 000000000H
= 0000 C DEBUG_INIT_ORDER EQU 000000000H
= 0000 C DEBUGCMD_INIT_ORDER EQU 000000000H
= 00900000 C PERF_INIT_ORDER EQU 000900000H
= 01000000 C APM_INIT_ORDER EQU 001000000H
= 01000000 C VPOWERD_INIT_ORDER EQU APM_INIT_ORDER
= 06000000 C BIOSHOOK_INIT_ORDER EQU 006000000H
= 08000000 C VPROD_INIT_ORDER EQU 008000000H
= 0C000000 C VPICD_INIT_ORDER EQU 00C000000H
= 14000000 C VTD_INIT_ORDER EQU 014000000H
= 16000000 C VXDLDR_INIT_ORDER EQU 016000000H
= 16800000 C ENUMERATOR_INIT_ORDER EQU 016800000H
= 16800000 C ISAPNP_INIT_ORDER EQU ENUMERATOR_INIT_ORDER
= 16800000 C EISA_INIT_ORDER EQU ENUMERATOR_INIT_ORDER
= 16800000 C PCI_INIT_ORDER EQU ENUMERATOR_INIT_ORDER
= 16800001 C BIOS_INIT_ORDER EQU ENUMERATOR_INIT_ORDER+1
= 1680FFFF C CONFIGMG_INIT_ORDER EQU ENUMERATOR_INIT_ORDER+0FFFFH
= 16F00000 C VCDFSD_INIT_ORDER EQU 016F00000H
= 17000000 C IOS_INIT_ORDER EQU 017000000H
= 18000000 C PAGEFILE_INIT_ORDER EQU 018000000H
= 1C000000 C PAGESWAP_INIT_ORDER EQU 01C000000H
= 20000000 C PARITY_INIT_ORDER EQU 020000000H
= 24000000 C REBOOT_INIT_ORDER EQU 024000000H
= 26000000 C EBIOS_INIT_ORDER EQU 026000000H
= 28000000 C VDD_INIT_ORDER EQU 028000000H
= 2C000000 C VSD_INIT_ORDER EQU 02C000000H
= 30000000 C VCD_INIT_ORDER EQU 030000000H
= 2FFFFFFF C COMMDRVR_INIT_ORDER EQU (VCD_INIT_ORDER-1)
= 2FFFFFFD C PRTCL_INIT_ORDER EQU (COMMDRVR_INIT_ORDER-2)
= 2FFFFFFC C MODEM_INIT_ORDER EQU (COMMDRVR_INIT_ORDER-3)
= 2FFFFFFB C PORT_INIT_ORDER EQU (COMMDRVR_INIT_ORDER-4)
= 34000000 C VMD_INIT_ORDER EQU 034000000H
= 38000000 C VKD_INIT_ORDER EQU 038000000H
= 3C000000 C VPD_INIT_ORDER EQU 03C000000H
= 40000000 C BLOCKDEV_INIT_ORDER EQU 040000000H
= 41000000 C MCA_POS_INIT_ORDER EQU 041000000H
= 41400000 C SCSIFD_INIT_ORDER EQU 041400000H
= 41800000 C SCSIMASTER_INIT_ORDER EQU 041800000H
= 42000000 C INT13_INIT_ORDER EQU 042000000H
= 48000000 C VMCPD_INIT_ORDER EQU 048000000H
= 50000000 C BIOSXLAT_INIT_ORDER EQU 050000000H
= 54000000 C VNETBIOS_INIT_ORDER EQU 054000000H
= 58000000 C DOSMGR_INIT_ORDER EQU 058000000H
= 5C000000 C DOSNET_INIT_ORDER EQU 05C000000H
= 60000000 C WINLOAD_INIT_ORDER EQU 060000000H
= 64000000 C VMPOLL_INIT_ORDER EQU 064000000H
= 80000000 C UNDEFINED_INIT_ORDER EQU 080000000H
= 80000000 C WIN32_INIT_ORDER EQU UNDEFINED_INIT_ORDER
Microsoft (R) Macro Assembler Version 6.11c 11/11/00 07:07:33
PCIDP.ASM - Page 5 - 1
= 80000000 C VCOND_INIT_ORDER EQU UNDEFINED_INIT_ORDER
= 81000000 C WINDEBUG_INIT_ORDER EQU 081000000H
= 90000000 C VDMAD_INIT_ORDER EQU 090000000H
= A0000000 C V86MMGR_INIT_ORDER EQU 0A0000000H
= A0010000 C IFSMgr_Init_Order EQU 10000H+V86MMGR_Init_Order
= A0010100 C FSD_Init_Order EQU 00100H+IFSMgr_Init_Order
= A0060000 C VFD_INIT_ORDER EQU 50000H+IFSMgr_Init_Order
= A8000000 C UNDEF_TOUCH_MEM_INIT_ORDER EQU 0A8000000H
= B0000000 C SHELL_INIT_ORDER EQU 0B0000000H
C
C
C
C
C
C
C IO_Delay macro
C jmp $+2
C ENDM
C
= 0000 C VXD_FAILURE EQU 0
= 0001 C VXD_SUCCESS EQU 1
C
0020 C Pushad_Struc STRUC
0000 00000000 C Pushad_EDI DD ?
0004 00000000 C Pushad_ESI DD ?
0008 00000000 C Pushad_EBP DD ?
000C 00000000 C Pushad_ESP DD ?
0010 00000000 C Pushad_EBX DD ?
0014 00000000 C Pushad_EDX DD ?
0018 00000000 C Pushad_ECX DD ?
001C 00000000 C Pushad_EAX DD ?
C Pushad_Struc ENDS
C ifndef Not_VxD
= 0000 C ??_CUR_CODE_SEG = 0
C
= 0001 C ??_LCODE = 1
= 0002 C ??_ICODE = 2
= 0003 C ??_PCODE = 3
= 0004 C ??_SCODE = 4
= 0005 C ??_DBOCODE = 5
= 0006 C ??_16ICODE = 6
= 0007 C ??_RCODE = 7
= 0008 C ??_LOCKABLECODE = 8
C
= (??_CUR_CODE_SEG MOD 16) - ?? C ?_LCODE equ <(??_CUR_CODE_SEG MOD 16) - ??_LCODE>
_LCODE
= (??_CUR_CODE_SEG MOD 16) - ?? C ?_ICODE equ <(??_CUR_CODE_SEG MOD 16) - ??_ICODE>
_ICODE
= (??_CUR_CODE_SEG MOD 16) - ?? C ?_PCODE equ <(??_CUR_CODE_SEG MOD 16) - ??_PCODE>
_PCODE
= (??_CUR_CODE_SEG MOD 16) - ?? C ?_SCODE equ <(??_CUR_CODE_SEG MOD 16) - ??_SCODE>
_SCODE
= (??_CUR_CODE_SEG MOD 16) - ?? C ?_DBOCODE equ <(??_CUR_CODE_SEG MOD 16) - ??_DBOCODE>
_DBOCODE
Microsoft (R) Macro Assembler Version 6.11c 11/11/00 07:07:33
PCIDP.ASM - Page 6 - 1
= (??_CUR_CODE_SEG MOD 16) - ?? C ?_16ICODE equ <(??_CUR_CODE_SEG MOD 16) - ??_16ICODE>
_16ICODE
= (??_CUR_CODE_SEG MOD 16) - ?? C ?_RCODE equ <(??_CUR_CODE_SEG MOD 16) - ??_RCODE>
_RCODE
= (??_CUR_CODE_SEG MOD 16) - ?? C ?_LOCKABLECODE equ <(??_CUR_CODE_SEG MOD 16) - ??_LOCKABLECODE>
_LOCKABLECODE
C
C ifndef NO_SEGMENTS
C
C
C
C
C
C IFDEF MASM6
= FLAT C _FLAT EQU FLAT
C ELSE
C _FLAT EQU USE32
C ENDIF
C
C
00000000 C _LTEXT SEGMENT DWORD PUBLIC _FLAT 'LCODE'
0000 C _LTEXT ENDS
C
00000000 C _TEXT SEGMENT DWORD PUBLIC _FLAT 'LCODE'
0000 C _TEXT ENDS
C
C
00000000 C _PTEXT SEGMENT DWORD PUBLIC _FLAT 'PCODE'
0000 C _PTEXT ENDS
C
C
C
C MakeCodeSeg MACRO seglist, classname, grpname, iseg
C
C IRP segname,<seglist>
C
C IFNB <classname>
C segname SEGMENT DWORD PUBLIC _FLAT "&classname&CODE"
C ELSE
C segname SEGMENT DWORD PUBLIC _FLAT "&segname&CODE"
C ENDIF
C
C IFB <iseg>
C VxD_&&segname&&_CODE_SEG MACRO
C segname SEGMENT
C ??_CUR_CODE_SEG = ??_CUR_CODE_SEG SHL 4 + ??_PCODE
C ASSUME cs:FLAT, ds:FLAT, es:FLAT, ss:FLAT
C
C ENDM
C ELSE
C VxD_&&segname&&_CODE_SEG MACRO
C segname SEGMENT
C ??_CUR_CODE_SEG = ??_CUR_CODE_SEG SHL 4 + iseg
C ASSUME cs:FLAT, ds:FLAT, es:FLAT, ss:FLAT
Microsoft (R) Macro Assembler Version 6.11c 11/11/00 07:07:33
PCIDP.ASM - Page 7 - 1
C
C ENDM
C ENDIF
C
C VxD_&&segname&&_CODE_ENDS MACRO
C ??_CUR_CODE_SEG = ??_CUR_CODE_SEG SHR 4
C segname ENDS
C ENDM
C
C segname ENDS
C
C IFNDEF BLD_COFF
C IFNB <grpname>
C _&grpname GROUP segname
C ELSE
C _&&segname GROUP segname
C ENDIF
C ENDIF
C
C ENDM
C
C ENDM
C
C MakeCodeSeg <LOCKABLE_BEGIN, LOCKABLE, LOCKABLE_END>, \
C LOCKABLE, LOCKABLE, ??_LOCKABLECODE
1C
1C IRP segname,<LOCKABLE_BEGIN, LOCKABLE, LOCKABLE_END>
1C
1C IFNB <LOCKABLE>
1C segname SEGMENT DWORD PUBLIC _FLAT "LOCKABLECODE"
1C ELSE
1C segname SEGMENT DWORD PUBLIC _FLAT "&segname&CODE"
1C ENDIF
1C
1C IFB <??_LOCKABLECODE>
1C VxD_&segname&_CODE_SEG MACRO
1C segname SEGMENT
1C ??_CUR_CODE_SEG = ??_CUR_CODE_SEG SHL 4 + ??_PCODE
1C ASSUME cs:FLAT, ds:FLAT, es:FLAT, ss:FLAT
1C
1C ENDM
1C ELSE
1C VxD_&segname&_CODE_SEG MACRO
1C segname SEGMENT
1C ??_CUR_CODE_SEG = ??_CUR_CODE_SEG SHL 4 + ??_LOCKABLECODE
1C ASSUME cs:FLAT, ds:FLAT, es:FLAT, ss:FLAT
1C
1C ENDM
1C ENDIF
1C
1C VxD_&segname&_CODE_ENDS MACRO
1C ??_CUR_CODE_SEG = ??_CUR_CODE_SEG SHR 4
1C segname ENDS
1C ENDM
Microsoft (R) Macro Assembler Version 6.11c 11/11/00 07:07:33
PCIDP.ASM - Page 8 - 1
1C
1C segname ENDS
1C
1C IFNDEF BLD_COFF
1C IFNB <LOCKABLE>
1C _LOCKABLE GROUP segname
1C ELSE
1C _&segname GROUP segname
1C ENDIF
1C ENDIF
1C
1C ENDM
2C
2C IFNB <LOCKABLE>
00000000 2C LOCKABLE_BEGIN SEGMENT DWORD PUBLIC _FLAT "LOCKABLECODE"
2C ELSE
2C LOCKABLE_BEGIN SEGMENT DWORD PUBLIC _FLAT "LOCKABLE_BEGINCODE"
2C ENDIF
2C
2C IFB <??_LOCKABLECODE>
2C VxD_LOCKABLE_BEGIN_CODE_SEG MACRO
2C LOCKABLE_BEGIN SEGMENT
2C ??_CUR_CODE_SEG = ??_CUR_CODE_SEG SHL 4 + ??_PCODE
2C ASSUME cs:FLAT, ds:FLAT, es:FLAT, ss:FLAT
2C
2C ENDM
2C ELSE
2C VxD_LOCKABLE_BEGIN_CODE_SEG MACRO
2C LOCKABLE_BEGIN SEGMENT
2C ??_CUR_CODE_SEG = ??_CUR_CODE_SEG SHL 4 + ??_LOCKABLECODE
2C ASSUME cs:FLAT, ds:FLAT, es:FLAT, ss:FLAT
2C
2C ENDM
2C ENDIF
2C
2C VxD_LOCKABLE_BEGIN_CODE_ENDS MACRO
2C ??_CUR_CODE_SEG = ??_CUR_CODE_SEG SHR 4
2C LOCKABLE_BEGIN ENDS
2C ENDM
2C
0000 2C LOCKABLE_BEGIN ENDS
2C
2C IFNDEF BLD_COFF
2C IFNB <LOCKABLE>
2C _LOCKABLE GROUP LOCKABLE_BEGIN
2C ELSE
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -