⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 miniport.cod

📁 James Antognini和Tom Divine提供的PASSTHRU的编成实例。
💻 COD
📖 第 1 页 / 共 5 页
字号:
; Listing generated by Microsoft (R) Optimizing Compiler Version 13.00.9178 

	TITLE	.\miniport.c
	.386P
include listing.inc
if @Version gt 510
.model FLAT
else
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
_DATA	SEGMENT DWORD USE32 PUBLIC 'DATA'
_DATA	ENDS
CONST	SEGMENT DWORD USE32 PUBLIC 'CONST'
CONST	ENDS
_BSS	SEGMENT DWORD USE32 PUBLIC 'BSS'
_BSS	ENDS
$$SYMBOLS	SEGMENT BYTE USE32 'DEBSYM'
$$SYMBOLS	ENDS
$$TYPES	SEGMENT BYTE USE32 'DEBTYP'
$$TYPES	ENDS
_TLS	SEGMENT DWORD USE32 PUBLIC 'TLS'
_TLS	ENDS
;	COMDAT _MPInitialize@24
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
;	COMDAT _MPSend@12
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
;	COMDAT _MPSendPackets@12
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
;	COMDAT _MPQueryInformation@24
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
;	COMDAT _MPQueryPNPCapabilities@8
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
;	COMDAT _MPSetInformation@24
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
;	COMDAT _MPProcessSetPowerOid@24
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
;	COMDAT _MPReturnPacket@8
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
;	COMDAT _MPTransferData@24
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
;	COMDAT _MPHalt@4
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
;	COMDAT _MPCancelSendPackets@8
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
;	COMDAT _MPDevicePnPEvent@16
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
;	COMDAT _MPAdapterShutdown@4
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
;	COMDAT _MPFreeAllPacketPools@4
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
FLAT	GROUP _DATA, CONST, _BSS
	ASSUME	CS: FLAT, DS: FLAT, SS: FLAT
endif

INCLUDELIB LIBC
INCLUDELIB OLDNAMES

_DATA	SEGMENT
COMM	_DrvCompileInfo:BYTE:016H
_home3	DB	00H
	DB	0c0H
	DB	0a8H
	DB	082H
	DB	050H
	DB	07bH
	ORG $+2
_home2_2 DB	00H
	DB	020H
	DB	078H
	DB	00H
	DB	0e9H
	DB	0cdH
	ORG $+2
_home2_4 DB	00H
	DB	04H
	DB	05aH
	DB	07dH
	DB	04dH
	DB	00H
	ORG $+2
_home3IPAddr DD	0c0a80105H
_home2_2IPAddr DD 0c0a80102H
_home2_4IPAddr DD 0c0a80104H
_DATA	ENDS
CONST	SEGMENT
_NICGuidList DD	05635de7fH
	DW	044e4H
	DW	04dd6H
	DB	0b2H
	DB	0a8H
	DB	02aH
	DB	02aH
	DB	088H
	DB	08aH
	DB	049H
	DB	0b3H
	DD	0ffa0c901H
	DD	04H
	DD	031H
	DD	05635de81H
	DW	044e4H
	DW	04dd6H
	DB	0b2H
	DB	0a8H
	DB	02aH
	DB	02aH
	DB	088H
	DB	08aH
	DB	049H
	DB	0b3H
	DD	0ffa0c903H
	DD	04H
	DD	071H
CONST	ENDS
_DATA	SEGMENT
?DateCompiledBase@?2??MPInitialize@@9@9 DB 'Dec  3 2003', 00H ; `MPInitialize'::`3'::DateCompiledBase
?TimeCompiledBase@?2??MPInitialize@@9@9 DB ' 17:42:26', 00H ; `MPInitialize'::`3'::TimeCompiledBase
_DATA	ENDS
PUBLIC	_MPInitialize@24
EXTRN	_PtRegisterDevice@0:NEAR
EXTRN	__imp__NdisAcquireSpinLock@4:NEAR
EXTRN	__imp__NdisReleaseSpinLock@4:NEAR
EXTRN	__imp__NdisIMGetDeviceContext@4:NEAR
EXTRN	__imp__NdisInitializeReadWriteLock@4:NEAR
EXTRN	__imp__NdisMSetAttributesEx@20:NEAR
EXTRN	_pAdaptList:DWORD
EXTRN	_GlobalLock:QWORD
EXTRN	__imp__RtlAssert@16:NEAR
EXTRN	_PassthruWMISetAddrArray@12:NEAR
EXTRN	__imp__NdisSetEvent@4:NEAR
EXTRN	_DbgPrint:NEAR
;	COMDAT _MPInitialize@24
; File g:\pcadev\ndisim\passthruex\part2\james\james\sys\miniport.c
_TEXT	SEGMENT
$SG16053 DB	'Passthru: ', 00H
	ORG $+1
$SG16054 DB	'JApassthru.miniport v1.03 (compiled %s)', 0aH, 00H
	ORG $+3
$SG16055 DB	'Passthru: ', 00H
	ORG $+1
$SG16056 DB	'==> Miniport Initialize:  Adapt %p', 0aH, 00H
$SG16070 DB	'Passthru: ', 00H
	ORG $+5
$SG16071 DB	'MPInitialize():  Failed inPassthruWMISetAddrArray(), sta'
	DB	'tus 0x%08x!', 0aH, 00H
	ORG $+3
$SG16077 DB	'g:\pcadev\ndisim\passthruex\part2\james\james\sys\minipo'
	DB	'rt.c', 00H
	ORG $+3
$SG16078 DB	'pAdapt->MiniportInitPending == TRUE', 00H
$SG16079 DB	'Passthru: ', 00H
	ORG $+1
$SG16080 DB	'<== Miniport Initialize: Adapt %p, Status %x', 0aH, 00H
; Function compile flags: /Odt
tv206 = -92
tv258 = -85
tv255 = -84
tv252 = -80
tv251 = -76
tv246 = -69
tv243 = -68
tv241 = -64
tv89 = -57
tv86 = -56
tv88 = -52
tv87 = -48
tv81 = -41
tv77 = -40
tv80 = -36
tv79 = -32
_DateCompiled$16050 = -28
_Status$ = -16
_Medium$ = -12
_i$ = -8
_pAdapt$ = -4
_OpenErrorStatus$ = 8
_SelectedMediumIndex$ = 12
_MediumArray$ = 16
_MediumArraySize$ = 20
_MiniportAdapterHandle$ = 24
_WrapperConfigurationContext$ = 28
_MPInitialize@24 PROC NEAR				; COMDAT

; 122  : {

  0015e	55		 push	 ebp
  0015f	8b ec		 mov	 ebp, esp
  00161	83 ec 5c	 sub	 esp, 92			; 0000005cH
  00164	56		 push	 esi
  00165	57		 push	 edi

; 123  :     UINT            i;
; 124  :     PADAPT          pAdapt;
; 125  :     NDIS_STATUS     Status = NDIS_STATUS_FAILURE;

  00166	c7 45 f0 01 00
	00 c0		 mov	 DWORD PTR _Status$[ebp], -1073741823 ; c0000001H
$L16043:

; 126  :     NDIS_MEDIUM     Medium;
; 127  : 
; 128  :     UNREFERENCED_PARAMETER(WrapperConfigurationContext);
; 129  :     
; 130  :     do
; 131  :     {
; 132  : 
; 133  :         // Information output.  ja, 29.11.2003.                                                                                                              
; 134  : 
; 135  :         char                     static DateCompiledBase[] = __DATE__,
; 136  :                                         TimeCompiledBase[] = " "__TIME__;
; 137  :         char                            DateCompiled[] =  // Build date in preferred (dd mmm yyyy) format.
; 138  :                                           {DateCompiledBase[4], DateCompiledBase[5], DateCompiledBase[6],

  0016d	a0 04 00 00 00	 mov	 al, BYTE PTR ?DateCompiledBase@?2??MPInitialize@@9@9+4
  00172	88 45 e4	 mov	 BYTE PTR _DateCompiled$16050[ebp], al
  00175	8a 0d 05 00 00
	00		 mov	 cl, BYTE PTR ?DateCompiledBase@?2??MPInitialize@@9@9+5
  0017b	88 4d e5	 mov	 BYTE PTR _DateCompiled$16050[ebp+1], cl
  0017e	8a 15 06 00 00
	00		 mov	 dl, BYTE PTR ?DateCompiledBase@?2??MPInitialize@@9@9+6
  00184	88 55 e6	 mov	 BYTE PTR _DateCompiled$16050[ebp+2], dl

; 139  :                                            DateCompiledBase[0], DateCompiledBase[1], DateCompiledBase[2], DateCompiledBase[3],

  00187	a0 00 00 00 00	 mov	 al, BYTE PTR ?DateCompiledBase@?2??MPInitialize@@9@9
  0018c	88 45 e7	 mov	 BYTE PTR _DateCompiled$16050[ebp+3], al
  0018f	8a 0d 01 00 00
	00		 mov	 cl, BYTE PTR ?DateCompiledBase@?2??MPInitialize@@9@9+1
  00195	88 4d e8	 mov	 BYTE PTR _DateCompiled$16050[ebp+4], cl
  00198	8a 15 02 00 00
	00		 mov	 dl, BYTE PTR ?DateCompiledBase@?2??MPInitialize@@9@9+2
  0019e	88 55 e9	 mov	 BYTE PTR _DateCompiled$16050[ebp+5], dl
  001a1	a0 03 00 00 00	 mov	 al, BYTE PTR ?DateCompiledBase@?2??MPInitialize@@9@9+3
  001a6	88 45 ea	 mov	 BYTE PTR _DateCompiled$16050[ebp+6], al

; 140  :                                            DateCompiledBase[7], DateCompiledBase[8], DateCompiledBase[9], DateCompiledBase[10],

  001a9	8a 0d 07 00 00
	00		 mov	 cl, BYTE PTR ?DateCompiledBase@?2??MPInitialize@@9@9+7
  001af	88 4d eb	 mov	 BYTE PTR _DateCompiled$16050[ebp+7], cl
  001b2	8a 15 08 00 00
	00		 mov	 dl, BYTE PTR ?DateCompiledBase@?2??MPInitialize@@9@9+8
  001b8	88 55 ec	 mov	 BYTE PTR _DateCompiled$16050[ebp+8], dl
  001bb	a0 09 00 00 00	 mov	 al, BYTE PTR ?DateCompiledBase@?2??MPInitialize@@9@9+9
  001c0	88 45 ed	 mov	 BYTE PTR _DateCompiled$16050[ebp+9], al
  001c3	8a 0d 0a 00 00
	00		 mov	 cl, BYTE PTR ?DateCompiledBase@?2??MPInitialize@@9@9+10
  001c9	88 4d ee	 mov	 BYTE PTR _DateCompiled$16050[ebp+10], cl

; 141  :                                            0x0
; 142  :                                           };

  001cc	c6 45 ef 00	 mov	 BYTE PTR _DateCompiled$16050[ebp+11], 0

; 143  : 
; 144  :         if (' '==DateCompiled[0])

  001d0	0f be 55 e4	 movsx	 edx, BYTE PTR _DateCompiled$16050[ebp]
  001d4	83 fa 20	 cmp	 edx, 32			; 00000020H
  001d7	75 3d		 jne	 SHORT $L16051

; 145  :           strcpy(DrvCompileInfo, DateCompiled+1);

  001d9	8d 45 e5	 lea	 eax, DWORD PTR _DateCompiled$16050[ebp+1]
  001dc	89 45 e0	 mov	 DWORD PTR tv79[ebp], eax
  001df	c7 45 dc 00 00
	00 00		 mov	 DWORD PTR tv80[ebp], OFFSET FLAT:_DrvCompileInfo
  001e6	8b 4d dc	 mov	 ecx, DWORD PTR tv80[ebp]
  001e9	89 4d d8	 mov	 DWORD PTR tv77[ebp], ecx
$L16582:
  001ec	8b 55 e0	 mov	 edx, DWORD PTR tv79[ebp]
  001ef	8a 02		 mov	 al, BYTE PTR [edx]
  001f1	88 45 d7	 mov	 BYTE PTR tv81[ebp], al
  001f4	8b 4d dc	 mov	 ecx, DWORD PTR tv80[ebp]
  001f7	8a 55 d7	 mov	 dl, BYTE PTR tv81[ebp]
  001fa	88 11		 mov	 BYTE PTR [ecx], dl
  001fc	8b 45 e0	 mov	 eax, DWORD PTR tv79[ebp]
  001ff	83 c0 01	 add	 eax, 1
  00202	89 45 e0	 mov	 DWORD PTR tv79[ebp], eax
  00205	8b 4d dc	 mov	 ecx, DWORD PTR tv80[ebp]
  00208	83 c1 01	 add	 ecx, 1
  0020b	89 4d dc	 mov	 DWORD PTR tv80[ebp], ecx
  0020e	80 7d d7 00	 cmp	 BYTE PTR tv81[ebp], 0
  00212	75 d8		 jne	 SHORT $L16582

; 146  :         else

  00214	eb 3b		 jmp	 SHORT $L16052
$L16051:

; 147  :           strcpy(DrvCompileInfo, DateCompiled+0);

  00216	8d 55 e4	 lea	 edx, DWORD PTR _DateCompiled$16050[ebp]
  00219	89 55 d0	 mov	 DWORD PTR tv87[ebp], edx
  0021c	c7 45 cc 00 00
	00 00		 mov	 DWORD PTR tv88[ebp], OFFSET FLAT:_DrvCompileInfo
  00223	8b 45 cc	 mov	 eax, DWORD PTR tv88[ebp]
  00226	89 45 c8	 mov	 DWORD PTR tv86[ebp], eax
$L16583:
  00229	8b 4d d0	 mov	 ecx, DWORD PTR tv87[ebp]
  0022c	8a 11		 mov	 dl, BYTE PTR [ecx]
  0022e	88 55 c7	 mov	 BYTE PTR tv89[ebp], dl
  00231	8b 45 cc	 mov	 eax, DWORD PTR tv88[ebp]
  00234	8a 4d c7	 mov	 cl, BYTE PTR tv89[ebp]
  00237	88 08		 mov	 BYTE PTR [eax], cl
  00239	8b 55 d0	 mov	 edx, DWORD PTR tv87[ebp]
  0023c	83 c2 01	 add	 edx, 1
  0023f	89 55 d0	 mov	 DWORD PTR tv87[ebp], edx
  00242	8b 45 cc	 mov	 eax, DWORD PTR tv88[ebp]
  00245	83 c0 01	 add	 eax, 1
  00248	89 45 cc	 mov	 DWORD PTR tv88[ebp], eax
  0024b	80 7d c7 00	 cmp	 BYTE PTR tv89[ebp], 0
  0024f	75 d8		 jne	 SHORT $L16583
$L16052:

; 148  : 
; 149  :         strcat(DrvCompileInfo, TimeCompiledBase);

  00251	c7 45 c0 00 00
	00 00		 mov	 DWORD PTR tv241[ebp], OFFSET FLAT:?TimeCompiledBase@?2??MPInitialize@@9@9
  00258	8b 4d c0	 mov	 ecx, DWORD PTR tv241[ebp]
  0025b	89 4d bc	 mov	 DWORD PTR tv243[ebp], ecx
$L16586:
  0025e	8b 55 c0	 mov	 edx, DWORD PTR tv241[ebp]
  00261	8a 02		 mov	 al, BYTE PTR [edx]
  00263	88 45 bb	 mov	 BYTE PTR tv246[ebp], al
  00266	ff 45 c0	 inc	 DWORD PTR tv241[ebp]
  00269	80 7d bb 00	 cmp	 BYTE PTR tv246[ebp], 0
  0026d	75 ef		 jne	 SHORT $L16586
  0026f	8b 4d c0	 mov	 ecx, DWORD PTR tv241[ebp]
  00272	2b 4d bc	 sub	 ecx, DWORD PTR tv243[ebp]
  00275	8b 55 bc	 mov	 edx, DWORD PTR tv243[ebp]
  00278	89 55 b4	 mov	 DWORD PTR tv251[ebp], edx
  0027b	89 4d b0	 mov	 DWORD PTR tv252[ebp], ecx
  0027e	b8 00 00 00 00	 mov	 eax, OFFSET FLAT:_DrvCompileInfo
  00283	83 c0 ff	 add	 eax, -1
  00286	89 45 ac	 mov	 DWORD PTR tv255[ebp], eax
$L16587:
  00289	8b 4d ac	 mov	 ecx, DWORD PTR tv255[ebp]
  0028c	8a 51 01	 mov	 dl, BYTE PTR [ecx+1]
  0028f	88 55 ab	 mov	 BYTE PTR tv258[ebp], dl
  00292	ff 45 ac	 inc	 DWORD PTR tv255[ebp]
  00295	80 7d ab 00	 cmp	 BYTE PTR tv258[ebp], 0
  00299	75 ee		 jne	 SHORT $L16587
  0029b	8b 7d ac	 mov	 edi, DWORD PTR tv255[ebp]
  0029e	8b 75 b4	 mov	 esi, DWORD PTR tv251[ebp]
  002a1	8b 45 b0	 mov	 eax, DWORD PTR tv252[ebp]
  002a4	8b c8		 mov	 ecx, eax
  002a6	c1 e9 02	 shr	 ecx, 2
  002a9	f3 a5		 rep movsd
  002ab	8b c8		 mov	 ecx, eax
  002ad	83 e1 03	 and	 ecx, 3
  002b0	f3 a4		 rep movsb

; 150  : 
; 151  :         DBGPRINT((JADrvNm "." JADrvRtnName " v" JADrvRtnVer " (compiled %s)\n", DrvCompileInfo));

  002b2	68 00 00 00 00	 push	 OFFSET FLAT:$SG16053
  002b7	e8 00 00 00 00	 call	 _DbgPrint
  002bc	83 c4 04	 add	 esp, 4
  002bf	68 00 00 00 00	 push	 OFFSET FLAT:_DrvCompileInfo
  002c4	68 00 00 00 00	 push	 OFFSET FLAT:$SG16054
  002c9	e8 00 00 00 00	 call	 _DbgPrint
  002ce	83 c4 08	 add	 esp, 8

; 152  : 
; 153  :         // End information output.  ja, 29.11.2003.
; 154  :      
; 155  :         //
; 156  :         // Start off by retrieving our adapter context and storing
; 157  :         // the Miniport handle in it.
; 158  :         //
; 159  :         pAdapt = NdisIMGetDeviceContext(MiniportAdapterHandle);

  002d1	8b 4d 18	 mov	 ecx, DWORD PTR _MiniportAdapterHandle$[ebp]
  002d4	51		 push	 ecx
  002d5	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__NdisIMGetDeviceContext@4

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -