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

📄 legacy.cod

📁 怎样在win2000下构造驱动程序znsoft_Serial2000_demo.ZIP
💻 COD
📖 第 1 页 / 共 5 页
字号:
; 809  :       SerialLogError(
; 810  :                     DriverObject,
; 811  :                     NULL,
; 812  :                     PUserData->UserPort,
; 813  :                     SerialPhysicalZero,
; 814  :                     0,
; 815  :                     0,
; 816  :                     0,
; 817  :                     64,
; 818  :                     STATUS_SUCCESS,
; 819  :                     SERIAL_INVALID_USER_CONFIG,
; 820  :                     UserSubKey->NameLength+sizeof(WCHAR),
; 821  :                     &UserSubKey->Name[0],
; 822  :                     (wcslen(Parameters[1].Name)*sizeof(WCHAR))
; 823  :                     + sizeof(WCHAR),
; 824  :                     Parameters[1].Name
; 825  :                     );

  00018	8b 45 10	 mov	 eax, DWORD PTR _Parameters$[ebp]
  0001b	8b 40 24	 mov	 eax, DWORD PTR [eax+36]
  0001e	50		 push	 eax
  0001f	50		 push	 eax
  00020	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__wcslen
  00026	59		 pop	 ecx
  00027	8d 44 00 02	 lea	 eax, DWORD PTR [eax+eax+2]
  0002b	50		 push	 eax
  0002c	8b 45 0c	 mov	 eax, DWORD PTR _UserSubKey$[ebp]
  0002f	8d 48 10	 lea	 ecx, DWORD PTR [eax+16]
  00032	8b 40 0c	 mov	 eax, DWORD PTR [eax+12]
  00035	40		 inc	 eax
  00036	51		 push	 ecx
  00037	40		 inc	 eax
  00038	50		 push	 eax
  00039	68 19 00 06 c0	 push	 -1073348583		; c0060019H
  0003e	53		 push	 ebx
  0003f	6a 40		 push	 64			; 00000040H

; 826  :       SerialDump(
; 827  :                 SERERRORS,
; 828  :                 ("SERIAL: Bogus port address %ws\n",
; 829  :                  Parameters[1].Name)
; 830  :                 );
; 831  :       rval = FALSE;
; 832  :       goto SerialIsUserDataValidError;

  00041	e9 65 01 00 00	 jmp	 $L15608
$L15030:

; 833  :    }
; 834  : 
; 835  :    if (!PUserData->UserVector) {

  00046	39 5e 10	 cmp	 DWORD PTR [esi+16], ebx
  00049	75 2e		 jne	 SHORT $L15041

; 836  : 
; 837  :       //
; 838  :       // Ehhhh! Lose Game.
; 839  :       //
; 840  : 
; 841  :       SerialLogError(
; 842  :                     DriverObject,
; 843  :                     NULL,
; 844  :                     PUserData->UserPort,
; 845  :                     SerialPhysicalZero,
; 846  :                     0,
; 847  :                     0,
; 848  :                     0,
; 849  :                     65,
; 850  :                     STATUS_SUCCESS,
; 851  :                     SERIAL_INVALID_USER_CONFIG,
; 852  :                     UserSubKey->NameLength+sizeof(WCHAR),
; 853  :                     &UserSubKey->Name[0],
; 854  :                     (wcslen(Parameters[2].Name)*sizeof(WCHAR))
; 855  :                     + sizeof(WCHAR),
; 856  :                     Parameters[2].Name
; 857  :                     );

  0004b	8b 45 10	 mov	 eax, DWORD PTR _Parameters$[ebp]
  0004e	8b 40 40	 mov	 eax, DWORD PTR [eax+64]
  00051	50		 push	 eax
  00052	50		 push	 eax
  00053	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__wcslen
  00059	59		 pop	 ecx
  0005a	8d 44 00 02	 lea	 eax, DWORD PTR [eax+eax+2]
  0005e	50		 push	 eax
  0005f	8b 45 0c	 mov	 eax, DWORD PTR _UserSubKey$[ebp]
  00062	8d 48 10	 lea	 ecx, DWORD PTR [eax+16]
  00065	8b 40 0c	 mov	 eax, DWORD PTR [eax+12]
  00068	40		 inc	 eax
  00069	51		 push	 ecx
  0006a	40		 inc	 eax
  0006b	50		 push	 eax
  0006c	68 19 00 06 c0	 push	 -1073348583		; c0060019H
  00071	53		 push	 ebx
  00072	6a 41		 push	 65			; 00000041H

; 858  :       SerialDump(
; 859  :                 SERERRORS,
; 860  :                 ("SERIAL: Bogus vector %ws\n",
; 861  :                  Parameters[2].Name)
; 862  :                 );
; 863  : 
; 864  :       rval = FALSE;
; 865  :       goto SerialIsUserDataValidError;

  00074	e9 32 01 00 00	 jmp	 $L15608
$L15041:

; 866  :    }
; 867  : 
; 868  :    if (!PUserData->UserSymbolicLink.Length) {

  00079	66 8b 46 14	 mov	 ax, WORD PTR [esi+20]
  0007d	66 3b c3	 cmp	 ax, bx
  00080	75 2e		 jne	 SHORT $L15051

; 869  : 
; 870  :       //
; 871  :       // Ehhhh! Lose Game.
; 872  :       //
; 873  : 
; 874  :       SerialLogError(DriverObject, NULL, PUserData->UserPort,
; 875  :                      SerialPhysicalZero, 0, 0, 0, 66, STATUS_SUCCESS,
; 876  :                      SERIAL_INVALID_USER_CONFIG,
; 877  :                      UserSubKey->NameLength + sizeof(WCHAR),
; 878  :                      &UserSubKey->Name[0],
; 879  :                      (wcslen(Parameters[3].Name) * sizeof(WCHAR))
; 880  :                      + sizeof(WCHAR),
; 881  :                      Parameters[3].Name);

  00082	8b 45 10	 mov	 eax, DWORD PTR _Parameters$[ebp]
  00085	8b 40 5c	 mov	 eax, DWORD PTR [eax+92]
  00088	50		 push	 eax
  00089	50		 push	 eax
  0008a	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__wcslen
  00090	59		 pop	 ecx
  00091	8d 44 00 02	 lea	 eax, DWORD PTR [eax+eax+2]
  00095	50		 push	 eax
  00096	8b 45 0c	 mov	 eax, DWORD PTR _UserSubKey$[ebp]
  00099	8d 48 10	 lea	 ecx, DWORD PTR [eax+16]
  0009c	8b 40 0c	 mov	 eax, DWORD PTR [eax+12]
  0009f	40		 inc	 eax
  000a0	51		 push	 ecx
  000a1	40		 inc	 eax
  000a2	50		 push	 eax
  000a3	68 19 00 06 c0	 push	 -1073348583		; c0060019H
  000a8	53		 push	 ebx
  000a9	6a 42		 push	 66			; 00000042H

; 882  : 
; 883  :       SerialDump(
; 884  :                 SERERRORS,
; 885  :                 ("SERIAL: bogus value for %ws\n",
; 886  :                  Parameters[3].Name)
; 887  :                 );
; 888  : 
; 889  :       rval = FALSE;
; 890  :       goto SerialIsUserDataValidError;

  000ab	e9 fb 00 00 00	 jmp	 $L15608
$L15051:

; 891  :    }
; 892  : 
; 893  :    if (PUserData->UserInterruptStatus.LowPart != 0) {

  000b0	39 5e 08	 cmp	 DWORD PTR [esi+8], ebx
  000b3	74 78		 je	 SHORT $L15093

; 894  : 
; 895  :       if (PUserData->UserPortIndex == MAXULONG) {

  000b5	8b 4e 1c	 mov	 ecx, DWORD PTR [esi+28]
  000b8	83 f9 ff	 cmp	 ecx, -1
  000bb	75 18		 jne	 SHORT $L15062

; 896  : 
; 897  :          //
; 898  :          // Ehhhh! Lose Game.
; 899  :          //
; 900  : 
; 901  :          SerialLogError(
; 902  :                        DriverObject,
; 903  :                        NULL,
; 904  :                        PUserData->UserPort,
; 905  :                        SerialPhysicalZero,
; 906  :                        0,
; 907  :                        0,
; 908  :                        0,
; 909  :                        67,
; 910  :                        STATUS_SUCCESS,
; 911  :                        SERIAL_INVALID_PORT_INDEX,
; 912  :                        PUserData->UserSymbolicLink.Length+sizeof(WCHAR),
; 913  :                        PUserData->UserSymbolicLink.Buffer,
; 914  :                        0,
; 915  :                        NULL
; 916  :                        );

  000bd	0f b7 c0	 movzx	 eax, ax
  000c0	53		 push	 ebx
  000c1	53		 push	 ebx
  000c2	ff 76 18	 push	 DWORD PTR [esi+24]
  000c5	40		 inc	 eax
  000c6	40		 inc	 eax
  000c7	50		 push	 eax
  000c8	68 14 00 06 c0	 push	 -1073348588		; c0060014H
  000cd	53		 push	 ebx
  000ce	6a 43		 push	 67			; 00000043H

; 917  :          SerialDump(
; 918  :                    SERERRORS,
; 919  :                    ("SERIAL: Bogus port index %ws\n",
; 920  :                     Parameters[0].Name)
; 921  :                    );
; 922  : 
; 923  :          rval = FALSE;
; 924  :          goto SerialIsUserDataValidError;

  000d0	e9 d6 00 00 00	 jmp	 $L15608
$L15062:

; 925  : 
; 926  :       } else if (!PUserData->UserPortIndex) {

  000d5	3b cb		 cmp	 ecx, ebx
  000d7	75 18		 jne	 SHORT $L15072

; 927  : 
; 928  :          //
; 929  :          // So sorry, you must have a non-zero port index.
; 930  :          //
; 931  : 
; 932  :          SerialLogError(
; 933  :                        DriverObject,
; 934  :                        NULL,
; 935  :                        PUserData->UserPort,
; 936  :                        SerialPhysicalZero,
; 937  :                        0,
; 938  :                        0,
; 939  :                        0,
; 940  :                        68,
; 941  :                        STATUS_SUCCESS,
; 942  :                        SERIAL_INVALID_PORT_INDEX,
; 943  :                        PUserData->UserSymbolicLink.Length+sizeof(WCHAR),
; 944  :                        PUserData->UserSymbolicLink.Buffer,
; 945  :                        0,
; 946  :                        NULL
; 947  :                        );

  000d9	0f b7 c0	 movzx	 eax, ax
  000dc	53		 push	 ebx
  000dd	53		 push	 ebx
  000de	ff 76 18	 push	 DWORD PTR [esi+24]
  000e1	40		 inc	 eax
  000e2	40		 inc	 eax
  000e3	50		 push	 eax
  000e4	68 14 00 06 c0	 push	 -1073348588		; c0060014H
  000e9	53		 push	 ebx
  000ea	6a 44		 push	 68			; 00000044H

; 948  :          SerialDump(
; 949  :                    SERERRORS,
; 950  :                    ("SERIAL: Port index must be > 0 for any\n"
; 951  :                     "------- port on a multiport card: %ws\n",
; 952  :                     Parameters[0].Name)
; 953  :                    );
; 954  : 
; 955  :          rval = FALSE;
; 956  :          goto SerialIsUserDataValidError;

  000ec	e9 ba 00 00 00	 jmp	 $L15608
$L15072:

; 957  : 
; 958  :       } else {
; 959  : 
; 960  :          if (PUserData->UserIndexed) {

  000f1	39 5e 2c	 cmp	 DWORD PTR [esi+44], ebx
  000f4	74 1d		 je	 SHORT $L15082

; 961  : 
; 962  :             if (PUserData->UserPortIndex > SERIAL_MAX_PORTS_INDEXED) {

  000f6	83 f9 10	 cmp	 ecx, 16			; 00000010H
  000f9	76 32		 jbe	 SHORT $L15093

; 963  : 
; 964  :                SerialLogError(
; 965  :                              DriverObject,
; 966  :                              NULL,
; 967  :                              PUserData->UserPort,
; 968  :                              SerialPhysicalZero,
; 969  :                              0,
; 970  :                              0,
; 971  :                              0,
; 972  :                              69,
; 973  :                              STATUS_SUCCESS,
; 974  :                              SERIAL_PORT_INDEX_TOO_HIGH,
; 975  :                              PUserData->UserSymbolicLink.Length+sizeof(WCHAR),
; 976  :                              PUserData->UserSymbolicLink.Buffer,
; 977  :                              0,
; 978  :                              NULL
; 979  :                              );

  000fb	0f b7 c0	 movzx	 eax, ax
  000fe	53		 push	 ebx
  000ff	53		 push	 ebx
  00100	ff 76 18	 push	 DWORD PTR [esi+24]
  00103	40		 inc	 eax
  00104	40		 inc	 eax
  00105	50		 push	 eax
  00106	68 15 00 06 c0	 push	 -1073348587		; c0060015H
  0010b	53		 push	 ebx
  0010c	6a 45		 push	 69			; 00000045H

; 980  :                SerialDump(
; 981  :                          SERERRORS,
; 982  :                          ("SERIAL: port index to large %ws\n",
; 983  :                           Parameters[0].Name)
; 984  :                          );
; 985  : 
; 986  :                rval = FALSE;
; 987  :                goto SerialIsUserDataValidError;

  0010e	e9 98 00 00 00	 jmp	 $L15608
$L15082:

; 988  :             }
; 989  : 
; 990  :          } else {
; 991  : 
; 992  :             if (PUserData->UserPortIndex > SERIAL_MAX_PORTS_NONINDEXED) {

  00113	83 f9 08	 cmp	 ecx, 8
  00116	76 15		 jbe	 SHORT $L15093

; 993  : 
; 994  :                SerialLogError(
; 995  :                              DriverObject,
; 996  :                              NULL,
; 997  :                              PUserData->UserPort,
; 998  :                              SerialPhysicalZero,
; 999  :                              0,
; 1000 :                              0,
; 1001 :                              0,
; 1002 :                              70,
; 1003 :                              STATUS_SUCCESS,
; 1004 :                              SERIAL_PORT_INDEX_TOO_HIGH,
; 1005 :                              PUserData->UserSymbolicLink.Length+sizeof(WCHAR),
; 1006 :                              PUserData->UserSymbolicLink.Buffer,
; 1007 :                              0,
; 1008 :                              NULL
; 1009 :                              );

  00118	0f b7 c0	 movzx	 eax, ax
  0011b	53		 push	 ebx
  0011c	53		 push	 ebx
  0011d	ff 76 18	 push	 DWORD PTR [esi+24]
  00120	40		 inc	 eax
  00121	40		 inc	 eax
  00122	50		 push	 eax
  00123	68 15 00 06 c0	 push	 -1073348587		; c0060015H
  00128	53		 push	 ebx
  00129	6a 46		 push	 70			; 00000046H

; 1010 :                SerialDump(
; 1011 :                          SERERRORS,
; 1012 :                          ("SERIAL: port index to large %ws\n",
; 1013 :                           Parameters[0].Name)
; 1014 :                          );
; 1015 : 
; 1016 :                rval = FALSE;
; 1017 :                goto SerialIsUserDataValidError;

  0012b	eb 7e		 jmp	 SHORT $L15608
$L15093:

; 1018 :             }
; 1019 : 
; 1020 :          }
; 1021 : 
; 1022 :       }
; 1023 : 
; 1024 :    }
; 1025 : 
; 1026 :    //
; 1027 :    // We don't want to cause the hal to have a bad day,
; 1028 :    // so let's check the interface type and bus number.
; 1029 :    //
; 1030 :    // We only need to check the registry if they aren't
; 

⌨️ 快捷键说明

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