📄 isr.cod
字号:
; 775 :
; 776 : if ((Extension->HandFlow.FlowReplace &
; 777 : SERIAL_RTS_MASK) ==
; 778 : SERIAL_TRANSMIT_TOGGLE) {
00286 8b 86 78 01 00
00 mov eax, DWORD PTR [esi+376]
0028c 66 25 c0 00 and ax, 192 ; 000000c0H
00290 3c c0 cmp al, 192 ; 000000c0H
00292 75 3c jne SHORT $L14923
; 779 :
; 780 : //
; 781 : // We have to raise if we're sending
; 782 : // this character.
; 783 : //
; 784 :
; 785 : SerialSetRTS(Extension);
00294 56 push esi
00295 e8 00 00 00 00 call _SerialSetRTS@4
; 786 :
; 787 : Extension->PerfStats.TransmittedCount++;
; 788 : Extension->WmiPerfData.TransmittedCount++;
; 789 : WRITE_TRANSMIT_HOLDING(
; 790 : Extension->Controller,
; 791 : Extension->SpecialChars.XonChar
; 792 : );
0029a 8a 86 70 01 00
00 mov al, BYTE PTR [esi+368]
002a0 ff 86 88 01 00
00 inc DWORD PTR [esi+392]
002a6 ff 86 1c 06 00
00 inc DWORD PTR [esi+1564]
002ac 50 push eax
002ad ff b6 98 00 00
00 push DWORD PTR [esi+152]
002b3 ff d7 call edi
; 793 :
; 794 : SerialInsertQueueDpc(
; 795 : &Extension->StartTimerLowerRTSDpc,
; 796 : NULL,
; 797 : NULL,
; 798 : Extension
; 799 : )?Extension->CountOfTryingToLowerRTS++:0;
002b5 56 push esi
002b6 55 push ebp
002b7 8d 86 4c 03 00
00 lea eax, DWORD PTR [esi+844]
002bd 55 push ebp
002be 50 push eax
002bf e8 00 00 00 00 call _SerialInsertQueueDpc@16
002c4 84 c0 test al, al
002c6 74 23 je SHORT $L14933
002c8 ff 86 3c 01 00
00 inc DWORD PTR [esi+316]
; 800 :
; 801 :
; 802 : } else {
002ce eb 1b jmp SHORT $L14933
$L14923:
; 803 :
; 804 : Extension->PerfStats.TransmittedCount++;
; 805 : Extension->WmiPerfData.TransmittedCount++;
; 806 : WRITE_TRANSMIT_HOLDING(
; 807 : Extension->Controller,
; 808 : Extension->SpecialChars.XonChar
; 809 : );
002d0 8a 86 70 01 00
00 mov al, BYTE PTR [esi+368]
002d6 ff 86 88 01 00
00 inc DWORD PTR [esi+392]
002dc ff 86 1c 06 00
00 inc DWORD PTR [esi+1564]
002e2 50 push eax
002e3 ff b6 98 00 00
00 push DWORD PTR [esi+152]
002e9 ff d7 call edi
$L14933:
; 810 :
; 811 : }
; 812 :
; 813 :
; 814 : Extension->SendXonChar = FALSE;
002eb 80 a6 db 01 00
00 00 and BYTE PTR [esi+475], 0
; 815 : Extension->HoldingEmpty = FALSE;
002f2 80 a6 a0 01 00
00 00 and BYTE PTR [esi+416], 0
; 816 :
; 817 : //
; 818 : // If we send an xon, by definition we
; 819 : // can't be holding by Xoff.
; 820 : //
; 821 :
; 822 : Extension->TXHolding &= ~SERIAL_TX_XOFF;
002f9 83 a6 1c 01 00
00 f7 and DWORD PTR [esi+284], -9 ; fffffff7H
; 823 :
; 824 : //
; 825 : // If we are sending an xon char then
; 826 : // by definition we can't be "holding"
; 827 : // up reception by Xoff.
; 828 : //
; 829 :
; 830 : Extension->RXHolding &= ~SERIAL_RX_XOFF;
00300 83 a6 20 01 00
00 fd and DWORD PTR [esi+288], -3 ; fffffffdH
; 831 :
; 832 : } else if (Extension->SendXoffChar &&
00307 e9 cc fe ff ff jmp $L14871
$L14920:
; 833 : !Extension->TXHolding) {
0030c 80 be dc 01 00
00 00 cmp BYTE PTR [esi+476], 0
00313 0f 84 b6 00 00
00 je $L14938
00319 39 ae 1c 01 00
00 cmp DWORD PTR [esi+284], ebp
0031f 0f 85 aa 00 00
00 jne $L14938
; 834 :
; 835 : if ((Extension->HandFlow.FlowReplace &
; 836 : SERIAL_RTS_MASK) ==
; 837 : SERIAL_TRANSMIT_TOGGLE) {
00325 8b 86 78 01 00
00 mov eax, DWORD PTR [esi+376]
0032b 66 25 c0 00 and ax, 192 ; 000000c0H
0032f 3c c0 cmp al, 192 ; 000000c0H
00331 75 3c jne SHORT $L14941
; 838 :
; 839 : //
; 840 : // We have to raise if we're sending
; 841 : // this character.
; 842 : //
; 843 :
; 844 : SerialSetRTS(Extension);
00333 56 push esi
00334 e8 00 00 00 00 call _SerialSetRTS@4
; 845 :
; 846 : Extension->PerfStats.TransmittedCount++;
; 847 : Extension->WmiPerfData.TransmittedCount++;
; 848 : WRITE_TRANSMIT_HOLDING(
; 849 : Extension->Controller,
; 850 : Extension->SpecialChars.XoffChar
; 851 : );
00339 8a 86 71 01 00
00 mov al, BYTE PTR [esi+369]
0033f ff 86 88 01 00
00 inc DWORD PTR [esi+392]
00345 ff 86 1c 06 00
00 inc DWORD PTR [esi+1564]
0034b 50 push eax
0034c ff b6 98 00 00
00 push DWORD PTR [esi+152]
00352 ff d7 call edi
; 852 :
; 853 : SerialInsertQueueDpc(
; 854 : &Extension->StartTimerLowerRTSDpc,
; 855 : NULL,
; 856 : NULL,
; 857 : Extension
; 858 : )?Extension->CountOfTryingToLowerRTS++:0;
00354 56 push esi
00355 55 push ebp
00356 8d 86 4c 03 00
00 lea eax, DWORD PTR [esi+844]
0035c 55 push ebp
0035d 50 push eax
0035e e8 00 00 00 00 call _SerialInsertQueueDpc@16
00363 84 c0 test al, al
00365 74 23 je SHORT $L14951
00367 ff 86 3c 01 00
00 inc DWORD PTR [esi+316]
; 859 :
; 860 : } else {
0036d eb 1b jmp SHORT $L14951
$L14941:
; 861 :
; 862 : Extension->PerfStats.TransmittedCount++;
; 863 : Extension->WmiPerfData.TransmittedCount++;
; 864 : WRITE_TRANSMIT_HOLDING(
; 865 : Extension->Controller,
; 866 : Extension->SpecialChars.XoffChar
; 867 : );
0036f 8a 86 71 01 00
00 mov al, BYTE PTR [esi+369]
00375 ff 86 88 01 00
00 inc DWORD PTR [esi+392]
0037b ff 86 1c 06 00
00 inc DWORD PTR [esi+1564]
00381 50 push eax
00382 ff b6 98 00 00
00 push DWORD PTR [esi+152]
00388 ff d7 call edi
$L14951:
; 868 :
; 869 : }
; 870 :
; 871 : //
; 872 : // We can't be sending an Xoff character
; 873 : // if the transmission is already held
; 874 : // up because of Xoff. Therefore, if we
; 875 : // are holding then we can't send the char.
; 876 : //
; 877 :
; 878 : //
; 879 : // If the application has set xoff continue
; 880 : // mode then we don't actually stop sending
; 881 : // characters if we send an xoff to the other
; 882 : // side.
; 883 : //
; 884 :
; 885 : if (!(Extension->HandFlow.FlowReplace &
; 886 : SERIAL_XOFF_CONTINUE)) {
0038a 8b 86 78 01 00
00 mov eax, DWORD PTR [esi+376]
00390 85 c0 test eax, eax
00392 78 28 js SHORT $L15203
; 887 :
; 888 : Extension->TXHolding |= SERIAL_TX_XOFF;
00394 83 8e 1c 01 00
00 08 or DWORD PTR [esi+284], 8
; 889 :
; 890 : if ((Extension->HandFlow.FlowReplace &
; 891 : SERIAL_RTS_MASK) ==
; 892 : SERIAL_TRANSMIT_TOGGLE) {
0039b 66 25 c0 00 and ax, 192 ; 000000c0H
0039f 3c c0 cmp al, 192 ; 000000c0H
003a1 75 19 jne SHORT $L15203
; 893 :
; 894 : SerialInsertQueueDpc(
; 895 : &Extension->StartTimerLowerRTSDpc,
; 896 : NULL,
; 897 : NULL,
; 898 : Extension
; 899 : )?Extension->CountOfTryingToLowerRTS++:0;
003a3 56 push esi
003a4 55 push ebp
003a5 8d 86 4c 03 00
00 lea eax, DWORD PTR [esi+844]
003ab 55 push ebp
003ac 50 push eax
003ad e8 00 00 00 00 call _SerialInsertQueueDpc@16
003b2 84 c0 test al, al
003b4 74 06 je SHORT $L15203
003b6 ff 86 3c 01 00
00 inc DWORD PTR [esi+316]
$L15203:
; 900 :
; 901 : }
; 902 :
; 903 : }
; 904 :
; 905 : Extension->SendXoffChar = FALSE;
003bc 80 a6 dc 01 00
00 00 and BYTE PTR [esi+476], 0
; 906 : Extension->HoldingEmpty = FALSE;
003c3 80 a6 a0 01 00
00 00 and BYTE PTR [esi+416], 0
; 907 :
; 908 : //
; 909 : // Even if transmission is being held
; 910 : // up, we should still transmit an immediate
; 911 : // character if all that is holding us
; 912 : // up is xon/xoff (OS/2 rules).
; 913 : //
; 914 :
; 915 : } else if (Extension->TransmitImmediate &&
003ca e9 09 fe ff ff jmp $L14871
$L14938:
; 916 : (!Extension->TXHolding ||
; 917 : (Extension->TXHolding == SERIAL_TX_XOFF)
; 918 : )) {
003cf 8d 86 a1 01 00
00 lea eax, DWORD PTR [esi+417]
003d5 80 38 00 cmp BYTE PTR [eax], 0
003d8 0f 84 96 00 00
00 je $L14963
003de 8b 8e 1c 01 00
00 mov ecx, DWORD PTR [esi+284]
003e4 3b cd cmp ecx, ebp
003e6 74 09 je SHORT $L14964
003e8 83 f9 08 cmp ecx, 8
003eb 0f 85 83 00 00
00 jne $L14963
$L14964:
; 919 :
; 920 : Extension->TransmitImmediate = FALSE;
003f1 80 20 00 and BYTE PTR [eax], 0
; 921 :
; 922 : if ((Extension->HandFlow.FlowReplace &
; 923 : SERIAL_RTS_MASK) ==
; 924 : SERIAL_TRANSMIT_TOGGLE) {
003f4 8b 86 78 01 00
00 mov eax, DWORD PTR [esi+376]
003fa 66 25 c0 00 and ax, 192 ; 000000c0H
003fe 3c c0 cmp al, 192 ; 000000c0H
00400 75 3c jne SHORT $L14967
; 925 :
; 926 : //
; 927 : // We have to raise if we're sending
; 928 : // this character.
; 929 : //
; 930 :
; 931 : SerialSetRTS(Extension);
00402 56 push esi
00403 e8 00 00 00 00 call _SerialSetRTS@4
; 932 :
; 933 : Extension->PerfStats.TransmittedCount++;
; 934 : Extension->WmiPerfData.TransmittedCount++;
; 935 : WRITE_TRANSMIT_HOLDING(
; 936 : Extension->Controller,
; 937 : Extension->ImmediateChar
; 938 : );
00408 8a 86 d8 01 00
00 mov al, BYTE PTR [esi+472]
0040e ff 86 88 01 00
00 inc DWORD PTR [esi+392]
00414 ff 86 1c 06 00
00 inc DWORD PTR [esi+1564]
0041a 50 push eax
0041b ff b6 98 00 00
00 push DWORD PTR [esi+152]
00421 ff d7 call edi
; 939 :
; 940 : SerialInsertQueueDpc(
; 941 : &Extension->StartTimerLowerRTSDpc,
; 942 : NULL,
; 943 : NULL,
; 944 : Extension
; 945 : )?Extension->CountOfTryingToLowerRTS++:0;
00423 56 push esi
00424 55 push ebp
00425 8d 86 4c 03 00
00 lea eax, DWORD PTR [esi+844]
0042b 55 push ebp
0042c 50 push eax
0042d e8 00 00 00 00 call _SerialInsertQueueDpc@16
00432 84 c0 test al, al
00434 74 23 je SHORT $L14977
00436 ff 86 3c 01 00
00 inc DWORD PTR [esi+316]
; 946 :
; 947 : } else {
0043c eb 1b jmp SHORT $L14977
$L14967:
; 948 :
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -