📄 diskio.cod
字号:
; 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 + -