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

📄 testpnp.cod

📁 usb开发的资料!!USB标准
💻 COD
📖 第 1 页 / 共 5 页
字号:
_TEXT	ENDS
PUBLIC	_Test98_PnPRemove@8
;	COMDAT _Test98_PnPRemove@8
_TEXT	SEGMENT
_Device$ = 8
_PdoData$ = 12
_Test98_PnPRemove@8 PROC NEAR				; COMDAT

; 463  : {

  00000	55		push	ebp
  00001	8b ec		mov	ebp, esp
  00003	53		push	ebx
  00004	56		push	esi
  00005	57		push	edi

; 464  :     PdoData->Removed = TRUE;

  00006	8b 45 0c	mov	eax, DWORD PTR _PdoData$[ebp]
  00009	c6 40 1b 01	mov	BYTE PTR [eax+27], 1

; 465  : 
; 466  :     //
; 467  :     // Complete any outsanding requests with STATUS_DELETE_PENDING.
; 468  :     //
; 469  :     if (PdoData->Attached) {

  0000d	8b 45 0c	mov	eax, DWORD PTR _PdoData$[ebp]
  00010	33 c9		xor	ecx, ecx
  00012	8a 48 1a	mov	cl, BYTE PTR [eax+26]
  00015	85 c9		test	ecx, ecx
  00017	0f 84 07 00 00
	00		je	$L2860

; 470  :         return STATUS_SUCCESS;

  0001d	33 c0		xor	eax, eax
  0001f	e9 1e 00 00 00	jmp	$L2859
$L2860:

; 471  :     }
; 472  : 
; 473  :     //
; 474  :     // Free any resources.
; 475  :     //
; 476  :     ExFreePool (PdoData->HardwareIDs);

  00024	8b 45 0c	mov	eax, DWORD PTR _PdoData$[ebp]
  00027	8b 40 14	mov	eax, DWORD PTR [eax+20]
  0002a	50		push	eax
  0002b	ff 15 00 00 00
	00		call	DWORD PTR __imp__ExFreePool@4

; 477  : 
; 478  :     Test98_KdPrint(PdoData, TEST_DBG_PNP_INFO,
; 479  :                         ("IoDeleteDevice2: 0x%x\n", Device));
; 480  :     IoDeleteDevice (Device);

  00031	8b 45 08	mov	eax, DWORD PTR _Device$[ebp]
  00034	50		push	eax
  00035	ff 15 00 00 00
	00		call	DWORD PTR __imp__IoDeleteDevice@4

; 481  :     return STATUS_SUCCESS;

  0003b	33 c0		xor	eax, eax
  0003d	e9 00 00 00 00	jmp	$L2859
$L2859:

; 482  : }

  00042	5f		pop	edi
  00043	5e		pop	esi
  00044	5b		pop	ebx
  00045	c9		leave
  00046	c2 08 00	ret	8
_Test98_PnPRemove@8 ENDP
_TEXT	ENDS
EXTRN	__imp__MmMapIoSpace@16:NEAR
;	COMDAT _Test98_StartFdo@12
_TEXT	SEGMENT
_FdoData$ = 8
_PartialResourceList$ = 12
_PartialResourceListTranslated$ = 16
_i$ = -12
_status$ = -16
_resource$ = -4
_resourceTrans$ = -8
_Test98_StartFdo@12 PROC NEAR				; COMDAT

; 495  : {

  00000	55		push	ebp
  00001	8b ec		mov	ebp, esp
  00003	83 ec 18	sub	esp, 24			; 00000018H
  00006	53		push	ebx
  00007	56		push	esi
  00008	57		push	edi

; 496  :     ULONG i;
; 497  :     NTSTATUS status = STATUS_SUCCESS;

  00009	c7 45 f0 00 00
	00 00		mov	DWORD PTR _status$[ebp], 0

; 498  :     PCM_PARTIAL_RESOURCE_DESCRIPTOR resource;
; 499  :     PCM_PARTIAL_RESOURCE_DESCRIPTOR resourceTrans;
; 500  : 
; 501  :     Test98_KdPrint (FdoData, TEST_DBG_PNP_TRACE, ("StartFdo\n"));
; 502  : 
; 503  :     for (i = 0,
; 504  :          resource = &PartialResourceList->PartialDescriptors[0],
; 505  :          resourceTrans = &PartialResourceListTranslated->PartialDescriptors[0];
; 506  : 
; 507  :          i < PartialResourceList->Count && NT_SUCCESS(status);
; 508  :          i++, resource++, resourceTrans++) {

  00010	c7 45 f4 00 00
	00 00		mov	DWORD PTR _i$[ebp], 0
  00017	8b 45 0c	mov	eax, DWORD PTR _PartialResourceList$[ebp]
  0001a	83 c0 08	add	eax, 8
  0001d	89 45 fc	mov	DWORD PTR _resource$[ebp], eax
  00020	8b 45 10	mov	eax, DWORD PTR _PartialResourceListTranslated$[ebp]
  00023	83 c0 08	add	eax, 8
  00026	89 45 f8	mov	DWORD PTR _resourceTrans$[ebp], eax
  00029	e9 0b 00 00 00	jmp	$L2869
$L2870:
  0002e	ff 45 f4	inc	DWORD PTR _i$[ebp]
  00031	83 45 fc 10	add	DWORD PTR _resource$[ebp], 16 ; 00000010H
  00035	83 45 f8 10	add	DWORD PTR _resourceTrans$[ebp], 16 ; 00000010H
$L2869:
  00039	8b 45 0c	mov	eax, DWORD PTR _PartialResourceList$[ebp]
  0003c	8b 4d f4	mov	ecx, DWORD PTR _i$[ebp]
  0003f	39 48 04	cmp	DWORD PTR [eax+4], ecx
  00042	0f 86 0e 01 00
	00		jbe	$L2871
  00048	83 7d f0 00	cmp	DWORD PTR _status$[ebp], 0
  0004c	0f 8c 04 01 00
	00		jl	$L2871

; 509  : 
; 510  :         switch (resource->Type) {

  00052	8b 45 fc	mov	eax, DWORD PTR _resource$[ebp]
  00055	33 c9		xor	ecx, ecx
  00057	8a 08		mov	cl, BYTE PTR [eax]
  00059	89 4d ec	mov	DWORD PTR -20+[ebp], ecx
  0005c	e9 d7 00 00 00	jmp	$L2872
$L2876:

; 511  :         case CmResourceTypePort:
; 512  : 
; 513  :             FdoData->PhysicalAddress = resource->u.Port.Start;

  00061	8b 45 fc	mov	eax, DWORD PTR _resource$[ebp]
  00064	83 c0 04	add	eax, 4
  00067	8b 08		mov	ecx, DWORD PTR [eax]
  00069	8b 40 04	mov	eax, DWORD PTR [eax+4]
  0006c	8b 55 08	mov	edx, DWORD PTR _FdoData$[ebp]
  0006f	83 c2 60	add	edx, 96			; 00000060H
  00072	89 0a		mov	DWORD PTR [edx], ecx
  00074	89 42 04	mov	DWORD PTR [edx+4], eax

; 514  :             Test98_KdPrint (FdoData, TEST_DBG_PNP_INFO,
; 515  :                           ("HardwareResource: Port (%x) ->",
; 516  :                            FdoData->PhysicalAddress.LowPart));
; 517  : 
; 518  :             switch (resourceTrans->Type) {

  00077	8b 45 f8	mov	eax, DWORD PTR _resourceTrans$[ebp]
  0007a	33 c9		xor	ecx, ecx
  0007c	8a 08		mov	cl, BYTE PTR [eax]
  0007e	89 4d e8	mov	DWORD PTR -24+[ebp], ecx
  00081	e9 44 00 00 00	jmp	$L2877
$L2881:

; 519  :             case CmResourceTypePort:
; 520  : 
; 521  :                 ASSERT (1 == resourceTrans->u.Port.Length);
; 522  : 
; 523  :                 // Nothing to do here but note the address;
; 524  :                 FdoData->TestPortAddress =
; 525  :                     (PVOID) resourceTrans->u.Port.Start.LowPart;

  00086	8b 45 f8	mov	eax, DWORD PTR _resourceTrans$[ebp]
  00089	8b 40 04	mov	eax, DWORD PTR [eax+4]
  0008c	8b 4d 08	mov	ecx, DWORD PTR _FdoData$[ebp]
  0008f	89 41 68	mov	DWORD PTR [ecx+104], eax

; 526  : 
; 527  :                 break;

  00092	e9 4c 00 00 00	jmp	$L2878
$L2882:

; 528  : 
; 529  :             case CmResourceTypeMemory:
; 530  :                 //
; 531  :                 // We need to map the memory
; 532  :                 //
; 533  : 
; 534  :                 ASSERT (1 == resourceTrans->u.Memory.Length);
; 535  : 
; 536  :                 FdoData->TestPortAddress =
; 537  :                     MmMapIoSpace (resourceTrans->u.Memory.Start,
; 538  :                                   resourceTrans->u.Memory.Length,
; 539  :                                   MmNonCached);

  00097	6a 00		push	0
  00099	8b 45 f8	mov	eax, DWORD PTR _resourceTrans$[ebp]
  0009c	8b 40 0c	mov	eax, DWORD PTR [eax+12]
  0009f	50		push	eax
  000a0	8b 45 f8	mov	eax, DWORD PTR _resourceTrans$[ebp]
  000a3	83 c0 04	add	eax, 4
  000a6	8b 08		mov	ecx, DWORD PTR [eax]
  000a8	8b 40 04	mov	eax, DWORD PTR [eax+4]
  000ab	50		push	eax
  000ac	51		push	ecx
  000ad	ff 15 00 00 00
	00		call	DWORD PTR __imp__MmMapIoSpace@16
  000b3	8b 4d 08	mov	ecx, DWORD PTR _FdoData$[ebp]
  000b6	89 41 68	mov	DWORD PTR [ecx+104], eax

; 540  : 
; 541  : 
; 542  :                 FdoData->MappedPorts = TRUE;

  000b9	8b 45 08	mov	eax, DWORD PTR _FdoData$[ebp]
  000bc	c6 40 18 01	mov	BYTE PTR [eax+24], 1

; 543  : 
; 544  :                 Test98_KdPrint_Cont (FdoData, TEST_DBG_PNP_INFO,
; 545  :                                    ("Mem: (%x)\n", FdoData->TestPortAddress));
; 546  :                 break;

  000c0	e9 1e 00 00 00	jmp	$L2878
$L2883:

; 547  : 
; 548  :             default:
; 549  :                 Test98_KdPrint_Cont (FdoData, TEST_DBG_PNP_INFO,
; 550  :                                    ("Unknown \n", FdoData->TestPortAddress));
; 551  :                 
; 552  :             }

  000c5	e9 19 00 00 00	jmp	$L2878
$L2877:
  000ca	83 7d e8 01	cmp	DWORD PTR -24+[ebp], 1
  000ce	0f 84 b2 ff ff
	ff		je	$L2881
  000d4	83 7d e8 03	cmp	DWORD PTR -24+[ebp], 3
  000d8	0f 84 b9 ff ff
	ff		je	$L2882
  000de	e9 00 00 00 00	jmp	$L2878
$L2878:

; 553  : 
; 554  :             break;

  000e3	e9 69 00 00 00	jmp	$L2873
$L2884:

; 555  : 
; 556  :         case CmResourceTypeMemory:
; 557  : 
; 558  :             ASSERT (CmResourceTypeMemory == resourceTrans->Type);
; 559  : 
; 560  :             FdoData->PhysicalAddress = resource->u.Memory.Start;

  000e8	8b 45 fc	mov	eax, DWORD PTR _resource$[ebp]
  000eb	83 c0 04	add	eax, 4
  000ee	8b 08		mov	ecx, DWORD PTR [eax]
  000f0	8b 40 04	mov	eax, DWORD PTR [eax+4]
  000f3	8b 55 08	mov	edx, DWORD PTR _FdoData$[ebp]
  000f6	83 c2 60	add	edx, 96			; 00000060H
  000f9	89 0a		mov	DWORD PTR [edx], ecx
  000fb	89 42 04	mov	DWORD PTR [edx+4], eax

; 561  :             FdoData->TestPortAddress =
; 562  :                 MmMapIoSpace (resourceTrans->u.Memory.Start,
; 563  :                               resourceTrans->u.Memory.Length,
; 564  :                               MmNonCached);

  000fe	6a 00		push	0
  00100	8b 45 f8	mov	eax, DWORD PTR _resourceTrans$[ebp]
  00103	8b 40 0c	mov	eax, DWORD PTR [eax+12]
  00106	50		push	eax
  00107	8b 45 f8	mov	eax, DWORD PTR _resourceTrans$[ebp]
  0010a	83 c0 04	add	eax, 4
  0010d	8b 08		mov	ecx, DWORD PTR [eax]
  0010f	8b 40 04	mov	eax, DWORD PTR [eax+4]
  00112	50		push	eax
  00113	51		push	ecx
  00114	ff 15 00 00 00
	00		call	DWORD PTR __imp__MmMapIoSpace@16
  0011a	8b 4d 08	mov	ecx, DWORD PTR _FdoData$[ebp]
  0011d	89 41 68	mov	DWORD PTR [ecx+104], eax

; 565  : 
; 566  :             FdoData->MappedPorts = TRUE;

  00120	8b 45 08	mov	eax, DWORD PTR _FdoData$[ebp]
  00123	c6 40 18 01	mov	BYTE PTR [eax+24], 1

; 567  : 
; 568  :             ASSERT (1 == resource->u.Memory.Length);
; 569  : 
; 570  :             Test98_KdPrint (FdoData, TEST_DBG_PNP_INFO,
; 571  :                           ("HardwareResource: Memory (%x) -> Mem (%x)",
; 572  :                            FdoData->PhysicalAddress.LowPart,
; 573  :                            FdoData->TestPortAddress));
; 574  : 
; 575  :             break;

  00127	e9 25 00 00 00	jmp	$L2873
$L2885:

; 576  : 
; 577  :         case CmResourceTypeInterrupt:
; 578  :         default:
; 579  :             
; 580  :             Test98_KdPrint (FdoData, TEST_DBG_PNP_ERROR,
; 581  :                           ("Unhandled resource type (0x%x)\n",
; 582  :                            resource->Type));
; 583  :             status = STATUS_UNSUCCESSFUL;

  0012c	c7 45 f0 01 00
	00 c0		mov	DWORD PTR _status$[ebp], -1073741823 ; c0000001H

; 584  :         }

  00133	e9 19 00 00 00	jmp	$L2873
$L2872:
  00138	83 7d ec 01	cmp	DWORD PTR -20+[ebp], 1
  0013c	0f 84 1f ff ff
	ff		je	$L2876
  00142	83 7d ec 03	cmp	DWORD PTR -20+[ebp], 3
  00146	0f 84 9c ff ff
	ff		je	$L2884
  0014c	e9 db ff ff ff	jmp	$L2885
$L2873:

; 585  :     }

  00151	e9 d8 fe ff ff	jmp	$L2870
$L2871:

; 586  :     return status;

  00156	8b 45 f0	mov	eax, DWORD PTR _status$[ebp]
  00159	e9 00 00 00 00	jmp	$L2864
$L2864:

; 587  : }

  0015e	5f		pop	edi
  0015f	5e		pop	esi
  00160	5b		pop	ebx
  00161	c9		leave
  00162	c2 0c 00	ret	12			; 0000000cH
_Test98_StartFdo@12 ENDP
_TEXT	ENDS
PUBLIC	_Test98_Remove@8
EXTRN	__imp__IoInvalidateDeviceRelations@8:NEAR
EXTRN	__imp_@KfAcquireSpinLock@4:NEAR
EXTRN	__imp_@KfReleaseSpinLock@8:NEAR
;	COMDAT _Test98_Remove@8
_TEXT	SEGMENT
_Remove$ = 8
_FdoData$ = 12
_irql$ = -4
_entry$ = -8
_pdoData$ = -20
_found$ = -16
_handle$ = -12
__EX_Blink$2899 = -28
__EX_Flink$2900 = -24
_Test98_Remove@8 PROC NEAR				; COMDAT

; 599  : {

  00000	55		push	ebp
  00001	8b ec		mov	ebp, esp
  00003	83 ec 1c	sub	esp, 28			; 0000001cH
  00006	53		push	ebx
  00007	56		push	esi
  00008	57		push	edi

; 600  :     KIRQL               irql;
; 601  :     PLIST_ENTRY         entry;
; 602  :     PPDO_DEVICE_DATA    pdoData;
; 603  :     BOOLEAN             found = FALSE;

  00009	c6 45 f0 00	mov	BYTE PTR _found$[ebp], 0

; 604  :     PVOID               handle = NULL;

  0000d	c7 45 f4 00 00
	00 00		mov	DWORD PTR _handle$[ebp], 0

; 605  : 
; 606  :     KeAcquireSpinLock (&FdoData->Spin, &irql);

  00014	8b 4d 0c	mov	ecx, DWORD PTR _FdoData$[ebp]
  00017	83 c1 14	add	ecx, 20			; 00000014H
  0001a	ff 15 00 00 00
	00		call	DWORD PTR __imp_@KfAcquireSpinLock@4
  00020	88 45 fc	mov	BYTE PTR _irql$[ebp], al

; 607  : 
; 608  :     for (entry = FdoData->PDOs.Flink;
; 609  :          entry != &FdoData->PDOs;
; 610  :          entry = entry->Flink) {

  00023	8b 45 0c	mov	eax, DWORD PTR _FdoData$[ebp]
  00026	8b 40 1c	mov	eax, DWORD PTR [eax+28]
  00029	89 45 f8	mov	DWORD PTR _entry$[ebp], eax
  0002c	e9 08 00 00 00	jmp	$L2894
$L2895:
  00031	8b 45 f8	mov	eax, DWORD PTR _entry$[ebp]
  00034	8b 00		mov	eax, DWORD PTR [eax]
  00036	89 45 f8	mov	DWORD PTR _entry$[ebp], eax
$L2894:
  00039	8b 45 0c	mov	eax, DWORD PTR _FdoData$[ebp]
  0003c	83 c0 1c	add	eax, 28			; 0000001cH
  0003f	3b 45 f8	cmp	eax, DWORD PTR _entry$[ebp]
  00042	0f 84 63 00 00
	00		je	$L2896

; 611  : 

⌨️ 快捷键说明

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