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

📄 sdmmc_load.cod

📁 ARM对MMC卡的编程文档
💻 COD
📖 第 1 页 / 共 5 页
字号:

  001e4	e59f407c	 ldr       r4, [pc, #0x7C]
  001e8	e1a00004	 mov       r0, r4
  001ec	eb000000	 bl        wcslen
  001f0	e58d4000	 str       r4, [sp]
  001f4	e2801001	 add       r1, r0, #1
  001f8	e59d0014	 ldr       r0, [sp, #0x14]
  001fc	e1a02081	 mov       r2, r1, lsl #1
  00200	e59f105c	 ldr       r1, [pc, #0x5C]
  00204	e58d2004	 str       r2, [sp, #4]
  00208	e3a03001	 mov       r3, #1
  0020c	e3a02000	 mov       r2, #0
  00210	eb000000	 bl        RegSetValueExW

; 175  : 		Status = RegSetValueEx( hKey,L"IClass", 0, REG_MULTI_SZ, (LPBYTE)szSDMMCGuid, 500);

  00214	e59f0044	 ldr       r0, [pc, #0x44]
  00218	e3a03f7d	 mov       r3, #0x7D, 30
  0021c	e5901000	 ldr       r1, [r0]
  00220	e3a02000	 mov       r2, #0
  00224	e58d3004	 str       r3, [sp, #4]
  00228	e3a03007	 mov       r3, #7
  0022c	e58d1000	 str       r1, [sp]
  00230	e59f1024	 ldr       r1, [pc, #0x24]
  00234	e59d0014	 ldr       r0, [sp, #0x14]
  00238	eb000000	 bl        RegSetValueExW

; 176  : 		if(Status == ERROR_SUCCESS)

  0023c	e3500000	 cmp       r0, #0

; 177  : 			 RETAILMSG(1, (TEXT("DoRegSetUp is done successfully\r\n")));

  00240	059f0010	 ldreq     r0, [pc, #0x10]
  00244	0b000000	 bleq      NKDbgPrintfW

; 178  : 
; 179  :         RegCloseKey( hKey);

  00248	e59d0014	 ldr       r0, [sp, #0x14]
  0024c	eb000000	 bl        RegCloseKey
  00250		 |$L40482|

; 180  :     }   
; 181  : }

  00250	e28dd020	 add       sp, sp, #0x20
  00254	e8bd8030	 ldmia     sp!, {r4, r5, pc}
  00258		 |$L40814|
  00258	00000000	 DCD       |??_C@_1EE@JOKL@?$AAD?$AAo?$AAR?$AAe?$AAg?$AAS?$AAe?$AAt?$AAU?$AAp?$AA?5?$AAi?$AAs?$AA?5?$AAd?$AAo?$AAn?$AAe?$AA?5?$AAs@|
  0025c	00000000	 DCD       |??_C@_1O@HLNE@?$AAI?$AAC?$AAl?$AAa?$AAs?$AAs?$AA?$AA@|
  00260	00000000	 DCD       |szSDMMCGuid|
  00264	00000000	 DCD       |??_C@_1BA@FJCC@?$AAP?$AAr?$AAo?$AAf?$AAi?$AAl?$AAe?$AA?$AA@|
  00268	00000000	 DCD       |??_C@_1M@LBOO@?$AAS?$AAD?$AAM?$AAM?$AAC?$AA?$AA@|
  0026c	00000000	 DCD       |??_C@_1O@ONFM@?$AAF?$AAo?$AAl?$AAd?$AAe?$AAr?$AA?$AA@|
  00270	00000000	 DCD       |szFolder|
  00274	00000000	 DCD       |??_C@_17GEIL@?$AAF?$AAS?$AAD?$AA?$AA@|
  00278	00000000	 DCD       |szFSD|
  0027c	00000000	 DCD       |??_C@_1M@PHK@?$AAI?$AAo?$AAc?$AAt?$AAl?$AA?$AA@|
  00280	00000000	 DCD       |??_C@_1M@LLMB@?$AAO?$AAr?$AAd?$AAe?$AAr?$AA?$AA@|
  00284	00000000	 DCD       |??_C@_1BK@EFIC@?$AAF?$AAr?$AAi?$AAe?$AAn?$AAd?$AAl?$AAy?$AAN?$AAa?$AAm?$AAe?$AA?$AA@|
  00288	00000000	 DCD       |szFriendlyName|
  0028c	00000000	 DCD       |??_C@_17IMOP@?$AAD?$AAl?$AAl?$AA?$AA@|
  00290	00000000	 DCD       |szDLL|
  00294	00000000	 DCD       |??_C@_1O@JINJ@?$AAP?$AAr?$AAe?$AAf?$AAi?$AAx?$AA?$AA@|
  00298	00000000	 DCD       |szPrefix|
  0029c	00000000	 DCD       |??_C@_1DM@CLKA@?$AA?$CB?$AA?$CB?$AA?$CB?$AA?5?$AAF?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?5?$AAt?$AAo?$AA?5?$AAc?$AAr?$AAe?$AAa?$AAt?$AAe@|
  002a0	00000000	 DCD       |??_C@_1DM@PJAM@?$AAS?$AAu?$AAc?$AAc?$AAe?$AAs?$AAs?$AAf?$AAu?$AAl?$AAl?$AAy?$AA?5?$AAc?$AAr?$AAe?$AAa?$AAt?$AAe?$AAd@|
  002a4	00000000	 DCD       |??_C@_11A@?$AA?$AA@|
  002a8	00000000	 DCD       |??_C@_1DK@MLKH@?$AAS?$AAu?$AAc?$AAc?$AAe?$AAs?$AAs?$AAf?$AAu?$AAl?$AAl?$AAy?$AA?5?$AAo?$AAp?$AAe?$AAn?$AAe?$AAd?$AA?5@|
  002ac		 |$M40811|

			 ENDP  ; |DoRegSetup|

	EXPORT	|DoGetHandleValue|
	EXPORT	|??_C@_1BA@PCCP@?$AAH?$AAD?$AAE?$AAV?$AAI?$AAC?$AAE?$AA?$AA@| [ DATA ] ; `string'

  00000			 AREA	 |.text| { |DoGetHandleValue| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$DoGetHandleValue|, PDATA, SELECTION=5, ASSOC=|.text| { |DoGetHandleValue| } ; comdat associative
|$T40821| DCD	|DoGetHandleValue|
	DCD	0x40001a02

  00000			 AREA	 |.rdata| { |??_C@_1BA@PCCP@?$AAH?$AAD?$AAE?$AAV?$AAI?$AAC?$AAE?$AA?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1BA@PCCP@?$AAH?$AAD?$AAE?$AAV?$AAI?$AAC?$AAE?$AA?$AA@| DCB "H", 0x0
	DCB	"D", 0x0, "E", 0x0, "V", 0x0, "I", 0x0, "C", 0x0, "E", 0x0
	DCB	0x0, 0x0				; `string'
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |DoGetHandleValue| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |DoGetHandleValue| PROC

; 184  : {

  00000	e92d4030	 stmdb     sp!, {r4, r5, lr}
  00004	e24dd008	 sub       sp, sp, #8
  00008		 |$M40819|
  00008	e1a04001	 mov       r4, r1

; 185  : 	LONG  nErr;
; 186  :     HKEY hKey = NULL;
; 187  :     *phDevice = NULL;
; 188  : 	nErr = RegOpenKeyEx( HKEY_LOCAL_MACHINE, szRegKey, 0, 0, &hKey);

  0000c	e28d1004	 add       r1, sp, #4
  00010	e58d1000	 str       r1, [sp]
  00014	e3a05000	 mov       r5, #0
  00018	e1a01000	 mov       r1, r0
  0001c	e58d5004	 str       r5, [sp, #4]
  00020	e3a03000	 mov       r3, #0
  00024	e5845000	 str       r5, [r4]
  00028	e3a02000	 mov       r2, #0
  0002c	e3a0010a	 mov       r0, #0xA, 2
  00030	eb000000	 bl        RegOpenKeyExW

; 189  :     if (nErr == ERROR_SUCCESS) 

  00034	e3500000	 cmp       r0, #0
  00038	1a000005	 bne       |$L40526|

; 190  : 	{
; 191  :         if (!SDMCC_GetRegistryValue(hKey, L"HDEVICE", (PDWORD)phDevice)) 

  0003c	e59f1020	 ldr       r1, [pc, #0x20]
  00040	e1a02004	 mov       r2, r4
  00044	e59d0004	 ldr       r0, [sp, #4]
  00048	eb000000	 bl        SDMCC_GetRegistryValue
  0004c	e3500000	 cmp       r0, #0

; 192  : 		{
; 193  :             *phDevice = NULL;

  00050	05845000	 streq     r5, [r4]
  00054		 |$L40526|

; 194  :         }   
; 195  :     }    
; 196  :     RegCloseKey( hKey);

  00054	e59d0004	 ldr       r0, [sp, #4]
  00058	eb000000	 bl        RegCloseKey

; 197  : }

  0005c	e28dd008	 add       sp, sp, #8
  00060	e8bd8030	 ldmia     sp!, {r4, r5, pc}
  00064		 |$L40823|
  00064	00000000	 DCD       |??_C@_1BA@PCCP@?$AAH?$AAD?$AAE?$AAV?$AAI?$AAC?$AAE?$AA?$AA@|
  00068		 |$M40820|

			 ENDP  ; |DoGetHandleValue|

	EXPORT	|DoSetHandleValue|

  00000			 AREA	 |.text| { |DoSetHandleValue| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$DoSetHandleValue|, PDATA, SELECTION=5, ASSOC=|.text| { |DoSetHandleValue| } ; comdat associative
|$T40830| DCD	|DoSetHandleValue|
	DCD	0x40001d02
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |DoSetHandleValue| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |DoSetHandleValue| PROC

; 200  : {

  00000	e92d4010	 stmdb     sp!, {r4, lr}
  00004	e24dd010	 sub       sp, sp, #0x10
  00008		 |$M40828|
  00008	e1a04001	 mov       r4, r1

; 201  : 
; 202  :     HKEY hKey = NULL;

  0000c	e3a01000	 mov       r1, #0

; 203  :     LONG nErr = RegOpenKeyEx( HKEY_LOCAL_MACHINE, szRegKey, 0, 0, &hKey);

  00010	e28d2008	 add       r2, sp, #8
  00014	e58d1008	 str       r1, [sp, #8]
  00018	e58d2000	 str       r2, [sp]
  0001c	e1a01000	 mov       r1, r0
  00020	e3a03000	 mov       r3, #0
  00024	e3a02000	 mov       r2, #0
  00028	e3a0010a	 mov       r0, #0xA, 2
  0002c	eb000000	 bl        RegOpenKeyExW

; 204  :     if (nErr == ERROR_SUCCESS) 

  00030	e3500000	 cmp       r0, #0
  00034	1a000009	 bne       |$L40539|

; 205  : 	{
; 206  :         WRITE_REG_DWORD(L"HDEVICE", (DWORD)hDevice)

  00038	e3a00004	 mov       r0, #4
  0003c	e58d400c	 str       r4, [sp, #0xC]
  00040	e28d100c	 add       r1, sp, #0xC
  00044	e58d0004	 str       r0, [sp, #4]
  00048	e58d1000	 str       r1, [sp]
  0004c	e3a03004	 mov       r3, #4
  00050	e59f1018	 ldr       r1, [pc, #0x18]
  00054	e3a02000	 mov       r2, #0
  00058	e59d0008	 ldr       r0, [sp, #8]
  0005c	eb000000	 bl        RegSetValueExW
  00060		 |$L40539|

; 207  :     }    
; 208  :     RegCloseKey( hKey);

  00060	e59d0008	 ldr       r0, [sp, #8]
  00064	eb000000	 bl        RegCloseKey

; 209  : }

  00068	e28dd010	 add       sp, sp, #0x10
  0006c	e8bd8010	 ldmia     sp!, {r4, pc}
  00070		 |$L40832|
  00070	00000000	 DCD       |??_C@_1BA@PCCP@?$AAH?$AAD?$AAE?$AAV?$AAI?$AAC?$AAE?$AA?$AA@|
  00074		 |$M40829|

			 ENDP  ; |DoSetHandleValue|

	EXPORT	|DoDeleteHandleValue|
	IMPORT	|RegDeleteValueW|

  00000			 AREA	 |.text| { |DoDeleteHandleValue| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$DoDeleteHandleValue|, PDATA, SELECTION=5, ASSOC=|.text| { |DoDeleteHandleValue| } ; comdat associative
|$T40838| DCD	|DoDeleteHandleValue|
	DCD	0x40001402
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |DoDeleteHandleValue| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |DoDeleteHandleValue| PROC

; 212  : {

  00000	e52de004	 str       lr, [sp, #-4]!
  00004	e24dd008	 sub       sp, sp, #8
  00008		 |$M40836|

; 213  : 
; 214  :     HKEY hKey = NULL;

  00008	e3a01000	 mov       r1, #0

; 215  :     LONG nErr = RegOpenKeyEx( HKEY_LOCAL_MACHINE, szRegKey, 0, 0, &hKey);

  0000c	e28d2004	 add       r2, sp, #4
  00010	e58d1004	 str       r1, [sp, #4]
  00014	e58d2000	 str       r2, [sp]
  00018	e1a01000	 mov       r1, r0
  0001c	e3a03000	 mov       r3, #0
  00020	e3a02000	 mov       r2, #0
  00024	e3a0010a	 mov       r0, #0xA, 2
  00028	eb000000	 bl        RegOpenKeyExW

; 216  :     if (nErr == ERROR_SUCCESS) 

  0002c	e3500000	 cmp       r0, #0

; 217  : 	{
; 218  :         RegDeleteValue( hKey, L"HDEVICE");

  00030	059f1014	 ldreq     r1, [pc, #0x14]
  00034	059d0004	 ldreq     r0, [sp, #4]
  00038	0b000000	 bleq      RegDeleteValueW

; 219  :     }    
; 220  :     RegCloseKey( hKey);

  0003c	e59d0004	 ldr       r0, [sp, #4]
  00040	eb000000	 bl        RegCloseKey

; 221  : }

  00044	e28dd008	 add       sp, sp, #8
  00048	e8bd8000	 ldmia     sp!, {pc}
  0004c		 |$L40840|
  0004c	00000000	 DCD       |??_C@_1BA@PCCP@?$AAH?$AAD?$AAE?$AAV?$AAI?$AAC?$AAE?$AA?$AA@|
  00050		 |$M40837|

			 ENDP  ; |DoDeleteHandleValue|

	EXPORT	|SML_PowerUp|
	EXPORT	|SML_PowerDown|
	EXPORT	|SML_PowerHandler|

  00000			 AREA	 |.text| { |SML_PowerHandler| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$SML_PowerHandler|, PDATA, SELECTION=5, ASSOC=|.text| { |SML_PowerHandler| } ; comdat associative
|$T40846| DCD	|SML_PowerHandler|
	DCD	0x40000300
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |SML_PowerHandler| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |SML_PowerHandler| PROC

; 372  : {

  00000		 |$M40844|

; 373  :     if (bOff) 

  00000	e3500000	 cmp       r0, #0

; 374  : 	{
; 375  : 		SML_PowerDown();

  00004	1a000000	 bne       SML_PowerDown

; 376  : 	}
; 377  :     else 
; 378  : 	{
; 379  : 		SML_PowerUp();

  00008	ea000000	 b         SML_PowerUp
  0000c		 |$M40845|

			 ENDP  ; |SML_PowerHandler|

	EXPORT	|SDMMCDetectThread|
	EXPORT	|??_C@_1CM@CGPI@?$AAS?$AAD?$AAM?$AAM?$AAC?$AA?5?$AAc?$AAa?$AAr?$AAd?$AA?5?$AAi?$AAn?$AAs?$AAe?$AAr?$AAt?$AAe?$AAd?$AA?$AN@| [ DATA ] ; `string'
	EXPORT	|??_C@_1CM@IHDK@?$AAS?$AAD?$AAM?$AAM?$AAC?$AA?5?$AAc?$AAa?$AAr?$AAd?$AA?5?$AAd?$AAe?$AAs?$AAe?$AAr?$AAt?$AAe?$AAd?$AA?$AN@| [ DATA ] ; `string'
	IMPORT	|ActivateDevice|
	IMPORT	|MmMapIoSpace|
	IMPORT	|DeactivateDevice|
	IMPORT	|Sleep|

  00000			 AREA	 |.text| { |SDMMCDetectThread| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$SDMMCDetectThread|, PDATA, SELECTION=5, ASSOC=|.text| { |SDMMCDetectThread| } ; comdat associative
|$T40858| DCD	|SDMMCDetectThread|
	DCD	0x40003b01

  00000			 AREA	 |.rdata| { |??_C@_1CM@CGPI@?$AAS?$AAD?$AAM?$AAM?$AAC?$AA?5?$AAc?$AAa?$AAr?$AAd?$AA?5?$AAi?$AAn?$AAs?$AAe?$AAr?$AAt?$AAe?$AAd?$AA?$AN@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1CM@CGPI@?$AAS?$AAD?$AAM?$AAM?$AAC?$AA?5?$AAc?$AAa?$AAr?$AAd?$AA?5?$AAi?$AAn?$AAs?$AAe?$AAr?$AAt?$AAe?$AAd?$AA?$AN@| DCB "S"
	DCB	0x0, "D", 0x0, "M", 0x0, "M", 0x0, "C", 0x0, " ", 0x0, "c"
	DCB	0x0, "a", 0x0, "r", 0x0, "d", 0x0, " ", 0x0, "i", 0x0, "n"
	DCB	0x0, "s", 0x0, "e", 0x0, "r", 0x0, "t", 0x0, "e", 0x0, "d"
	DCB	0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0	; `string'

  00000			 AREA	 |.rdata| { |??_C@_1CM@IHDK@?$AAS?$AAD?$AAM?$AAM?$AAC?$AA?5?$AAc?$AAa?$AAr?$AAd?$AA?5?$AAd?$AAe?$AAs?$AAe?$AAr?$AAt?$AAe?$AAd?$AA?$AN@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1CM@IHDK@?$AAS?$AAD?$AAM?$AAM?$AAC?$AA?5?$AAc?$AAa?$AAr?$AAd?$AA?5?$AAd?$AAe?$AAs?$AAe?$AAr?$AAt?$AAe?$AAd?$AA?$AN@| DCB "S"
	DCB	0x0, "D", 0x0, "M", 0x0, "M", 0x0, "C", 0x0, " ", 0x0, "c"
	DCB	0x0, "a", 0x0, "r", 0x0, "d", 0x0, " ", 0x0, "d", 0x0, "e"
	DCB	0x0, "s", 0x0, "e", 0x0, "r", 0x0, "t", 0x0, "e", 0x0, "d"
	DCB	0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0	; `string'
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |SDMMCDetectThread| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |SDMMCDetectThread| PROC

; 398  : {

  00000	e92d40f0	 stmdb     sp!, {r4 - r7, lr}
  00004		 |$M40856|

; 399  :     

; 400  : 	HANDLE hDevice = NULL;
; 401  : 

⌨️ 快捷键说明

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