📄 miniport.cod
字号:
00158 e9 dc 00 00 00 jmp $L16176
$L16172:
; 564 : {
; 565 : //........................................ // ja, 02.10.2003.
; 566 :
; 567 : //DBGPRINT(("MPSendPackets(): In packet stacking\n"));
; 568 :
; 569 : Status = FilterPacket( // See if packet to be dropped.
; 570 : pAdapt,
; 571 : Packet,
; 572 : NULL,
; 573 : TRUE, // Send action.
; 574 : &bDecision
; 575 : );
0015d 8d 45 eb lea eax, DWORD PTR _bDecision$16159[ebp]
00160 50 push eax
00161 6a 01 push 1
00163 6a 00 push 0
00165 8b 4d e0 mov ecx, DWORD PTR _Packet$16160[ebp]
00168 51 push ecx
00169 8b 55 fc mov edx, DWORD PTR _pAdapt$[ebp]
0016c 52 push edx
0016d e8 00 00 00 00 call _FilterPacket@20
00172 89 45 f0 mov DWORD PTR _Status$[ebp], eax
; 576 :
; 577 : if (
; 578 : NDIS_STATUS_SUCCESS==Status // Everything OK?
; 579 : &&
; 580 : TRUE==bDecision // Packet to be dropped?
; 581 : )
00175 83 7d f0 00 cmp DWORD PTR _Status$[ebp], 0
00179 75 2e jne SHORT $L16180
0017b 0f b6 45 eb movzx eax, BYTE PTR _bDecision$16159[ebp]
0017f 83 f8 01 cmp eax, 1
00182 75 25 jne SHORT $L16180
; 582 : {
; 583 : // Bump dropped-packet count.
; 584 : NdisInterlockedIncrement(&pAdapt->PassThruStats.MPSendPktsDropped);
00184 8b 4d fc mov ecx, DWORD PTR _pAdapt$[ebp]
00187 81 c1 f8 02 00
00 add ecx, 760 ; 000002f8H
0018d 51 push ecx
0018e ff 15 00 00 00
00 call DWORD PTR __imp__NdisInterlockedIncrement@4
; 585 :
; 586 : NdisReleaseSpinLock(&pAdapt->Lock);
00194 8b 55 fc mov edx, DWORD PTR _pAdapt$[ebp]
00197 81 c2 98 00 00
00 add edx, 152 ; 00000098H
0019d 52 push edx
0019e ff 15 00 00 00
00 call DWORD PTR __imp__NdisReleaseSpinLock@4
; 587 :
; 588 : break; // Leave 'do' group, without sending down packet. (Packet completion indicated after group.)
001a4 e9 30 03 00 00 jmp $L16148
$L16180:
; 589 : }
; 590 :
; 591 : //........................................ // ja, 02.10.2003.
; 592 :
; 593 : pAdapt->OutstandingSends++;
001a9 8b 45 fc mov eax, DWORD PTR _pAdapt$[ebp]
001ac 8b 88 cc 00 00
00 mov ecx, DWORD PTR [eax+204]
001b2 83 c1 01 add ecx, 1
001b5 8b 55 fc mov edx, DWORD PTR _pAdapt$[ebp]
001b8 89 8a cc 00 00
00 mov DWORD PTR [edx+204], ecx
; 594 : NdisReleaseSpinLock(&pAdapt->Lock);
001be 8b 45 fc mov eax, DWORD PTR _pAdapt$[ebp]
001c1 05 98 00 00 00 add eax, 152 ; 00000098H
001c6 50 push eax
001c7 ff 15 00 00 00
00 call DWORD PTR __imp__NdisReleaseSpinLock@4
; 595 :
; 596 : NdisSend(&Status,
; 597 : pAdapt->BindingHandle,
; 598 : Packet);
001cd 8b 4d e0 mov ecx, DWORD PTR _Packet$16160[ebp]
001d0 51 push ecx
001d1 8b 55 fc mov edx, DWORD PTR _pAdapt$[ebp]
001d4 8b 42 04 mov eax, DWORD PTR [edx+4]
001d7 50 push eax
001d8 8d 4d f0 lea ecx, DWORD PTR _Status$[ebp]
001db 51 push ecx
001dc e8 00 00 00 00 call _NdisSend@12
; 599 :
; 600 : if (Status != NDIS_STATUS_PENDING)
001e1 81 7d f0 03 01
00 00 cmp DWORD PTR _Status$[ebp], 259 ; 00000103H
001e8 74 4f je SHORT $L16176
; 601 : {
; 602 : NdisMSendComplete(ADAPT_MINIPORT_HANDLE(pAdapt),
; 603 : Packet,
; 604 : Status);
001ea 8b 55 f0 mov edx, DWORD PTR _Status$[ebp]
001ed 52 push edx
001ee 8b 45 e0 mov eax, DWORD PTR _Packet$16160[ebp]
001f1 50 push eax
001f2 8b 4d fc mov ecx, DWORD PTR _pAdapt$[ebp]
001f5 8b 51 08 mov edx, DWORD PTR [ecx+8]
001f8 52 push edx
001f9 8b 45 fc mov eax, DWORD PTR _pAdapt$[ebp]
001fc 8b 48 08 mov ecx, DWORD PTR [eax+8]
001ff ff 91 ec 00 00
00 call DWORD PTR [ecx+236]
; 605 :
; 606 : ADAPT_DECR_PENDING_SENDS(pAdapt);
00205 8b 55 fc mov edx, DWORD PTR _pAdapt$[ebp]
00208 81 c2 98 00 00
00 add edx, 152 ; 00000098H
0020e 52 push edx
0020f ff 15 00 00 00
00 call DWORD PTR __imp__NdisAcquireSpinLock@4
00215 8b 45 fc mov eax, DWORD PTR _pAdapt$[ebp]
00218 8b 88 cc 00 00
00 mov ecx, DWORD PTR [eax+204]
0021e 83 e9 01 sub ecx, 1
00221 8b 55 fc mov edx, DWORD PTR _pAdapt$[ebp]
00224 89 8a cc 00 00
00 mov DWORD PTR [edx+204], ecx
0022a 8b 45 fc mov eax, DWORD PTR _pAdapt$[ebp]
0022d 05 98 00 00 00 add eax, 152 ; 00000098H
00232 50 push eax
00233 ff 15 00 00 00
00 call DWORD PTR __imp__NdisReleaseSpinLock@4
$L16176:
; 607 : }
; 608 : }
; 609 : continue; // Skip to bottom of 'for' loop. ja, 04.10.2003.
00239 e9 3e fe ff ff jmp $L16157
$L16185:
; 610 : }
; 611 : }
; 612 : #endif
; 613 : do
; 614 : {
; 615 :
; 616 : NdisAcquireSpinLock(&pAdapt->Lock);
0023e 8b 4d fc mov ecx, DWORD PTR _pAdapt$[ebp]
00241 81 c1 98 00 00
00 add ecx, 152 ; 00000098H
00247 51 push ecx
00248 ff 15 00 00 00
00 call DWORD PTR __imp__NdisAcquireSpinLock@4
; 617 : //
; 618 : // If the below miniport is going to low power state, stop sending down any packet.
; 619 : //
; 620 : if (pAdapt->PTDeviceState > NdisDeviceStateD0)
0024e 8b 55 fc mov edx, DWORD PTR _pAdapt$[ebp]
00251 83 ba a4 00 00
00 01 cmp DWORD PTR [edx+164], 1
00258 7e 1b jle SHORT $L16188
; 621 : {
; 622 : NdisReleaseSpinLock(&pAdapt->Lock);
0025a 8b 45 fc mov eax, DWORD PTR _pAdapt$[ebp]
0025d 05 98 00 00 00 add eax, 152 ; 00000098H
00262 50 push eax
00263 ff 15 00 00 00
00 call DWORD PTR __imp__NdisReleaseSpinLock@4
; 623 : Status = NDIS_STATUS_FAILURE;
00269 c7 45 f0 01 00
00 c0 mov DWORD PTR _Status$[ebp], -1073741823 ; c0000001H
; 624 : break;
00270 e9 3b 02 00 00 jmp $L16187
$L16188:
; 625 : }
; 626 : //........................................ // ja, 02.10.2003.
; 627 :
; 628 : Status = FilterPacket( // See if packet to be dropped.
; 629 : pAdapt,
; 630 : Packet,
; 631 : NULL,
; 632 : TRUE, // Send action.
; 633 : &bDecision
; 634 : );
00275 8d 4d eb lea ecx, DWORD PTR _bDecision$16159[ebp]
00278 51 push ecx
00279 6a 01 push 1
0027b 6a 00 push 0
0027d 8b 55 e0 mov edx, DWORD PTR _Packet$16160[ebp]
00280 52 push edx
00281 8b 45 fc mov eax, DWORD PTR _pAdapt$[ebp]
00284 50 push eax
00285 e8 00 00 00 00 call _FilterPacket@20
0028a 89 45 f0 mov DWORD PTR _Status$[ebp], eax
; 635 :
; 636 : if (
; 637 : NDIS_STATUS_SUCCESS==Status // Everything OK?
; 638 : &&
; 639 : TRUE==bDecision // Packet to be dropped?
; 640 : )
0028d 83 7d f0 00 cmp DWORD PTR _Status$[ebp], 0
00291 75 2d jne SHORT $L16194
00293 0f b6 4d eb movzx ecx, BYTE PTR _bDecision$16159[ebp]
00297 83 f9 01 cmp ecx, 1
0029a 75 24 jne SHORT $L16194
; 641 : {
; 642 : // DBGPRINT(("MPSendPackets(): Dropping packet\n"));
; 643 : // Bump dropped-packet count.
; 644 : NdisInterlockedIncrement(&pAdapt->PassThruStats.MPSendPktsDropped);
0029c 8b 55 fc mov edx, DWORD PTR _pAdapt$[ebp]
0029f 81 c2 f8 02 00
00 add edx, 760 ; 000002f8H
002a5 52 push edx
002a6 ff 15 00 00 00
00 call DWORD PTR __imp__NdisInterlockedIncrement@4
; 645 :
; 646 : NdisReleaseSpinLock(&pAdapt->Lock);
002ac 8b 45 fc mov eax, DWORD PTR _pAdapt$[ebp]
002af 05 98 00 00 00 add eax, 152 ; 00000098H
002b4 50 push eax
002b5 ff 15 00 00 00
00 call DWORD PTR __imp__NdisReleaseSpinLock@4
; 647 :
; 648 : break; // Leave 'do' group, without sending down packet. (Packet completion indicated after group.)
002bb e9 f0 01 00 00 jmp $L16187
$L16194:
; 649 : }
; 650 : //........................................ // ja, 02.10.2003.
; 651 :
; 652 : pAdapt->OutstandingSends++;
002c0 8b 4d fc mov ecx, DWORD PTR _pAdapt$[ebp]
002c3 8b 91 cc 00 00
00 mov edx, DWORD PTR [ecx+204]
002c9 83 c2 01 add edx, 1
002cc 8b 45 fc mov eax, DWORD PTR _pAdapt$[ebp]
002cf 89 90 cc 00 00
00 mov DWORD PTR [eax+204], edx
; 653 : NdisReleaseSpinLock(&pAdapt->Lock);
002d5 8b 4d fc mov ecx, DWORD PTR _pAdapt$[ebp]
002d8 81 c1 98 00 00
00 add ecx, 152 ; 00000098H
002de 51 push ecx
002df ff 15 00 00 00
00 call DWORD PTR __imp__NdisReleaseSpinLock@4
; 654 :
; 655 : NdisAllocatePacket(&Status,
; 656 : &MyPacket,
; 657 : pAdapt->SendPacketPoolHandle);
002e5 8b 55 fc mov edx, DWORD PTR _pAdapt$[ebp]
002e8 8b 42 0c mov eax, DWORD PTR [edx+12]
002eb 50 push eax
002ec 8d 4d e4 lea ecx, DWORD PTR _MyPacket$16161[ebp]
002ef 51 push ecx
002f0 8d 55 f0 lea edx, DWORD PTR _Status$[ebp]
002f3 52 push edx
002f4 ff 15 00 00 00
00 call DWORD PTR __imp__NdisAllocatePacket@12
; 658 :
; 659 : if (Status == NDIS_STATUS_SUCCESS)
002fa 83 7d f0 00 cmp DWORD PTR _Status$[ebp], 0
002fe 0f 85 6d 01 00
00 jne $L16197
; 660 : {
; 661 : PSEND_RSVD SendRsvd;
; 662 :
; 663 : SendRsvd = (PSEND_RSVD)(MyPacket->ProtocolReserved);
00304 8b 45 e4 mov eax, DWORD PTR _MyPacket$16161[ebp]
00307 83 c0 38 add eax, 56 ; 00000038H
0030a 89 45 d4 mov DWORD PTR _SendRsvd$16198[ebp], eax
; 664 : SendRsvd->OriginalPkt = Packet;
0030d 8b 4d d4 mov ecx, DWORD PTR _SendRsvd$16198[ebp]
00310 8b 55 e0 mov edx, DWORD PTR _Packet$16160[ebp]
00313 89 11 mov DWORD PTR [ecx], edx
; 665 :
; 666 : MyPacket->Private.Flags = NdisGetPacketFlags(Packet);
00315 8b 45 e4 mov eax, DWORD PTR _MyPacket$16161[ebp]
00318 8b 4d e0 mov ecx, DWORD PTR _Packet$16160[ebp]
0031b 8b 51 18 mov edx, DWORD PTR [ecx+24]
0031e 89 50 18 mov DWORD PTR [eax+24], edx
; 667 :
; 668 : MyPacket->Private.Head = Packet->Private.Head;
00321 8b 45 e4 mov eax, DWORD PTR _MyPacket$16161[ebp]
00324 8b 4d e0 mov ecx, DWORD PTR _Packet$16160[ebp]
00327 8b 51 08 mov edx, DWORD PTR [ecx+8]
0032a 89 50 08 mov DWORD PTR [eax+8], edx
; 669 : MyPacket->Private.Tail = Packet->Private.Tail;
0032d 8b 45 e4 mov eax, DWORD PTR _MyPacket$16161[ebp]
00330 8b 4d e0 mov ecx, DWORD PTR _Packet$16160[ebp]
00333 8b 51 0c mov edx, DWORD PTR [ecx+12]
00336 89 50 0c mov DWORD PTR [eax+12], edx
; 670 : #ifdef WIN9X
; 671 : //
; 672 : // Work around the fact that NDIS does not initialize this
; 673 : // to FALSE on Win9x.
; 674 : //
; 675 : MyPacket->Private.ValidCounts = FALSE;
; 676 : #endif // WIN9X
; 677 :
; 678 : //
; 679 : // Copy the OOB data from the original packet to the new
; 680 : // packet.
; 681 : //
; 682 : NdisMoveMemory(NDIS_OOB_DATA_FROM_PACKET(MyPacket),
; 683 : NDIS_OOB_DATA_FROM_PACKET(Packet),
; 684 : sizeof(NDIS_PACKET_OOB_DATA));
00339 8b 45 e0 mov eax, DWORD PTR _Packet$16160[ebp]
0033c 0f b7 48 1e movzx ecx, WORD PTR [eax+30]
00340 8b 75 e0 mov esi, DWORD PTR _Packet$16160[ebp]
00343 03 f1 add esi, ecx
00345 8b 55 e4 mov edx, DWORD PTR _MyPacket$16161[ebp]
00348 0f b7 42 1e movzx eax, WORD PTR [edx+30]
0034c 8b 7d e4 mov edi, DWORD PTR _MyPacket$16161[ebp]
0034f 03 f8 add edi, eax
00351 b9 08 00 00 00 mov ecx, 8
00356 f3 a5 rep movsd
; 685 : //
; 686 : // Copy relevant parts of the per packet info into the new packet
; 687 : //
; 688 : #ifndef WIN9X
; 689 : NdisIMCopySendPerPacketInfo(MyPacket, Packet);
00358 8b 4d e0 mov ecx, DWORD PTR _Packet$16160[ebp]
0035b 51 push ecx
0035c 8b 55 e4 mov edx, DWORD PTR _MyPacket$16161[ebp]
0035f 52 push edx
00360 ff 15 00 00 00
00 call DWORD PTR __imp__NdisIMCopySendPerPacketInfo@8
; 690 : #endif
; 691 :
; 692 :
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -