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

📄 isr.cod

📁 怎样在win2000下构造驱动程序znsoft_Serial2000_demo.ZIP
💻 COD
📖 第 1 页 / 共 5 页
字号:

; 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 + -