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

📄 atamain.cod

📁 windows CE 的BSP开发包.包含众多的驱动程序和OAL层的开发代码
💻 COD
📖 第 1 页 / 共 5 页
字号:
; 149  :     }
; 150  :     // free DSK_ registry value set
; 151  :     if (m_pDskReg[0]) {

  0007c	e5943034	 ldr         r3, [r4, #0x34]
  00080	e3530000	 cmp         r3, #0

; 152  :         LocalFree(m_pDskReg[0]);

  00084	11a00003	 movne       r0, r3
  00088	1b000000	 blne        LocalFree

; 153  :     }
; 154  :     if (m_pDskReg[1]) {

  0008c	e5943038	 ldr         r3, [r4, #0x38]
  00090	e3530000	 cmp         r3, #0

; 155  :         LocalFree(m_pDskReg[1]);

  00094	11a00003	 movne       r0, r3
  00098	1b000000	 blne        LocalFree

; 156  :     }
; 157  : }

  0009c	e8bd4010	 ldmia       sp!, {r4, lr}
  000a0	e12fff1e	 bx          lr
  000a4		 |$M33057|

			 ENDP  ; |??1CPort@@QAA@XZ|, CPort::~CPort

	EXPORT	|?TakeCS@CPort@@QAAXXZ|			; CPort::TakeCS
	IMPORT	|EnterCriticalSection|

  00000			 AREA	 |.text| { |?TakeCS@CPort@@QAAXXZ| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$?TakeCS@CPort@@QAAXXZ|, PDATA, SELECTION=5, ASSOC=|.text| { |?TakeCS@CPort@@QAAXXZ| } ; comdat associative
|$T33067| DCD	|$L33066|
	DCD	0x40000501
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |?TakeCS@CPort@@QAAXXZ| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |?TakeCS@CPort@@QAAXXZ| PROC		; CPort::TakeCS

; 163  : {

  00000		 |$L33066|
  00000	e52de004	 str         lr, [sp, #-4]!
  00004		 |$M33064|

; 164  :     EnterCriticalSection(&m_csPort);

  00004	e2800004	 add         r0, r0, #4
  00008	eb000000	 bl          EnterCriticalSection

; 165  : }

  0000c	e49de004	 ldr         lr, [sp], #4
  00010	e12fff1e	 bx          lr
  00014		 |$M33065|

			 ENDP  ; |?TakeCS@CPort@@QAAXXZ|, CPort::TakeCS

	EXPORT	|?ReleaseCS@CPort@@QAAXXZ|		; CPort::ReleaseCS
	IMPORT	|LeaveCriticalSection|

  00000			 AREA	 |.text| { |?ReleaseCS@CPort@@QAAXXZ| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$?ReleaseCS@CPort@@QAAXXZ|, PDATA, SELECTION=5, ASSOC=|.text| { |?ReleaseCS@CPort@@QAAXXZ| } ; comdat associative
|$T33075| DCD	|$L33074|
	DCD	0x40000501
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |?ReleaseCS@CPort@@QAAXXZ| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |?ReleaseCS@CPort@@QAAXXZ| PROC	; CPort::ReleaseCS

; 171  : {

  00000		 |$L33074|
  00000	e52de004	 str         lr, [sp, #-4]!
  00004		 |$M33072|

; 172  :     LeaveCriticalSection(&m_csPort);

  00004	e2800004	 add         r0, r0, #4
  00008	eb000000	 bl          LeaveCriticalSection

; 173  : }

  0000c	e49de004	 ldr         lr, [sp], #4
  00010	e12fff1e	 bx          lr
  00014		 |$M33073|

			 ENDP  ; |?ReleaseCS@CPort@@QAAXXZ|, CPort::ReleaseCS

	EXPORT	|?PrintInfo@CPort@@QAAXXZ|		; CPort::PrintInfo

  00000			 AREA	 |.text| { |?PrintInfo@CPort@@QAAXXZ| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$?PrintInfo@CPort@@QAAXXZ|, PDATA, SELECTION=5, ASSOC=|.text| { |?PrintInfo@CPort@@QAAXXZ| } ; comdat associative
|$T33082| DCD	|$L33081|
	DCD	0x40000100
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |?PrintInfo@CPort@@QAAXXZ| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |?PrintInfo@CPort@@QAAXXZ| PROC	; CPort::PrintInfo

; 179  : {

  00000		 |$L33081|
  00000		 |$M33079|

; 180  :     DEBUGMSG(ZONE_INIT, (TEXT("dwRegBase   = %08X\r\n"), m_dwRegBase));
; 181  :     DEBUGMSG(ZONE_INIT, (TEXT("dwRegAlt    = %08X\r\n"), m_dwRegAlt));
; 182  :     DEBUGMSG(ZONE_INIT, (TEXT("dwBMR       = %08X\r\n"), m_dwBMR));
; 183  :     DEBUGMSG(ZONE_INIT, (TEXT("dwSysIntr   = %08X\r\n"), m_dwSysIntr));
; 184  :     DEBUGMSG(ZONE_INIT, (TEXT("dwIrq       = %08X\r\n"), m_dwIrq));
; 185  :     DEBUGMSG(ZONE_INIT, (TEXT("dwBMRStatic = %08X\r\n"), m_dwBMRStatic));
; 186  : }

  00000	e12fff1e	 bx          lr
  00004		 |$M33080|

			 ENDP  ; |?PrintInfo@CPort@@QAAXXZ|, CPort::PrintInfo

	EXPORT	|?AtaLoadRegKey@@YAPAUHKEY__@@PAU1@PAPAG@Z| ; AtaLoadRegKey
	EXPORT	|??_C@_17KACEIPNC@?$AAK?$AAe?$AAy?$AA?$AA@| [ DATA ] ; `string'
	IMPORT	|LocalAlloc|
	IMPORT	|RegOpenKeyExW|
	IMPORT	|RegQueryValueExW|

  00000			 AREA	 |.text| { |?AtaLoadRegKey@@YAPAUHKEY__@@PAU1@PAPAG@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$?AtaLoadRegKey@@YAPAUHKEY__@@PAU1@PAPAG@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?AtaLoadRegKey@@YAPAUHKEY__@@PAU1@PAPAG@Z| } ; comdat associative
|$T33096| DCD	|$L33095|
	DCD	0x40003e02

  00000			 AREA	 |.rdata| { |??_C@_17KACEIPNC@?$AAK?$AAe?$AAy?$AA?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_17KACEIPNC@?$AAK?$AAe?$AAy?$AA?$AA@| DCB "K", 0x0, "e", 0x0, "y", 0x0
	DCB	0x0, 0x0				; `string'
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |?AtaLoadRegKey@@YAPAUHKEY__@@PAU1@PAPAG@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |?AtaLoadRegKey@@YAPAUHKEY__@@PAU1@PAPAG@Z| PROC ; AtaLoadRegKey

; 197  : {

  00000		 |$L33095|
  00000	e92d41f0	 stmdb       sp!, {r4 - r8, lr}
  00004	e24dd014	 sub         sp, sp, #0x14
  00008		 |$M33093|
  00008	e1a05001	 mov         r5, r1
  0000c	e1a06000	 mov         r6, r0

; 198  :     DWORD dwValueType;        // registry value type
; 199  :     DWORD dwValueLength = 0;  // registry value length
; 200  :     PTSTR szDeviceKey = NULL; // name of device key; value associated with "Key"
; 201  :     HKEY hDeviceKey = NULL;   // handle to device key; handle to "Key"
; 202  : 
; 203  :     // query the value of "Key" with @dwValueLength=0, to determine the actual
; 204  :     // length of the value (so as to allocate the exact amount of memory)
; 205  : 
; 206  :     if (ERROR_SUCCESS == RegQueryValueEx(hActiveKey, DEVLOAD_DEVKEY_VALNAME, NULL, &dwValueType, NULL, &dwValueLength)) {

  00010	e59f10dc	 ldr         r1, [pc, #0xDC]
  00014	e3a04000	 mov         r4, #0
  00018	e3a07000	 mov         r7, #0
  0001c	e28de008	 add         lr, sp, #8
  00020	e3a08000	 mov         r8, #0
  00024	e58d4008	 str         r4, [sp, #8]
  00028	e28d3010	 add         r3, sp, #0x10
  0002c	e3a02000	 mov         r2, #0
  00030	e3a04000	 mov         r4, #0
  00034	e58d700c	 str         r7, [sp, #0xC]
  00038	e58de004	 str         lr, [sp, #4]
  0003c	e58d8000	 str         r8, [sp]
  00040	eb000000	 bl          RegQueryValueExW
  00044	e3500000	 cmp         r0, #0
  00048	1a00001b	 bne         |$L33087|

; 207  : 
; 208  :         // allocate just enough memory to store the value of "Key"
; 209  :         szDeviceKey = (PTSTR)LocalAlloc(LPTR, dwValueLength);

  0004c	e59d1008	 ldr         r1, [sp, #8]
  00050	e3a00040	 mov         r0, #0x40
  00054	eb000000	 bl          LocalAlloc
  00058	e1b04000	 movs        r4, r0

; 210  :         if (szDeviceKey) {

  0005c	0a000016	 beq         |$L33087|

; 211  : 
; 212  :             // read the actual value of "Key" and null terminate the target buffer
; 213  :             RegQueryValueEx(hActiveKey, DEVLOAD_DEVKEY_VALNAME, NULL, &dwValueType, (PBYTE)szDeviceKey, &dwValueLength);

  00060	e59f108c	 ldr         r1, [pc, #0x8C]
  00064	e28d3008	 add         r3, sp, #8
  00068	e58d3004	 str         r3, [sp, #4]
  0006c	e28d3010	 add         r3, sp, #0x10
  00070	e3a02000	 mov         r2, #0
  00074	e1a00006	 mov         r0, r6
  00078	e58d4000	 str         r4, [sp]
  0007c	eb000000	 bl          RegQueryValueExW

; 214  :             DEBUGCHK(dwValueLength != 0);
; 215  :             szDeviceKey[(dwValueLength / sizeof(TCHAR)) - 1] = 0;

  00080	e59d2008	 ldr         r2, [sp, #8]

; 216  : 
; 217  :             // open the device key
; 218  :             if (ERROR_SUCCESS != RegOpenKeyEx(HKEY_LOCAL_MACHINE, szDeviceKey, 0, 0, &hDeviceKey)) {

  00084	e28de00c	 add         lr, sp, #0xC
  00088	e3a03000	 mov         r3, #0
  0008c	e1a020a2	 mov         r2, r2, lsr #1
  00090	e0842082	 add         r2, r4, r2, lsl #1
  00094	e14280b2	 strh        r8, [r2, #-2]
  00098	e3a02000	 mov         r2, #0
  0009c	e1a01004	 mov         r1, r4
  000a0	e3a0010a	 mov         r0, #0xA, 2
  000a4	e58de000	 str         lr, [sp]
  000a8	eb000000	 bl          RegOpenKeyExW
  000ac	e3500000	 cmp         r0, #0

; 219  :                 DEBUGMSG(ZONE_INIT, (_T(
; 220  :                     "AtaLoadRegyKey> Failed to open %s\r\n"
; 221  :                     ), szDeviceKey));
; 222  :                 hDeviceKey = NULL;

  000b0	13a00000	 movne       r0, #0
  000b4	158d000c	 strne       r0, [sp, #0xC]
  000b8	1a000000	 bne         |$L32413|
  000bc		 |$L33087|
  000bc	e59d000c	 ldr         r0, [sp, #0xC]
  000c0		 |$L32413|

; 223  :             }
; 224  :         }
; 225  :     }
; 226  :     if (!hDeviceKey) {

  000c0	e3500000	 cmp         r0, #0
  000c4	1a000006	 bne         |$L32415|

; 227  :         if (szDeviceKey) {

  000c8	e3540000	 cmp         r4, #0
  000cc	0a000002	 beq         |$L32416|

; 228  :             LocalFree(szDeviceKey);

  000d0	e1a00004	 mov         r0, r4
  000d4	eb000000	 bl          LocalFree
  000d8	e59d000c	 ldr         r0, [sp, #0xC]
  000dc		 |$L32416|

; 229  :         }
; 230  :         *pszDevKey = NULL;

  000dc	e5858000	 str         r8, [r5]

; 231  :     }
; 232  :     else {

  000e0	ea000000	 b           |$L32417|
  000e4		 |$L32415|

; 233  :         *pszDevKey = szDeviceKey;

  000e4	e5854000	 str         r4, [r5]
  000e8		 |$L32417|

; 234  :     }
; 235  :     return hDeviceKey;
; 236  : }

  000e8	e28dd014	 add         sp, sp, #0x14
  000ec	e8bd41f0	 ldmia       sp!, {r4 - r8, lr}
  000f0	e12fff1e	 bx          lr
  000f4		 |$L33098|
  000f4	00000000	 DCD         |??_C@_17KACEIPNC@?$AAK?$AAe?$AAy?$AA?$AA@|
  000f8		 |$M33094|

			 ENDP  ; |?AtaLoadRegKey@@YAPAUHKEY__@@PAU1@PAPAG@Z|, AtaLoadRegKey

	EXPORT	|?AtaIsValidDisk@@YAHPAVCDisk@@@Z|	; AtaIsValidDisk

  00000			 AREA	 |.text| { |?AtaIsValidDisk@@YAHPAVCDisk@@@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$?AtaIsValidDisk@@YAHPAVCDisk@@@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?AtaIsValidDisk@@YAHPAVCDisk@@@Z| } ; comdat associative
|$T33112| DCD	|$L33111|
	DCD	0x40000d00
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |?AtaIsValidDisk@@YAHPAVCDisk@@@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |?AtaIsValidDisk@@YAHPAVCDisk@@@Z| PROC ; AtaIsValidDisk

; 243  : {

  00000		 |$L33111|
  00000		 |$M33109|

; 244  :     CDisk *pTemp = g_pDiskRoot;

  00000	e59f3028	 ldr         r3, [pc, #0x28]
  00004	e5933000	 ldr         r3, [r3]
  00008	ea000002	 b           |$L33108|
  0000c		 |$L32423|

; 245  :     while (pTemp) {
; 246  :         if (pTemp == pDisk) {

  0000c	e1530000	 cmp         r3, r0
  00010	0a000004	 beq         |$L33102|

; 248  :         }
; 249  :         pTemp = pTemp->m_pNextDisk;

⌨️ 快捷键说明

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