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

📄 registry.cod

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

  00269	8d 4d fc	 lea	 ecx, DWORD PTR _notThereDefault$[ebp]
  0026c	89 85 18 ff ff
	ff		 mov	 DWORD PTR _paramTable$[ebp+4], eax
  00272	c7 85 1c ff ff
	ff 00 00 00 00	 mov	 DWORD PTR _paramTable$[ebp+8], OFFSET FLAT:$SG14827
  0027c	89 b5 24 ff ff
	ff		 mov	 DWORD PTR _paramTable$[ebp+16], esi
  00282	89 b5 2c ff ff
	ff		 mov	 DWORD PTR _paramTable$[ebp+24], esi
  00288	89 85 34 ff ff
	ff		 mov	 DWORD PTR _paramTable$[ebp+32], eax
  0028e	c7 85 38 ff ff
	ff 00 00 00 00	 mov	 DWORD PTR _paramTable$[ebp+36], OFFSET FLAT:$SG14829
  00298	89 b5 40 ff ff
	ff		 mov	 DWORD PTR _paramTable$[ebp+44], esi
  0029e	89 b5 48 ff ff
	ff		 mov	 DWORD PTR _paramTable$[ebp+52], esi
  002a4	89 85 50 ff ff
	ff		 mov	 DWORD PTR _paramTable$[ebp+60], eax
  002aa	c7 85 54 ff ff
	ff 00 00 00 00	 mov	 DWORD PTR _paramTable$[ebp+64], OFFSET FLAT:$SG14831
  002b4	89 bd 58 ff ff
	ff		 mov	 DWORD PTR _paramTable$[ebp+68], edi
  002ba	89 b5 5c ff ff
	ff		 mov	 DWORD PTR _paramTable$[ebp+72], esi
  002c0	89 b5 64 ff ff
	ff		 mov	 DWORD PTR _paramTable$[ebp+80], esi
  002c6	89 85 6c ff ff
	ff		 mov	 DWORD PTR _paramTable$[ebp+88], eax
  002cc	c7 85 70 ff ff
	ff 00 00 00 00	 mov	 DWORD PTR _paramTable$[ebp+92], OFFSET FLAT:$SG14833
  002d6	89 b5 78 ff ff
	ff		 mov	 DWORD PTR _paramTable$[ebp+100], esi
  002dc	89 75 80	 mov	 DWORD PTR _paramTable$[ebp+108], esi
  002df	89 45 88	 mov	 DWORD PTR _paramTable$[ebp+116], eax
  002e2	c7 45 8c 00 00
	00 00		 mov	 DWORD PTR _paramTable$[ebp+120], OFFSET FLAT:$SG14835
  002e9	89 75 94	 mov	 DWORD PTR _paramTable$[ebp+128], esi
  002ec	89 75 9c	 mov	 DWORD PTR _paramTable$[ebp+136], esi
  002ef	89 45 a4	 mov	 DWORD PTR _paramTable$[ebp+144], eax
  002f2	c7 45 a8 00 00
	00 00		 mov	 DWORD PTR _paramTable$[ebp+148], OFFSET FLAT:$SG14837
  002f9	89 75 b0	 mov	 DWORD PTR _paramTable$[ebp+156], esi
  002fc	89 4d b4	 mov	 DWORD PTR _paramTable$[ebp+160], ecx

; 147  :     paramTable[5].DefaultLength = sizeof(ULONG);

  002ff	89 75 b8	 mov	 DWORD PTR _paramTable$[ebp+164], esi

; 148  :     
; 149  :     paramTable[6].Flags         = RTL_QUERY_REGISTRY_DIRECT;

  00302	89 45 c0	 mov	 DWORD PTR _paramTable$[ebp+172], eax

; 150  :     paramTable[6].Name          = L"LogFifo";

  00305	c7 45 c4 00 00
	00 00		 mov	 DWORD PTR _paramTable$[ebp+176], OFFSET FLAT:$SG14839

; 151  :     paramTable[6].EntryContext  = &DriverDefaultsPtr->LogFifoDefault;

  0030c	8d 43 24	 lea	 eax, DWORD PTR [ebx+36]

; 152  :     paramTable[6].DefaultType   = REG_DWORD;
; 153  :     paramTable[6].DefaultData   = &notThereDefault;
; 154  :     paramTable[6].DefaultLength = sizeof(ULONG);
; 155  : 
; 156  :     Status = RtlQueryRegistryValues( RTL_REGISTRY_ABSOLUTE | RTL_REGISTRY_OPTIONAL,
; 157  :                                      path,
; 158  :                                      &paramTable[0],
; 159  :                                      NULL,
; 160  :                                      NULL);

  0030f	6a 00		 push	 0
  00311	89 45 c8	 mov	 DWORD PTR _paramTable$[ebp+180], eax
  00314	8d 45 fc	 lea	 eax, DWORD PTR _notThereDefault$[ebp]
  00317	89 45 d0	 mov	 DWORD PTR _paramTable$[ebp+188], eax
  0031a	8d 85 14 ff ff
	ff		 lea	 eax, DWORD PTR _paramTable$[ebp]
  00320	6a 00		 push	 0
  00322	50		 push	 eax
  00323	ff 75 0c	 push	 DWORD PTR _path$[ebp]
  00326	89 75 cc	 mov	 DWORD PTR _paramTable$[ebp+184], esi
  00329	89 75 d4	 mov	 DWORD PTR _paramTable$[ebp+192], esi
  0032c	68 00 00 00 80	 push	 -2147483648		; 80000000H
  00331	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__RtlQueryRegistryValues@20

; 161  :        
; 162  :     if (!NT_SUCCESS(Status)) {

  00337	33 c9		 xor	 ecx, ecx
  00339	89 45 08	 mov	 DWORD PTR _Status$[ebp], eax
  0033c	3b c1		 cmp	 eax, ecx
  0033e	7d 06		 jge	 SHORT $L14844

; 163  :             DriverDefaultsPtr->ShouldBreakOnEntry   = 0;

  00340	89 4b 10	 mov	 DWORD PTR [ebx+16], ecx

; 164  :             DriverDefaultsPtr->DebugLevel           = 0;

  00343	89 4b 0c	 mov	 DWORD PTR [ebx+12], ecx
$L14844:

; 165  :     }
; 166  : 
; 167  :     //
; 168  :     // Check to see if there was a forcefifo or an rxfifo size.
; 169  :     // If there isn't then write out values so that they could
; 170  :     // be adjusted later.
; 171  :     //
; 172  : 
; 173  :     if (DriverDefaultsPtr->ForceFifoEnableDefault == notThereDefault) {

  00346	8b 07		 mov	 eax, DWORD PTR [edi]
  00348	3b 45 fc	 cmp	 eax, DWORD PTR _notThereDefault$[ebp]
  0034b	75 1c		 jne	 SHORT $L14965

; 174  : 
; 175  :         DriverDefaultsPtr->ForceFifoEnableDefault = SERIAL_FORCE_FIFO_DEFAULT;
; 176  :         RtlWriteRegistryValue(
; 177  :             RTL_REGISTRY_ABSOLUTE,
; 178  :             path,
; 179  :             L"ForceFifoEnable",
; 180  :             REG_DWORD,
; 181  :             &DriverDefaultsPtr->ForceFifoEnableDefault,
; 182  :             sizeof(ULONG)
; 183  :             );

  0034d	56		 push	 esi
  0034e	57		 push	 edi
  0034f	56		 push	 esi
  00350	68 00 00 00 00	 push	 OFFSET FLAT:$SG14847
  00355	ff 75 0c	 push	 DWORD PTR _path$[ebp]
  00358	c7 07 01 00 00
	00		 mov	 DWORD PTR [edi], 1
  0035e	8b 3d 00 00 00
	00		 mov	 edi, DWORD PTR __imp__RtlWriteRegistryValue@24
  00364	51		 push	 ecx
  00365	ff d7		 call	 edi
  00367	eb 06		 jmp	 SHORT $L14845
$L14965:
  00369	8b 3d 00 00 00
	00		 mov	 edi, DWORD PTR __imp__RtlWriteRegistryValue@24
$L14845:

; 184  : 
; 185  :     }
; 186  : 
; 187  :     if (DriverDefaultsPtr->RxFIFODefault == notThereDefault) {

  0036f	8b 4d fc	 mov	 ecx, DWORD PTR _notThereDefault$[ebp]
  00372	8d 43 14	 lea	 eax, DWORD PTR [ebx+20]
  00375	39 08		 cmp	 DWORD PTR [eax], ecx
  00377	75 15		 jne	 SHORT $L14848

; 188  :         DriverDefaultsPtr->RxFIFODefault = SERIAL_RX_FIFO_DEFAULT;
; 189  :         RtlWriteRegistryValue(
; 190  :             RTL_REGISTRY_ABSOLUTE,
; 191  :             path,
; 192  :             L"RxFIFO",
; 193  :             REG_DWORD,
; 194  :             &DriverDefaultsPtr->RxFIFODefault,
; 195  :             sizeof(ULONG)
; 196  :             );

  00379	56		 push	 esi
  0037a	50		 push	 eax
  0037b	56		 push	 esi
  0037c	68 00 00 00 00	 push	 OFFSET FLAT:$SG14850
  00381	ff 75 0c	 push	 DWORD PTR _path$[ebp]
  00384	c7 00 08 00 00
	00		 mov	 DWORD PTR [eax], 8
  0038a	6a 00		 push	 0
  0038c	ff d7		 call	 edi
$L14848:

; 197  :     }
; 198  : 
; 199  :     if (DriverDefaultsPtr->TxFIFODefault == notThereDefault) {

  0038e	8b 4d fc	 mov	 ecx, DWORD PTR _notThereDefault$[ebp]
  00391	8d 43 18	 lea	 eax, DWORD PTR [ebx+24]
  00394	39 08		 cmp	 DWORD PTR [eax], ecx
  00396	75 15		 jne	 SHORT $L14851

; 200  : 
; 201  :         DriverDefaultsPtr->TxFIFODefault = SERIAL_TX_FIFO_DEFAULT;
; 202  :         RtlWriteRegistryValue(
; 203  :             RTL_REGISTRY_ABSOLUTE,
; 204  :             path,
; 205  :             L"TxFIFO",
; 206  :             REG_DWORD,
; 207  :             &DriverDefaultsPtr->TxFIFODefault,
; 208  :             sizeof(ULONG)
; 209  :             );

  00398	56		 push	 esi
  00399	50		 push	 eax
  0039a	56		 push	 esi
  0039b	68 00 00 00 00	 push	 OFFSET FLAT:$SG14853
  003a0	ff 75 0c	 push	 DWORD PTR _path$[ebp]
  003a3	c7 00 0e 00 00
	00		 mov	 DWORD PTR [eax], 14	; 0000000eH
  003a9	6a 00		 push	 0
  003ab	ff d7		 call	 edi
$L14851:

; 210  :     }
; 211  : 
; 212  : 
; 213  :     if (DriverDefaultsPtr->PermitShareDefault == notThereDefault) {

  003ad	8b 4d fc	 mov	 ecx, DWORD PTR _notThereDefault$[ebp]
  003b0	8d 43 1c	 lea	 eax, DWORD PTR [ebx+28]
  003b3	39 08		 cmp	 DWORD PTR [eax], ecx
  003b5	75 12		 jne	 SHORT $L14854

; 214  : 
; 215  :         DriverDefaultsPtr->PermitShareDefault = SERIAL_PERMIT_SHARE_DEFAULT;
; 216  :         //
; 217  :         // Only share if the user actual changes switch.
; 218  :         //
; 219  : 
; 220  :         RtlWriteRegistryValue(
; 221  :             RTL_REGISTRY_ABSOLUTE,
; 222  :             path,
; 223  :             L"PermitShare",
; 224  :             REG_DWORD,
; 225  :             &DriverDefaultsPtr->PermitShareDefault,
; 226  :             sizeof(ULONG)
; 227  :             );

  003b7	56		 push	 esi
  003b8	83 20 00	 and	 DWORD PTR [eax], 0
  003bb	50		 push	 eax
  003bc	56		 push	 esi
  003bd	68 00 00 00 00	 push	 OFFSET FLAT:$SG14856
  003c2	ff 75 0c	 push	 DWORD PTR _path$[ebp]
  003c5	6a 00		 push	 0
  003c7	ff d7		 call	 edi
$L14854:

; 228  : 
; 229  :     }
; 230  : 
; 231  : 
; 232  :     if (DriverDefaultsPtr->LogFifoDefault == notThereDefault) {

  003c9	8b 4d fc	 mov	 ecx, DWORD PTR _notThereDefault$[ebp]
  003cc	8d 43 24	 lea	 eax, DWORD PTR [ebx+36]
  003cf	39 08		 cmp	 DWORD PTR [eax], ecx
  003d1	75 19		 jne	 SHORT $L14857

; 233  : 
; 234  :         //
; 235  :         // Wasn't there.  After this load don't log
; 236  :         // the message anymore.  However this first
; 237  :         // time log the message.
; 238  :         //
; 239  : 
; 240  :         DriverDefaultsPtr->LogFifoDefault = SERIAL_LOG_FIFO_DEFAULT;
; 241  : 
; 242  :         RtlWriteRegistryValue(
; 243  :             RTL_REGISTRY_ABSOLUTE,
; 244  :             path,
; 245  :             L"LogFifo",
; 246  :             REG_DWORD,
; 247  :             &DriverDefaultsPtr->LogFifoDefault,
; 248  :             sizeof(ULONG)
; 249  :             );

  003d3	56		 push	 esi
  003d4	83 20 00	 and	 DWORD PTR [eax], 0
  003d7	50		 push	 eax
  003d8	56		 push	 esi
  003d9	68 00 00 00 00	 push	 OFFSET FLAT:$SG14859
  003de	ff 75 0c	 push	 DWORD PTR _path$[ebp]
  003e1	6a 00		 push	 0
  003e3	ff d7		 call	 edi

; 250  : 
; 251  :         DriverDefaultsPtr->LogFifoDefault = 1;

  003e5	c7 43 24 01 00
	00 00		 mov	 DWORD PTR [ebx+36], 1
$L14857:

; 252  : 
; 253  :     }
; 254  : 
; 255  :     //
; 256  :     // We don't need that path anymore.
; 257  :     //
; 258  : 
; 259  :     if (path) {
; 260  :         ExFreePool(path);

  003ec	ff 75 0c	 push	 DWORD PTR _path$[ebp]
  003ef	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__ExFreePool@4

; 261  :     }
; 262  : 
; 263  :     //
; 264  :     //  Set the defaults for other values
; 265  :     //
; 266  :     DriverDefaultsPtr->PermitSystemWideShare = FALSE;

  003f5	83 63 20 00	 and	 DWORD PTR [ebx+32], 0

; 267  : 
; 268  :     return (Status);

  003f9	8b 45 08	 mov	 eax, DWORD PTR _Status$[ebp]
  003fc	5b		 pop	 ebx
$L14808:
  003fd	5f		 pop	 edi
  003fe	5e		 pop	 esi

; 269  : }

  003ff	c9		 leave
  00400	c2 08 00	 ret	 8
_SerialGetConfigDefaults@8 ENDP
INIT	ENDS
PUBLIC	_SerialGetRegistryKeyValue@20
EXTRN	__imp__ZwQueryValueKey@24:NEAR
EXTRN	_SerialDebugLevel:DWORD

⌨️ 快捷键说明

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