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

📄 diskio.cod

📁 ARM对MMC卡的编程文档
💻 COD
📖 第 1 页 / 共 5 页
字号:
; 516  :         if (REG_SZ == dwType) {
; 517  :             DEBUGMSG( dwZone, (TEXT("\t\t%s = %s\r\n"), szValueName, (LPWSTR)pValueData));
; 518  :         } else
; 519  :         if (REG_DWORD == dwType) {
; 520  :             DEBUGMSG( dwZone, (TEXT("\t\t%s = %08X\r\n"), szValueName, *(PDWORD)pValueData));
; 521  :         }
; 522  :         dwIndex++;
; 523  :         dwValueDataSize = sizeof(pValueData);

  0005c	e58d6010	 str       r6, [sp, #0x10]
  00060	e58d000c	 str       r0, [sp, #0xC]
  00064	e28d1020	 add       r1, sp, #0x20
  00068	e28d0018	 add       r0, sp, #0x18
  0006c	e58d1008	 str       r1, [sp, #8]
  00070	e2844001	 add       r4, r4, #1
  00074	e58d0004	 str       r0, [sp, #4]
  00078	e28d3014	 add       r3, sp, #0x14

; 524  :         dwValueNameSize = MAX_PATH;

  0007c	e58d7014	 str       r7, [sp, #0x14]
  00080	e28d2e12	 add       r2, sp, #0x12, 28
  00084	e58d8000	 str       r8, [sp]
  00088	e1a01004	 mov       r1, r4
  0008c	e1a00005	 mov       r0, r5
  00090	eb000000	 bl        RegEnumValueW
  00094		 |$L37137|

; 508  :     DWORD dwIndex=0;
; 509  :     WCHAR szValueName[MAX_PATH];
; 510  :     DWORD dwValueNameSize = MAX_PATH;
; 511  :     BYTE pValueData[256];
; 512  :     DWORD dwType;
; 513  :     DWORD dwValueDataSize = sizeof(pValueData);
; 514  :     DEBUGMSG( dwZone, (TEXT("Dumping registry for key %s \r\n"), szKey));
; 515  :     while(ERROR_SUCCESS == RegEnumValue( hKey, dwIndex, szValueName, &dwValueNameSize, NULL, &dwType, pValueData, &dwValueDataSize)) {

  00094	e3500000	 cmp       r0, #0
  00098	0affffee	 beq       |$L36839|

; 525  :     }
; 526  : }

  0009c	e28ddfca	 add       sp, sp, #0xCA, 30
  000a0	e8bd81f0	 ldmia     sp!, {r4 - r8, pc}
  000a4		 |$M37139|

			 ENDP  ; |DumpRegKey|

	EXPORT	|OpenDriverKey|
	EXPORT	|??_C@_17KLID@?$AAK?$AAe?$AAy?$AA?$AA@| [ DATA ] ; `string'
	IMPORT	|RegCloseKey|
	IMPORT	|RegOpenKeyExW|
	IMPORT	|RegQueryValueExW|

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

  00000			 AREA	 |.pdata$$OpenDriverKey|, PDATA, SELECTION=5, ASSOC=|.text| { |OpenDriverKey| } ; comdat associative
|$T37148| DCD	|OpenDriverKey|
	DCD	0x40002b02

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

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

  00000		 |OpenDriverKey| PROC

; 542  : {

  00000	e92d4010	 stmdb     sp!, {r4, lr}
  00004	e24ddf86	 sub       sp, sp, #0x86, 30
  00008		 |$M37146|

; 543  :     TCHAR DevKey[256];
; 544  :     HKEY hDevKey;
; 545  :     HKEY hActive;
; 546  :     DWORD ValType;
; 547  :     DWORD ValLen;
; 548  :     DWORD status;
; 549  : 
; 550  :     

; 551  :     

; 552  :     

; 553  :     status = RegOpenKeyEx(
; 554  :         HKEY_LOCAL_MACHINE,
; 555  :         ActiveKey,
; 556  :         0,
; 557  :         0,
; 558  :         &hActive);

  00008	e28d100c	 add       r1, sp, #0xC
  0000c	e58d1000	 str       r1, [sp]
  00010	e1a01000	 mov       r1, r0
  00014	e3a03000	 mov       r3, #0
  00018	e3a02000	 mov       r2, #0
  0001c	e3a0010a	 mov       r0, #0xA, 2
  00020	eb000000	 bl        RegOpenKeyExW

; 559  : 
; 560  :     
; 561  :     if (status) {

  00024	e3500000	 cmp       r0, #0

; 562  :     DEBUGMSG(ZONE_INIT|ZONE_ERROR,
; 563  :         (TEXT("MMCDISK:OpenDriverKey RegOpenKeyEx(HLM\\%s) returned %d!!!\r\n"),
; 564  :           ActiveKey, status));
; 565  :     return NULL;

  00028	13a00000	 movne     r0, #0

; 608  : }   


  0002c	128ddf86	 addne     sp, sp, #0x86, 30
  00030	18bd8010	 ldmneia   sp!, {r4, pc}

; 566  :     }
; 567  : #ifdef DEBUG
; 568  : 

; 569  : #endif
; 570  : 
; 571  :     hDevKey = NULL;

  00034	e3a04000	 mov       r4, #0
  00038	e58d4008	 str       r4, [sp, #8]

; 572  : 
; 573  :     ValLen = sizeof(DevKey);

  0003c	e3a00c02	 mov       r0, #2, 24
  00040	e58d0010	 str       r0, [sp, #0x10]

; 574  :     status = RegQueryValueEx(
; 575  :         hActive,
; 576  :         DEVLOAD_DEVKEY_VALNAME,
; 577  :         NULL,
; 578  :         &ValType,
; 579  :         (PUCHAR)DevKey,
; 580  :         &ValLen);

  00044	e28d1010	 add       r1, sp, #0x10
  00048	e58d1004	 str       r1, [sp, #4]
  0004c	e28d0018	 add       r0, sp, #0x18
  00050	e58d0000	 str       r0, [sp]
  00054	e28d3014	 add       r3, sp, #0x14
  00058	e3a02000	 mov       r2, #0
  0005c	e59f1044	 ldr       r1, [pc, #0x44]
  00060	e59d000c	 ldr       r0, [sp, #0xC]
  00064	eb000000	 bl        RegQueryValueExW

; 581  :     if (status != ERROR_SUCCESS) {

  00068	e3500000	 cmp       r0, #0
  0006c	1a000008	 bne       |$odk_fail$36866|

; 582  :     DEBUGMSG(ZONE_INIT|ZONE_ERROR,
; 583  :         (TEXT("MMCDISK:OpenDriverKey - RegQueryValueEx(%s) returned %d\r\n"),
; 584  :           DEVLOAD_DEVKEY_VALNAME, status));
; 585  :     goto odk_fail;
; 586  :     }
; 587  : 
; 588  :     

; 589  :     

; 590  :     

; 591  :     status = RegOpenKeyEx(
; 592  :         HKEY_LOCAL_MACHINE,
; 593  :         DevKey,
; 594  :         0,
; 595  :         0,
; 596  :         &hDevKey);

  00070	e28d0008	 add       r0, sp, #8
  00074	e58d0000	 str       r0, [sp]
  00078	e3a03000	 mov       r3, #0
  0007c	e3a02000	 mov       r2, #0
  00080	e28d1018	 add       r1, sp, #0x18
  00084	e3a0010a	 mov       r0, #0xA, 2
  00088	eb000000	 bl        RegOpenKeyExW

; 597  :     if (status) {

  0008c	e3500000	 cmp       r0, #0

; 598  :     hDevKey = NULL;

  00090	158d4008	 strne     r4, [sp, #8]
  00094		 |$odk_fail$36866|

; 599  :     DEBUGMSG(ZONE_INIT|ZONE_ERROR,
; 600  :         (TEXT("MMCDISK:OpenDriverKey RegOpenKeyEx(HLM\\%s) returned %d!!!\r\n"),
; 601  :           DevKey, status));
; 602  :     }
; 603  : 

; 604  : 
; 605  : odk_fail:
; 606  :     RegCloseKey(hActive);

  00094	e59d000c	 ldr       r0, [sp, #0xC]
  00098	eb000000	 bl        RegCloseKey

; 607  :     return hDevKey;

  0009c	e59d0008	 ldr       r0, [sp, #8]

; 608  : }   


  000a0	e28ddf86	 add       sp, sp, #0x86, 30
  000a4	e8bd8010	 ldmia     sp!, {r4, pc}
  000a8		 |$L37150|
  000a8	00000000	 DCD       |??_C@_17KLID@?$AAK?$AAe?$AAy?$AA?$AA@|
  000ac		 |$M37147|

			 ENDP  ; |OpenDriverKey|

	EXPORT	|GetFolderName|
	EXPORT	|??_C@_1O@ONFM@?$AAF?$AAo?$AAl?$AAd?$AAe?$AAr?$AA?$AA@| [ DATA ] ; `string'

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

  00000			 AREA	 |.pdata$$GetFolderName|, PDATA, SELECTION=5, ASSOC=|.text| { |GetFolderName| } ; comdat associative
|$T37162| DCD	|GetFolderName|
	DCD	0x40002502

  00000			 AREA	 |.rdata| { |??_C@_1O@ONFM@?$AAF?$AAo?$AAl?$AAd?$AAe?$AAr?$AA?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1O@ONFM@?$AAF?$AAo?$AAl?$AAd?$AAe?$AAr?$AA?$AA@| DCB "F", 0x0, "o", 0x0
	DCB	"l", 0x0, "d", 0x0, "e", 0x0, "r", 0x0, 0x0, 0x0 ; `string'
; Function compile flags: /Ogsy

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

  00000		 |GetFolderName| PROC

; 621  : {

  00000	e92d40f0	 stmdb     sp!, {r4 - r7, lr}
  00004	e24dd00c	 sub       sp, sp, #0xC
  00008		 |$M37160|
  00008	e1a05001	 mov       r5, r1
  0000c	e1a04002	 mov       r4, r2
  00010	e1a07003	 mov       r7, r3

; 622  :     HKEY DriverKey;
; 623  :     DWORD ValType;
; 624  :     DWORD status;
; 625  : 
; 626  :     DriverKey = OpenDriverKey(pDisk->d_ActivePath);

  00014	e5900044	 ldr       r0, [r0, #0x44]
  00018	eb000000	 bl        OpenDriverKey
  0001c	e1b06000	 movs      r6, r0

; 627  :     if (DriverKey) {

  00020	0a000016	 beq       |$L36884|

; 628  :     *pcBytes = cBytes;
; 629  :     status = RegQueryValueEx(
; 630  :             DriverKey,
; 631  :             TEXT("Folder"),
; 632  :             NULL,
; 633  :             &ValType,
; 634  :             (PUCHAR)FolderName,
; 635  :             pcBytes);

  00024	e59f1064	 ldr       r1, [pc, #0x64]
  00028	e28d3008	 add       r3, sp, #8
  0002c	e3a02000	 mov       r2, #0
  00030	e5874000	 str       r4, [r7]
  00034	e1a00006	 mov       r0, r6
  00038	e58d7004	 str       r7, [sp, #4]
  0003c	e58d5000	 str       r5, [sp]
  00040	eb000000	 bl        RegQueryValueExW
  00044	e1b04000	 movs      r4, r0
  00048	e3a05000	 mov       r5, #0

; 636  :     if (status != ERROR_SUCCESS) {
; 637  :         DEBUGMSG(ZONE_INIT|ZONE_ERROR,
; 638  :         (TEXT("MMCDISK:GetFolderName - RegQueryValueEx(Folder) returned %d\r\n"),
; 639  :               status));
; 640  :         *pcBytes = 0;

  0004c	15875000	 strne     r5, [r7]

; 641  :     } else {
; 642  :         DEBUGMSG(ZONE_INIT|ZONE_ERROR,
; 643  :         (TEXT("MMCDISK:GetFolderName - FolderName = %s, length = %d\r\n"),
; 644  :          FolderName, *pcBytes));
; 645  :        *pcBytes += sizeof(WCHAR); 


  00050	05970000	 ldreq     r0, [r7]
  00054	02801002	 addeq     r1, r0, #2

; 646  :     }
; 647  :     RegCloseKey(DriverKey);

  00058	e1a00006	 mov       r0, r6
  0005c	05871000	 streq     r1, [r7]
  00060	eb000000	 bl        RegCloseKey

; 648  :     if (status || (*pcBytes == 0)) {

  00064	e3540000	 cmp       r4, #0
  00068	1a000005	 bne       |$L36880|
  0006c	e5970000	 ldr       r0, [r7]
  00070	e3500000	 cmp       r0, #0
  00074	0a000002	 beq       |$L36880|

; 649  :         return FALSE;
; 650  :     }
; 651  :     return TRUE;

  00078	e3a05001	 mov       r5, #1
  0007c	ea000000	 b         |$L36880|
  00080		 |$L36884|

; 652  :     }
; 653  :     return FALSE;

  00080	e3a05000	 mov       r5, #0
  00084		 |$L36880|

; 649  :         return FALSE;
; 650  :     }
; 651  :     return TRUE;

  00084	e1a00005	 mov       r0, r5

; 654  : }   


  00088	e28dd00c	 add       sp, sp, #0xC
  0008c	e8bd80f0	 ldmia     sp!, {r4 - r7, pc}
  00090		 |$L37164|
  00090	00000000	 DCD       |??_C@_1O@ONFM@?$AAF?$AAo?$AAl?$AAd?$AAe?$AAr?$AA?$AA@|
  00094		 |$M37161|

			 ENDP  ; |GetFolderName|

	EXPORT	|GetStorageID|
	EXPORT	|??_C@_1CM@FFGP@?$AAE?$AAn?$AAt?$AAe?$AAr?$AA?5?$AAG?$AAe?$AAt?$AAS?$AAt?$AAo?$AAr?$AAa?$AAg?$AAe?$AAI?$AAD?$AA?5?$AA?$AN@| [ DATA ] ; `string'
	IMPORT	|GetLastError|
	IMPORT	|strlen|
	IMPORT	|SetLastError|
	IMPORT	|mmc_read_serial|

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

  00000			 AREA	 |.xdata$$GetStorageID|, DATA, SELECTION=5, ASSOC=|.text| { |GetStorageID| } ; comdat associative
|$T37193| DCD	0x1
	DCD	|$L37176|
	DCD	|$L37177|
	DCD	|$L37172|
	DCD	|$L37173|

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

  00000			 AREA	 |.pdata$$GetStorageID|, PDATA, SELECTION=5, ASSOC=|.text| { |GetStorageID| } ; comdat associative
|$T37194| DCD	|GetStorageID|
	DCD	0xc0005405

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

  00000			 AREA	 |.pdata$$GetStorageID|, PDATA, SELECTION=5, ASSOC=|.text| { |GetStorageID| } ; comdat associative
|$T37196| DCD	|$L37172|
	DCD	0x40000300

  00000			 AREA	 |.rdata| { |??_C@_1CM@FFGP@?$AAE?$AAn?$AAt?$AAe?$AAr?$AA?5?$AAG?$AAe?$AAt?$AAS?$AAt?$AAo?$AAr?$AAa?$AAg?$AAe?$AAI?$AAD?$AA?5?$AA?$AN@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1CM@FFGP@?$AAE?$AAn?$AAt?$AAe?$AAr?$AA?5?$AAG?$AAe?$AAt?$AAS?$AAt?$AAo?$AAr?$AAa?$AAg?$AAe?$AAI?$AAD?$AA?5?$AA?$AN@| DCB "E"
	DCB	0x0, "n", 0x0, "t", 0x0, "e", 0x0, "r", 0x0, " ", 0x0, "G"
	DCB	0x0, "e", 0x0, "t", 0x0, "S", 0x0, "t", 0x0, "o", 0x0, "r"
	DCB	0x0, "a", 0x0, "g", 0x0, "e", 0x0, "I", 0x0, "D", 0x0, " "
	DCB	0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0	; `string'
; Function compile flags: /Ogsy

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

  00000	00000000	 DCD       |__C_specific_handler|
  00004	00000000	 DCD       |$T37193|

  00008		 |GetStorageID| PROC

; 663  : {

  00008	e1a0c00d	 mov       r12, sp
  0000c	e92d000e	 stmdb     sp!, {r1 - r3}
  00010	e92d5ff0	 stmdb     sp!, {r4 - r12, lr}
  00014	e28db028	 add       r11, sp, #0x28
  00018	e24dd044	 sub       sp, sp, #0x44
  0001c		 |$L37191|
  0001c	e1a07001	 mov       r7, r1
  00020	e1a08002	 mov       r8, r2
  00024	e1a09003	 mov       r9, r3

; 664  : 	
; 665  :     DRV_GEOMETRY_DESC * pmy_geom_desc;
; 666  :     DRV_GEOMETRY_DESC my_geom_desc;
; 667  :     PCHAR pDstOffset;
; 668  :     WORD str_length;
; 669  :     RETAILMSG(1, (TEXT("Enter GetStorageID \r\n")));

  00028	e59f0130	 ldr       r0, [pc, #0x130]
  0002c	eb000000	 bl        NKDbgPrintfW

; 670  :     if (cBytes < sizeof(*psid)) {

  00030	e3580010	 cmp       r8, #0x10
  00034	2a000004	 bcs       |$L36909|

; 671  :     SetLastError(ERROR_INVALID_PARAMETER);

  00038	e3a00057	 mov       r0, #0x57
  0003c	eb000000	 bl        SetLastError

; 672  :     return FALSE;

  00040	e3a0a000	 mov       r10, #0
  00044	e1a0000a	 mov       r0, r10

; 731  : }

  00048	e91baff0	 ldmdb     r11, {r4 - r11, sp, pc}
  0004c		 |$L36909|
  0004c		 |$L37176|

; 673  :     }
; 674  :     
; 675  : 
; 676  :     __try {
; 677  :     psid->dwSize = sizeof(*psid);

  0004c	e3a00010	 mov       r0, #0x10
  00050	e5870000	 str       r0, [r7]

; 678  :     psid->dwFlags = 0;  


  00054	e3a06000	 mov       r6, #0
  00058	e5876004	 str       r6, [r7, #4]

; 679  :     psid->dwManufactureIDOffset = 0;

  0005c	e5876008	 str       r6, [r7, #8]

; 680  :         pDstOffset = (PCHAR)(psid + 1);

  00060	e2875010	 add       r5, r7, #0x10
  00064	e50b506c	 str       r5, [r11, #-0x6C]

⌨️ 快捷键说明

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