📄 diskio.cod
字号:
; 473 : p++;
00040 e2833001 add r3, r3, #1
00044 e3520000 cmp r2, #0
00048 8afffff1 bhi |$L41341|
0004c |$L41342|
; 474 : len--;
; 475 : }
; 476 : *pT = 0;
0004c e3a00000 mov r0, #0
00050 e1c400b0 strh r0, [r4]
; 477 : }
00054 e8bd4010 ldmia sp!, {r4, lr}
00058 e12fff1e bx lr
0005c |$M41659|
ENDP ; |FormatSBCS|
EXPORT |GetDiskInfo|
EXPORT |??_C@_1CI@NGPL@?$AAE?$AAn?$AAt?$AAe?$AAr?$AA?5?$AAG?$AAe?$AAt?$AAD?$AAs?$AAi?$AAk?$AAI?$AAn?$AAf?$AAo?$AA?$AN?$AA?6?$AA?$AA@| [ DATA ] ; `string'
IMPORT |memcpy|
00000 AREA |.text| { |GetDiskInfo| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$GetDiskInfo|, PDATA, SELECTION=5, ASSOC=|.text| { |GetDiskInfo| } ; comdat associative
|$T41670| DCD |GetDiskInfo|
DCD 0x40001101
00000 AREA |.rdata| { |??_C@_1CI@NGPL@?$AAE?$AAn?$AAt?$AAe?$AAr?$AA?5?$AAG?$AAe?$AAt?$AAD?$AAs?$AAi?$AAk?$AAI?$AAn?$AAf?$AAo?$AA?$AN?$AA?6?$AA?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1CI@NGPL@?$AAE?$AAn?$AAt?$AAe?$AAr?$AA?5?$AAG?$AAe?$AAt?$AAD?$AAs?$AAi?$AAk?$AAI?$AAn?$AAf?$AAo?$AA?$AN?$AA?6?$AA?$AA@| DCB "E"
DCB 0x0, "n", 0x0, "t", 0x0, "e", 0x0, "r", 0x0, " ", 0x0, "G"
DCB 0x0, "e", 0x0, "t", 0x0, "D", 0x0, "s", 0x0, "i", 0x0, "k"
DCB 0x0, "I", 0x0, "n", 0x0, "f", 0x0, "o", 0x0, 0xd, 0x0, 0xa
DCB 0x0, 0x0, 0x0 ; `string'
; Function compile flags: /Ogsy
00000 AREA |.text| { |GetDiskInfo| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |GetDiskInfo| PROC
; 489 : {
00000 e92d4030 stmdb sp!, {r4, r5, lr}
00004 |$M41668|
00004 e1a04000 mov r4, r0
00008 e1a05001 mov r5, r1
; 490 : RETAILMSG(1, (TEXT("Enter GetDsikInfo\r\n")));
0000c e59f002c ldr r0, [pc, #0x2C]
00010 eb000000 bl NKDbgPrintfW
; 491 : *pInfo = pDisk->d_DiskInfo;
00014 e2841020 add r1, r4, #0x20
00018 e3a02018 mov r2, #0x18
0001c e1a00005 mov r0, r5
00020 eb000000 bl memcpy
; 492 : pInfo->di_flags |= DISK_INFO_FLAG_PAGEABLE;
00024 e5953014 ldr r3, [r5, #0x14]
00028 e3c3000c bic r0, r3, #0xC
0002c e3801008 orr r1, r0, #8
; 493 : pInfo->di_flags &= ~DISK_INFO_FLAG_UNFORMATTED;
00030 e5851014 str r1, [r5, #0x14]
; 494 :
; 495 : return ERROR_SUCCESS;
00034 e3a00000 mov r0, #0
; 496 : }
00038 e8bd4030 ldmia sp!, {r4, r5, lr}
0003c e12fff1e bx lr
00040 |$L41672|
00040 00000000 DCD |??_C@_1CI@NGPL@?$AAE?$AAn?$AAt?$AAe?$AAr?$AA?5?$AAG?$AAe?$AAt?$AAD?$AAs?$AAi?$AAk?$AAI?$AAn?$AAf?$AAo?$AA?$AN?$AA?6?$AA?$AA@|
00044 |$M41669|
ENDP ; |GetDiskInfo|
EXPORT |SetDiskInfo|
IMPORT |LocalAlloc|
00000 AREA |.text| { |SetDiskInfo| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$SetDiskInfo|, PDATA, SELECTION=5, ASSOC=|.text| { |SetDiskInfo| } ; comdat associative
|$T41682| DCD |SetDiskInfo|
DCD 0x40001a01
; Function compile flags: /Ogsy
00000 AREA |.text| { |SetDiskInfo| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |SetDiskInfo| PROC
; 507 : {
00000 e92d40f0 stmdb sp!, {r4 - r7, lr}
00004 |$M41680|
00004 e1a06000 mov r6, r0
00008 e1a05001 mov r5, r1
; 508 : DWORD sectsize;
; 509 :
; 510 :
; 511 : sectsize = pDisk->d_DiskInfo.di_bytes_per_sect;
0000c e5964024 ldr r4, [r6, #0x24]
; 512 : pDisk->d_DiskInfo = *pInfo;
00010 e2860020 add r0, r6, #0x20
00014 e3a02018 mov r2, #0x18
00018 eb000000 bl memcpy
; 513 :
; 514 :
; 515 :
; 516 :
; 517 : if (pInfo->di_bytes_per_sect != sectsize) {
0001c e5953004 ldr r3, [r5, #4]
00020 e3a07000 mov r7, #0
00024 e1530004 cmp r3, r4
00028 0a000004 beq |$L41361|
; 518 : if (pDisk->d_AlignBuf != NULL) {
0002c e5960040 ldr r0, [r6, #0x40]
00030 e3500000 cmp r0, #0
00034 0a000004 beq |$L41675|
; 519 : LocalFree(pDisk->d_AlignBuf);
00038 eb000000 bl LocalFree
; 520 : pDisk->d_AlignBuf = NULL;
0003c e5867040 str r7, [r6, #0x40]
00040 |$L41361|
; 521 : }
; 522 : }
; 523 : if (pDisk->d_AlignBuf == NULL) {
00040 e5960040 ldr r0, [r6, #0x40]
00044 e3500000 cmp r0, #0
00048 1a000003 bne |$L41364|
0004c |$L41675|
; 524 : pDisk->d_AlignBuf = (PUSHORT)LocalAlloc(LPTR,
; 525 : pInfo->di_bytes_per_sect);
0004c e5951004 ldr r1, [r5, #4]
00050 e3a00040 mov r0, #0x40
00054 eb000000 bl LocalAlloc
00058 e5860040 str r0, [r6, #0x40]
0005c |$L41364|
; 526 : }
; 527 : return ERROR_SUCCESS;
0005c e1a00007 mov r0, r7
; 528 : }
00060 e8bd40f0 ldmia sp!, {r4 - r7, lr}
00064 e12fff1e bx lr
00068 |$M41681|
ENDP ; |SetDiskInfo|
EXPORT |DumpRegKey|
IMPORT |RegEnumValueW|
00000 AREA |.text| { |DumpRegKey| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$DumpRegKey|, PDATA, SELECTION=5, ASSOC=|.text| { |DumpRegKey| } ; comdat associative
|$T41693| DCD |DumpRegKey|
DCD 0x40002a02
; Function compile flags: /Ogsy
00000 AREA |.text| { |DumpRegKey| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |DumpRegKey| PROC
; 532 : {
00000 e92d41f0 stmdb sp!, {r4 - r8, lr}
00004 e24ddfca sub sp, sp, #0xCA, 30
00008 |$M41691|
00008 e1a05002 mov r5, r2
; 533 : DWORD dwIndex=0;
; 534 : WCHAR szValueName[MAX_PATH];
; 535 : DWORD dwValueNameSize = MAX_PATH;
; 536 : BYTE pValueData[256];
; 537 : DWORD dwType;
; 538 : DWORD dwValueDataSize = sizeof(pValueData);
; 539 : DEBUGMSG( dwZone, (TEXT("Dumping registry for key %s \r\n"), szKey));
; 540 : while(ERROR_SUCCESS == RegEnumValue( hKey, dwIndex, szValueName, &dwValueNameSize, NULL, &dwType, pValueData, &dwValueDataSize)) {
0000c e28d0010 add r0, sp, #0x10
00010 e58d000c str r0, [sp, #0xC]
00014 e28d1020 add r1, sp, #0x20
00018 e28d0018 add r0, sp, #0x18
0001c e58d1008 str r1, [sp, #8]
00020 e3a08000 mov r8, #0
00024 e58d0004 str r0, [sp, #4]
00028 e3a07f41 mov r7, #0x41, 30
0002c e58d8000 str r8, [sp]
00030 e3a06c01 mov r6, #1, 24
00034 e58d7014 str r7, [sp, #0x14]
00038 e28d3014 add r3, sp, #0x14
0003c e58d6010 str r6, [sp, #0x10]
00040 e28d2e12 add r2, sp, #0x12, 28
00044 e3a01000 mov r1, #0
00048 e1a00005 mov r0, r5
0004c e1a04008 mov r4, r8
00050 eb000000 bl RegEnumValueW
00054 ea00000e b |$L41690|
00058 |$L41383|
00058 e28d0010 add r0, sp, #0x10
; 541 : if (REG_SZ == dwType) {
; 542 : DEBUGMSG( dwZone, (TEXT("\t\t%s = %s\r\n"), szValueName, (LPWSTR)pValueData));
; 543 : } else
; 544 : if (REG_DWORD == dwType) {
; 545 : DEBUGMSG( dwZone, (TEXT("\t\t%s = %08X\r\n"), szValueName, *(PDWORD)pValueData));
; 546 : }
; 547 : dwIndex++;
; 548 : 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
; 549 : 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 |$L41690|
; 533 : DWORD dwIndex=0;
; 534 : WCHAR szValueName[MAX_PATH];
; 535 : DWORD dwValueNameSize = MAX_PATH;
; 536 : BYTE pValueData[256];
; 537 : DWORD dwType;
; 538 : DWORD dwValueDataSize = sizeof(pValueData);
; 539 : DEBUGMSG( dwZone, (TEXT("Dumping registry for key %s \r\n"), szKey));
; 540 : while(ERROR_SUCCESS == RegEnumValue( hKey, dwIndex, szValueName, &dwValueNameSize, NULL, &dwType, pValueData, &dwValueDataSize)) {
00094 e3500000 cmp r0, #0
00098 0affffee beq |$L41383|
; 550 : }
; 551 : }
0009c e28ddfca add sp, sp, #0xCA, 30
000a0 e8bd41f0 ldmia sp!, {r4 - r8, lr}
000a4 e12fff1e bx lr
000a8 |$M41692|
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
|$T41701| 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
; 567 : {
00000 e92d4010 stmdb sp!, {r4, lr}
00004 e24ddf86 sub sp, sp, #0x86, 30
00008 |$M41699|
; 568 : TCHAR DevKey[256];
; 569 : HKEY hDevKey;
; 570 : HKEY hActive;
; 571 : DWORD ValType;
; 572 : DWORD ValLen;
; 573 : DWORD status;
; 574 :
; 575 :
; 576 :
; 577 :
; 578 : status = RegOpenKeyEx(
; 579 : HKEY_LOCAL_MACHINE,
; 580 : ActiveKey,
; 581 : 0,
; 582 : 0,
; 583 : &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
; 584 :
; 585 :
; 586 : if (status) {
00024 e3500000 cmp r0, #0
; 587 : DEBUGMSG(ZONE_INIT|ZONE_ERROR,
; 588 : (TEXT("MMCDISK:OpenDriverKey RegOpenKeyEx(HLM\\%s) returned %d!!!\r\n"),
; 589 : ActiveKey, status));
; 590 : return NULL;
00028 13a00000 movne r0, #0
0002c 1a00001a bne |$L41392|
; 591 : }
; 592 : #ifdef DEBUG
; 593 :
; 594 : #endif
; 595 :
; 596 : hDevKey = NULL;
; 597 :
; 598 : ValLen = sizeof(DevKey);
00030 e3a00c02 mov r0, #2, 24
00034 e58d0010 str r0, [sp, #0x10]
; 599 : status = RegQueryValueEx(
; 600 : hActive,
; 601 : DEVLOAD_DEVKEY_VALNAME,
; 602 : NULL,
; 603 : &ValType,
; 604 : (PUCHAR)DevKey,
; 605 : &ValLen);
00038 e28d1010 add r1, sp, #0x10
0003c e28d0018 add r0, sp, #0x18
00040 e58d1004 str r1, [sp, #4]
00044 e58d0000 str r0, [sp]
00048 e3a04000 mov r4, #0
0004c e59f1054 ldr r1, [pc, #0x54]
00050 e28d3014 add r3, sp, #0x14
00054 e59d000c ldr r0, [sp, #0xC]
00058 e3a02000 mov r2, #0
0005c e58d4008 str r4, [sp, #8]
00060 eb000000 bl RegQueryValueExW
; 606 : if (status != ERROR_SUCCESS) {
00064 e3500000 cmp r0, #0
00068 1a000008 bne |$odk_fail$41410|
; 607 : DEBUGMSG(ZONE_INIT|ZONE_ERROR,
; 608 : (TEXT("MMCDISK:OpenDriverKey - RegQueryValueEx(%s) returned %d\r\n"),
; 609 : DEVLOAD_DEVKEY_VALNAME, status));
; 610 : goto odk_fail;
; 611 : }
; 612 :
; 613 :
; 614 :
; 615 :
; 616 : status = RegOpenKeyEx(
; 617 : HKEY_LOCAL_MACHINE,
; 618 : DevKey,
; 619 : 0,
; 620 : 0,
; 621 : &hDevKey);
0006c e28d0008 add r0, sp, #8
00070 e58d0000 str r0, [sp]
00074 e3a03000 mov r3, #0
00078 e3a02000 mov r2, #0
0007c e28d1018 add r1, sp, #0x18
00080 e3a0010a mov r0, #0xA, 2
00084 eb000000 bl RegOpenKeyExW
; 622 : if (status) {
00088 e3500000 cmp r0, #0
; 623 : hDevKey = NULL;
0008c 158d4008 strne r4, [sp, #8]
00090 |$odk_fail$41410|
; 624 : DEBUGMSG(ZONE_INIT|ZONE_ERROR,
; 625 : (TEXT("MMCDISK:OpenDriverKey RegOpenKeyEx(HLM\\%s) returned %d!!!\r\n"),
; 626 : DevKey, status));
; 627 : }
; 628 :
; 629 :
; 630 : odk_fail:
; 631 : RegCloseKey(hActive);
00090 e59d000c ldr r0, [sp, #0xC]
00094 eb000000 bl RegCloseKey
; 632 : return hDevKey;
00098 e59d0008 ldr r0, [sp, #8]
0009c |$L41392|
; 633 : }
0009c e28ddf86 add sp, sp, #0x86, 30
000a0 e8bd4010 ldmia sp!, {r4, lr}
000a4 e12fff1e bx lr
000a8 |$L41703|
000a8 00000000 DCD |??_C@_17KLID@?$AAK?$AAe?$AAy?$AA?$AA@|
000ac |$M41700|
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
|$T41715| DCD |GetFolderName|
DCD 0x40002602
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -