📄 system.cod
字号:
; 418 : return TRUE;
0012c eaffffd9 b |$L37026|
00130 |$L37037|
; 411 :
; 412 : case DISK_IOCTL_SETINFO:
; 413 : SetLastError(SetDiskInfo(pDisk, (PDISK_INFO)pInBuf));
00130 e1a01007 mov r1, r7
00134 e1a00005 mov r0, r5
00138 eb000000 bl SetDiskInfo
; 414 : return TRUE;
0013c eaffffd6 b |$L37255|
00140 |$L37035|
; 405 : }
; 406 : return TRUE;
; 407 :
; 408 : case DISK_IOCTL_GETINFO:
; 409 : SetLastError(GetDiskInfo(pDisk, (PDISK_INFO)pInBuf));
00140 e1a01007 mov r1, r7
00144 e1a00005 mov r0, r5
00148 eb000000 bl GetDiskInfo
; 410 : return TRUE;
0014c eaffffd2 b |$L37255|
00150 |$L37040|
; 419 :
; 420 : case DISK_IOCTL_GETNAME:
; 421 : return GetFolderName(pDisk, (LPWSTR)pOutBuf, nOutBufSize, pBytesReturned);
00150 e59d3024 ldr r3, [sp, #0x24]
00154 e1a00005 mov r0, r5
00158 e59d2020 ldr r2, [sp, #0x20]
0015c eb000000 bl GetFolderName
00160 |$L37256|
00160 e1a04000 mov r4, r0
; 452 : }
; 453 : }
00164 e8bd83f0 ldmia sp!, {r4 - r9, pc}
00168 |$L37244|
; 388 :
; 389 : default:
; 390 : SetLastError(ERROR_INVALID_PARAMETER);
; 391 : return FALSE;
; 392 : }
; 393 :
; 394 : switch (dwIoControlCode) {
00168 e1540002 cmp r4, r2
0016c 0a000013 beq |$L37042|
00170 e1540003 cmp r4, r3
00174 0a00000c beq |$L37050|
00178 e1540008 cmp r4, r8
0017c 0a000001 beq |$L37032|
00180 e1540009 cmp r4, r9
; 447 :
; 448 :
; 449 : default:
; 450 : SetLastError(ERROR_INVALID_PARAMETER);
; 451 : return FALSE;
00184 1affffd2 bne |$L37046|
00188 |$L37032|
; 395 : case DISK_IOCTL_READ:
; 396 : case DISK_IOCTL_WRITE:
; 397 : case IOCTL_DISK_READ:
; 398 : case IOCTL_DISK_WRITE:
; 399 : pSG = (PSG_REQ)pInBuf;
; 400 :
; 401 : DoDiskIO(pDisk, dwIoControlCode, pSG);
00188 e1a02007 mov r2, r7
0018c e1a01004 mov r1, r4
00190 e1a00005 mov r0, r5
00194 eb000000 bl DoDiskIO
; 402 : if (pSG->sr_status) {
00198 e597300c ldr r3, [r7, #0xC]
0019c e3530000 cmp r3, #0
001a0 0affffbe beq |$L37034|
; 403 : SetLastError(pSG->sr_status);
001a4 e1a00003 mov r0, r3
; 404 : return FALSE;
001a8 eaffffca b |$L37253|
001ac |$L37050|
; 438 : }
; 439 : }
; 440 :
; 441 :
; 442 : case IOCTL_DISK_GET_STORAGEID:
; 443 : return GetStorageID(pDisk,
; 444 : (PSTORAGE_IDENTIFICATION)pOutBuf,
; 445 : nOutBufSize,
; 446 : pBytesReturned);
001ac e59d3024 ldr r3, [sp, #0x24]
001b0 e1a00005 mov r0, r5
001b4 e59d2020 ldr r2, [sp, #0x20]
001b8 eb000000 bl GetStorageID
001bc eaffffe7 b |$L37256|
001c0 |$L37042|
; 422 :
; 423 : case IOCTL_DISK_DEVICE_INFO:
; 424 : {
; 425 : PSTORAGEDEVICEINFO psdi = (PSTORAGEDEVICEINFO)pInBuf;
; 426 : if (nInBufSize == sizeof(STORAGEDEVICEINFO)) {
001c0 e3560050 cmp r6, #0x50
001c4 1affffc2 bne |$L37046|
; 427 : wcscpy( psdi->szProfile, L"SDMMC");
001c8 e59f1040 ldr r1, [pc, #0x40]
001cc e2870004 add r0, r7, #4
001d0 eb000000 bl wcscpy
; 428 : psdi->dwDeviceClass = STORAGE_DEVICE_CLASS_BLOCK;
; 429 : psdi->dwDeviceType |= STORAGE_DEVICE_TYPE_REMOVABLE_MEDIA;
; 430 : psdi->dwDeviceType |= STORAGE_DEVICE_TYPE_UNKNOWN;
001d4 e5970048 ldr r0, [r7, #0x48]
; 431 : psdi->dwDeviceFlags |= STORAGE_DEVICE_FLAG_READWRITE;
001d8 e597104c ldr r1, [r7, #0x4C]
001dc e3a04001 mov r4, #1
001e0 e380220a orr r2, r0, #0xA, 4
; 432 : if (pBytesReturned)
001e4 e59d0024 ldr r0, [sp, #0x24]
001e8 e3813001 orr r3, r1, #1
001ec e5874044 str r4, [r7, #0x44]
001f0 e5872048 str r2, [r7, #0x48]
001f4 e3500000 cmp r0, #0
001f8 e587304c str r3, [r7, #0x4C]
001fc 0affffb7 beq |$L37029|
; 433 : *pBytesReturned = sizeof(STORAGEDEVICEINFO);
00200 e3a01050 mov r1, #0x50
00204 e5801000 str r1, [r0]
00208 e1a00004 mov r0, r4
; 452 : }
; 453 : }
0020c e8bd83f0 ldmia sp!, {r4 - r9, pc}
00210 |$L37261|
00210 00000000 DCD |??_C@_1M@LBOO@?$AAS?$AAD?$AAM?$AAM?$AAC?$AA?$AA@|
00214 00071c24 DCD 0x71c24
00218 00079c0c DCD 0x79c0c
0021c 00075c08 DCD 0x75c08
00220 00071c04 DCD 0x71c04
00224 |$M37258|
ENDP ; |DSK_IOControl|
EXPORT |DSK_Read|
00000 AREA |.text| { |DSK_Read| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$DSK_Read|, PDATA, SELECTION=5, ASSOC=|.text| { |DSK_Read| } ; comdat associative
|$T37267| DCD |DSK_Read|
DCD 0x40000200
; Function compile flags: /Ogsy
00000 AREA |.text| { |DSK_Read| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |DSK_Read| PROC
; 456 : DWORD DSK_Read(DWORD Handle, LPVOID pBuffer, DWORD dwNumBytes){return 0;}
00000 |$M37265|
00000 e3a00000 mov r0, #0
00004 e1a0f00e mov pc, lr
00008 |$M37266|
ENDP ; |DSK_Read|
EXPORT |DSK_Write|
00000 AREA |.text| { |DSK_Write| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$DSK_Write|, PDATA, SELECTION=5, ASSOC=|.text| { |DSK_Write| } ; comdat associative
|$T37274| DCD |DSK_Write|
DCD 0x40000200
; Function compile flags: /Ogsy
00000 AREA |.text| { |DSK_Write| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |DSK_Write| PROC
; 457 : DWORD DSK_Write(DWORD Handle, LPCVOID pBuffer, DWORD dwNumBytes){return 0;}
00000 |$M37272|
00000 e3a00000 mov r0, #0
00004 e1a0f00e mov pc, lr
00008 |$M37273|
ENDP ; |DSK_Write|
EXPORT |DSK_Seek|
00000 AREA |.text| { |DSK_Seek| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$DSK_Seek|, PDATA, SELECTION=5, ASSOC=|.text| { |DSK_Seek| } ; comdat associative
|$T37281| DCD |DSK_Seek|
DCD 0x40000200
; Function compile flags: /Ogsy
00000 AREA |.text| { |DSK_Seek| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |DSK_Seek| PROC
; 458 : DWORD DSK_Seek(DWORD Handle, long lDistance, DWORD dwMoveMethod){return 0;}
00000 |$M37279|
00000 e3a00000 mov r0, #0
00004 e1a0f00e mov pc, lr
00008 |$M37280|
ENDP ; |DSK_Seek|
EXPORT |DSK_PowerUp|
00000 AREA |.text| { |DSK_PowerUp| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$DSK_PowerUp|, PDATA, SELECTION=5, ASSOC=|.text| { |DSK_PowerUp| } ; comdat associative
|$T37287| DCD |DSK_PowerUp|
DCD 0x40000100
; Function compile flags: /Ogsy
00000 AREA |.text| { |DSK_PowerUp| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |DSK_PowerUp| PROC
; 460 : {
00000 |$M37285|
; 461 :
; 462 : }
00000 e1a0f00e mov pc, lr
00004 |$M37286|
ENDP ; |DSK_PowerUp|
EXPORT |DSK_PowerDown|
00000 AREA |.text| { |DSK_PowerDown| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$DSK_PowerDown|, PDATA, SELECTION=5, ASSOC=|.text| { |DSK_PowerDown| } ; comdat associative
|$T37293| DCD |DSK_PowerDown|
DCD 0x40000100
; Function compile flags: /Ogsy
00000 AREA |.text| { |DSK_PowerDown| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |DSK_PowerDown| PROC
; 464 : {
00000 |$M37291|
; 465 :
; 466 : }
00000 e1a0f00e mov pc, lr
00004 |$M37292|
ENDP ; |DSK_PowerDown|
EXPORT |IsCardInserted|
IMPORT |is_device_changed|
00000 AREA |.text| { |IsCardInserted| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$IsCardInserted|, PDATA, SELECTION=5, ASSOC=|.text| { |IsCardInserted| } ; comdat associative
|$T37302| DCD |IsCardInserted|
DCD 0x40000901
; Function compile flags: /Ogsy
00000 AREA |.text| { |IsCardInserted| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |IsCardInserted| PROC
; 476 : {
00000 e52de004 str lr, [sp, #-4]!
00004 |$M37300|
; 477 : INT16 logical_drive;
; 478 :
; 479 : logical_drive = (0xFFFF & (INT16)pDisk->d_DrvNo);
00004 e5900018 ldr r0, [r0, #0x18]
00008 e1a01800 mov r1, r0, lsl #16
0000c e1a00821 mov r0, r1, lsr #16
; 480 :
; 481 :
; 482 :
; 483 : if (is_device_changed (logical_drive))
00010 eb000000 bl is_device_changed
00014 e3500000 cmp r0, #0
; 484 : return FALSE;
00018 e3a00000 mov r0, #0
; 485 :
; 486 : return TRUE;
0001c 03a00001 moveq r0, #1
; 487 :
; 488 : }
00020 e8bd8000 ldmia sp!, {pc}
00024 |$M37301|
ENDP ; |IsCardInserted|
EXPORT |??_C@_1EM@DAPE@?$AAM?$AAm?$AAc?$AAD?$AAi?$AAs?$AAk?$AA?5?$AAL?$AAo?$AAc?$AAa?$AAl?$AAA?$AAl?$AAl?$AAo?$AAc?$AA?$CI?$AAP@| [ DATA ] ; `string'
IMPORT |RegCloseKey|
IMPORT |InitDisk|
IMPORT |OpenDriverKey|
IMPORT |GetLastError|
IMPORT |wcslen|
00000 AREA |.text| { |mmcinit| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$mmcinit|, PDATA, SELECTION=5, ASSOC=|.text| { |mmcinit| } ; comdat associative
|$T37314| DCD |mmcinit|
DCD 0x40002601
00000 AREA |.rdata| { |??_C@_1EM@DAPE@?$AAM?$AAm?$AAc?$AAD?$AAi?$AAs?$AAk?$AA?5?$AAL?$AAo?$AAc?$AAa?$AAl?$AAA?$AAl?$AAl?$AAo?$AAc?$AA?$CI?$AAP@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1EM@DAPE@?$AAM?$AAm?$AAc?$AAD?$AAi?$AAs?$AAk?$AA?5?$AAL?$AAo?$AAc?$AAa?$AAl?$AAA?$AAl?$AAl?$AAo?$AAc?$AA?$CI?$AAP@| DCB "M"
DCB 0x0, "m", 0x0, "c", 0x0, "D", 0x0, "i", 0x0, "s", 0x0, "k"
DCB 0x0, " ", 0x0, "L", 0x0, "o", 0x0, "c", 0x0, "a", 0x0, "l"
DCB 0x0, "A", 0x0, "l", 0x0, "l", 0x0, "o", 0x0, "c", 0x0, "("
DCB 0x0, "P", 0x0, "D", 0x0, "I", 0x0, "S", 0x0, "K", 0x0, ")"
DCB 0x0, " ", 0x0, "f", 0x0, "a", 0x0, "i", 0x0, "l", 0x0, "e"
DCB 0x0, "d", 0x0, " ", 0x0, "%", 0x0, "d", 0x0, 0xd, 0x0, 0xa
DCB 0x0, 0x0, 0x0 ; `string'
; Function compile flags: /Ogsy
00000 AREA |.text| { |mmcinit| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |mmcinit| PROC
; 505 : {
00000 e92d4030 stmdb sp!, {r4, r5, lr}
00004 |$M37312|
00004 e1a04000 mov r4, r0
; 506 : DWORD status;
; 507 : PDISK pDisk;
; 508 : HKEY hKey;
; 509 :
; 510 : pDisk = CreateDiskObject();
00008 eb000000 bl CreateDiskObject
0000c e1b05000 movs r5, r0
; 511 : if (pDisk == NULL) {
00010 1a000004 bne |$L37098|
; 512 : RETAILMSG(1, (TEXT("MmcDisk LocalAlloc(PDISK) failed %d\r\n"), GetLastError()));
00014 eb000000 bl GetLastError
00018 e1a01000 mov r1, r0
0001c e59f0070 ldr r0, [pc, #0x70]
00020 eb000000 bl NKDbgPrintfW
; 513 : return NULL;
00024 ea000017 b |$L37311|
00028 |$L37098|
; 514 : }
; 515 : if (pDisk->d_ActivePath = LocalAlloc(LPTR, wcslen(ActiveKey)*sizeof(WCHAR)+sizeof(WCHAR))) {
00028 e1a00004 mov r0, r4
0002c eb000000 bl wcslen
00030 e2801001 add r1, r0, #1
00034 e1a01081 mov r1, r1, lsl #1
00038 e3a00040 mov r0, #0x40
0003c eb000000 bl LocalAlloc
00040 e3500000 cmp r0, #0
00044 e5850044 str r0, [r5, #0x44]
; 516 : wcscpy(pDisk->d_ActivePath, ActiveKey);
00048 11a01004 movne r1, r4
0004c 1b000000 blne wcscpy
; 517 : }
; 518 :
; 519 :
; 520 : hKey = OpenDriverKey( ActiveKey);
00050 e1a00004 mov r0, r4
00054 eb000000 bl OpenDriverKey
; 521 : RegCloseKey( hKey);
00058 eb000000 bl RegCloseKey
; 522 :
; 523 :
; 524 :
; 525 : status = InitDisk(pDisk);
0005c e1a00005 mov r0, r5
00060 eb000000 bl InitDisk
; 526 : if (status) {
00064 e3500000 cmp r0, #0
; 527 : goto ci_fail;
; 528 : }
; 529 :
; 530 :
; 531 :
; 532 : if (pDisk->d_DiskCardState == STATE_INITING) {
00068 0595001c ldreq r0, [r5, #0x1C]
0006c 03500001 cmpeq r0, #1
; 533 : pDisk->d_DiskCardState = STATE_CLOSED;
00070 03a00002 moveq r0, #2
00074 0585001c streq r0, [r5, #0x1C]
00078 01a00005 moveq r0, r5
; 544 : }
0007c 08bd8030 ldmeqia sp!, {r4, r5, pc}
00080 |$ci_fail$37105|
; 534 : return pDisk;
; 535 : }
; 536 :
; 537 :
; 538 : ci_fail:
; 539 :
; 540 :
; 541 :
; 542 : CloseDisk(pDisk);
00080 e1a00005 mov r0, r5
00084 eb000000 bl CloseDisk
00088 |$L37311|
; 543 : return NULL;
00088 e3a05000 mov r5, #0
; 513 : return NULL;
0008c e1a00005 mov r0, r5
; 544 : }
00090 e8bd8030 ldmia sp!, {r4, r5, pc}
00094 |$L37316|
00094 00000000 DCD |??_C@_1EM@DAPE@?$AAM?$AAm?$AAc?$AAD?$AAi?$AAs?$AAk?$AA?5?$AAL?$AAo?$AAc?$AAa?$AAl?$AAA?$AAl?$AAl?$AAo?$AAc?$AA?$CI?$AAP@|
00098 |$M37313|
ENDP ; |mmcinit|
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -