📄 system.cod
字号:
DCB 0x0, "I", 0x0, "n", 0x0, "i", 0x0, "t", 0x0, 0xd, 0x0, 0xa
DCB 0x0, 0x0, 0x0 ; `string'
; Function compile flags: /Ogsy
00000 AREA |.text| { |DSK_Init| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |DSK_Init| PROC
; 224 : {
00000 e92d4010 stmdb sp!, {r4, lr}
00004 |$M37211|
00004 e1a04000 mov r4, r0
; 225 :
; 226 :
; 227 :
; 228 :
; 229 :
; 230 :
; 231 :
; 232 : RETAILMSG(1, (TEXT("MmcDISK: DSK_Init\r\n")));
00008 e59f000c ldr r0, [pc, #0xC]
0000c eb000000 bl NKDbgPrintfW
; 233 :
; 234 : return (DWORD)mmcinit((LPTSTR)dwContext);
00010 e1a00004 mov r0, r4
00014 e8bd4010 ldmia sp!, {r4, lr}
00018 ea000000 b mmcinit
0001c |$L37215|
0001c 00000000 DCD |??_C@_1CI@BHOK@?$AAM?$AAm?$AAc?$AAD?$AAI?$AAS?$AAK?$AA?3?$AA?5?$AAD?$AAS?$AAK?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$AN?$AA?6?$AA?$AA@|
00020 |$M37212|
ENDP ; |DSK_Init|
EXPORT |DSK_Close|
00000 AREA |.text| { |DSK_Close| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$DSK_Close|, PDATA, SELECTION=5, ASSOC=|.text| { |DSK_Close| } ; comdat associative
|$T37222| DCD |DSK_Close|
DCD 0x40001501
; Function compile flags: /Ogsy
00000 AREA |.text| { |DSK_Close| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |DSK_Close| PROC
; 248 : {
00000 e92d4030 stmdb sp!, {r4, r5, lr}
00004 |$M37220|
00004 e1a05000 mov r5, r0
; 249 : bool bClose = TRUE;
; 250 : PDISK pDisk = (PDISK)Handle;
; 251 :
; 252 : DEBUGMSG(ZONE_IO, (TEXT("MmcDISK: DSK_Close\r\n")));
; 253 :
; 254 : if (!IsValidDisk(pDisk)) {
00008 eb000000 bl IsValidDisk
0000c e3500000 cmp r0, #0
; 255 : return FALSE;
00010 03a00000 moveq r0, #0
; 269 : }
00014 08bd8030 ldmeqia sp!, {r4, r5, pc}
; 256 : }
; 257 :
; 258 : if (pDisk->d_DiskCardState == STATE_OPENED) {
00018 e595001c ldr r0, [r5, #0x1C]
0001c e3500003 cmp r0, #3
00020 1a000009 bne |$L36970|
; 259 : EnterCriticalSection(&(pDisk->d_DiskCardCrit));
00024 e2854004 add r4, r5, #4
00028 e1a00004 mov r0, r4
0002c eb000000 bl EnterCriticalSection
; 260 : pDisk->d_OpenCount--;
00030 e595303c ldr r3, [r5, #0x3C]
00034 e2530001 subs r0, r3, #1
00038 e585003c str r0, [r5, #0x3C]
; 261 : if (pDisk->d_OpenCount == 0) {
; 262 : pDisk->d_DiskCardState = STATE_CLOSED;
0003c 03a00002 moveq r0, #2
00040 0585001c streq r0, [r5, #0x1C]
; 263 : } else {
; 264 : bClose = FALSE;
; 265 : }
; 266 : LeaveCriticalSection(&(pDisk->d_DiskCardCrit));
00044 e1a00004 mov r0, r4
00048 eb000000 bl LeaveCriticalSection
0004c |$L36970|
; 267 : }
; 268 : return TRUE;
0004c e3a00001 mov r0, #1
; 269 : }
00050 e8bd8030 ldmia sp!, {r4, r5, pc}
00054 |$M37221|
ENDP ; |DSK_Close|
EXPORT |DSK_Deinit|
IMPORT |CloseDisk|
00000 AREA |.text| { |DSK_Deinit| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$DSK_Deinit|, PDATA, SELECTION=5, ASSOC=|.text| { |DSK_Deinit| } ; comdat associative
|$T37230| DCD |DSK_Deinit|
DCD 0x40000701
; Function compile flags: /Ogsy
00000 AREA |.text| { |DSK_Deinit| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |DSK_Deinit| PROC
; 280 : {
00000 e92d4010 stmdb sp!, {r4, lr}
00004 |$M37228|
00004 e1a04000 mov r4, r0
; 281 : PDISK pDisk = (PDISK)dwContext;
; 282 :
; 283 :
; 284 : DSK_Close(dwContext);
00008 eb000000 bl DSK_Close
; 285 : CloseDisk(pDisk);
0000c e1a00004 mov r0, r4
00010 eb000000 bl CloseDisk
; 286 : return TRUE;
00014 e3a00001 mov r0, #1
; 287 : }
00018 e8bd8010 ldmia sp!, {r4, pc}
0001c |$M37229|
ENDP ; |DSK_Deinit|
EXPORT |DSK_Open|
IMPORT |SetLastError|
00000 AREA |.text| { |DSK_Open| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$DSK_Open|, PDATA, SELECTION=5, ASSOC=|.text| { |DSK_Open| } ; comdat associative
|$T37239| DCD |DSK_Open|
DCD 0x40001d01
; Function compile flags: /Ogsy
00000 AREA |.text| { |DSK_Open| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |DSK_Open| PROC
; 298 : {
00000 e92d4030 stmdb sp!, {r4, r5, lr}
00004 |$M37237|
00004 e1a05000 mov r5, r0
; 299 : PDISK pDisk = (PDISK)dwData;
; 300 : DWORD rett = 0;
; 301 :
; 302 :
; 303 :
; 304 : if (IsValidDisk(pDisk) == FALSE) {
00008 eb000000 bl IsValidDisk
0000c e3500000 cmp r0, #0
; 305 : DEBUGMSG(ZONE_IO, (TEXT("MmcDisk DSK_Open - Passed invalid disk handle\r\n")));
; 306 : return rett;
00010 0a000006 beq |$L37236|
; 307 : }
; 308 :
; 309 : if ((pDisk->d_DiskCardState != STATE_CLOSED) &&
; 310 : (pDisk->d_DiskCardState != STATE_OPENED)) {
00014 e595001c ldr r0, [r5, #0x1C]
00018 e3500002 cmp r0, #2
0001c 0a000006 beq |$L36992|
00020 e3500003 cmp r0, #3
00024 0a000004 beq |$L36992|
; 311 : SetLastError(GetDiskStateError(pDisk->d_DiskCardState));
00028 eb000000 bl GetDiskStateError
0002c eb000000 bl SetLastError
00030 |$L37236|
; 312 : return rett;
00030 e3a05000 mov r5, #0
; 305 : DEBUGMSG(ZONE_IO, (TEXT("MmcDisk DSK_Open - Passed invalid disk handle\r\n")));
; 306 : return rett;
00034 e1a00005 mov r0, r5
; 322 :
; 323 : return rett;
; 324 : }
00038 e8bd8030 ldmia sp!, {r4, r5, pc}
0003c |$L36992|
; 313 : }
; 314 :
; 315 : EnterCriticalSection(&(pDisk->d_DiskCardCrit));
0003c e2854004 add r4, r5, #4
00040 e1a00004 mov r0, r4
00044 eb000000 bl EnterCriticalSection
; 316 : if (pDisk->d_DiskCardState == STATE_CLOSED) {
00048 e595301c ldr r3, [r5, #0x1C]
0004c e3530002 cmp r3, #2
; 317 : pDisk->d_DiskCardState = STATE_OPENED;
00050 03a00003 moveq r0, #3
00054 0585001c streq r0, [r5, #0x1C]
; 318 : }
; 319 : rett = (DWORD)pDisk;
; 320 : pDisk->d_OpenCount++;
00058 e595003c ldr r0, [r5, #0x3C]
0005c e2801001 add r1, r0, #1
; 321 : LeaveCriticalSection(&(pDisk->d_DiskCardCrit));
00060 e1a00004 mov r0, r4
00064 e585103c str r1, [r5, #0x3C]
00068 eb000000 bl LeaveCriticalSection
0006c e1a00005 mov r0, r5
; 322 :
; 323 : return rett;
; 324 : }
00070 e8bd8030 ldmia sp!, {r4, r5, pc}
00074 |$M37238|
ENDP ; |DSK_Open|
EXPORT |DSK_IOControl|
EXPORT |??_C@_1M@LBOO@?$AAS?$AAD?$AAM?$AAM?$AAC?$AA?$AA@| [ DATA ] ; `string'
IMPORT |DoDiskIO|
IMPORT |GetDiskInfo|
IMPORT |SetDiskInfo|
IMPORT |GetFolderName|
IMPORT |GetStorageID|
IMPORT |wcscpy|
00000 AREA |.text| { |DSK_IOControl| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$DSK_IOControl|, PDATA, SELECTION=5, ASSOC=|.text| { |DSK_IOControl| } ; comdat associative
|$T37259| DCD |DSK_IOControl|
DCD 0x40008901
00000 AREA |.rdata| { |??_C@_1M@LBOO@?$AAS?$AAD?$AAM?$AAM?$AAC?$AA?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1M@LBOO@?$AAS?$AAD?$AAM?$AAM?$AAC?$AA?$AA@| DCB "S", 0x0, "D", 0x0
DCB "M", 0x0, "M", 0x0, "C", 0x0, 0x0, 0x0 ; `string'
; Function compile flags: /Ogsy
00000 AREA |.text| { |DSK_IOControl| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |DSK_IOControl| PROC
; 341 : {
00000 e92d43f0 stmdb sp!, {r4 - r9, lr}
00004 |$M37257|
00004 e1a05000 mov r5, r0
00008 e1a04001 mov r4, r1
0000c e1a07002 mov r7, r2
00010 e1a06003 mov r6, r3
; 342 : PDISK pDisk = (PDISK)Handle;
; 343 : PSG_REQ pSG;
; 344 :
; 345 :
; 346 : if (IsValidDisk(pDisk) == FALSE) {
00014 eb000000 bl IsValidDisk
00018 e3500000 cmp r0, #0
; 347 : SetLastError(ERROR_INVALID_HANDLE);
0001c 03a00006 moveq r0, #6
00020 0a00002c beq |$L37253|
; 349 : }
; 350 :
; 351 : if (pDisk->d_DiskCardState != STATE_OPENED) {
00024 e595001c ldr r0, [r5, #0x1C]
00028 e3500003 cmp r0, #3
0002c 0a000001 beq |$L37015|
; 352 : SetLastError(GetDiskStateError(pDisk->d_DiskCardState));
00030 eb000000 bl GetDiskStateError
; 353 : return FALSE;
00034 ea000027 b |$L37253|
00038 |$L37015|
; 354 : }
; 355 :
; 356 :
; 357 :
; 358 :
; 359 : switch (dwIoControlCode) {
00038 e59f01e0 ldr r0, [pc, #0x1E0]
0003c e3a02a71 mov r2, #0x71, 20
00040 e59d101c ldr r1, [sp, #0x1C]
00044 e3822b02 orr r2, r2, #2, 22
00048 e59f81cc ldr r8, [pc, #0x1CC]
0004c e1540000 cmp r4, r0
00050 e59f91c0 ldr r9, [pc, #0x1C0]
00054 e59f31b8 ldr r3, [pc, #0x1B8]
00058 8a000013 bhi |$L37243|
0005c 0a000024 beq |$L37020|
00060 e3540000 cmp r4, #0
00064 9a00001a bls |$L37046|
00068 e3540005 cmp r4, #5
0006c 9a000020 bls |$L37020|
00070 e3540006 cmp r4, #6
00074 0a000007 beq |$L37026|
00078 e3540009 cmp r4, #9
0007c 0a000019 beq |$L37023|
00080 e1540002 cmp r4, r2
00084 0a00001a beq |$L37020|
00088 e3a00a71 mov r0, #0x71, 20
0008c e3800b03 orr r0, r0, #3, 22
00090 e1540000 cmp r4, r0
00094 ea00000d b |$L37254|
00098 |$L37026|
; 383 : }
; 384 : break;
; 385 : case DISK_IOCTL_FORMAT_MEDIA:
; 386 : SetLastError(ERROR_SUCCESS);
00098 e3a00000 mov r0, #0
0009c |$L37255|
0009c eb000000 bl SetLastError
000a0 |$L37034|
; 387 : return TRUE;
000a0 e3a04001 mov r4, #1
; 348 : return FALSE;
000a4 e1a00004 mov r0, r4
; 452 : }
; 453 : }
000a8 e8bd83f0 ldmia sp!, {r4 - r9, pc}
000ac |$L37243|
; 354 : }
; 355 :
; 356 :
; 357 :
; 358 :
; 359 : switch (dwIoControlCode) {
000ac e3a00a71 mov r0, #0x71, 20
000b0 e3800ec1 orr r0, r0, #0xC1, 28
000b4 e1540000 cmp r4, r0
000b8 0a00000d beq |$L37020|
000bc e1540003 cmp r4, r3
000c0 0a000008 beq |$L37023|
000c4 e1540008 cmp r4, r8
000c8 0a000009 beq |$L37020|
000cc e1540009 cmp r4, r9
000d0 |$L37254|
000d0 0a000007 beq |$L37020|
000d4 |$L37046|
; 434 : return TRUE;
; 435 : } else {
; 436 : SetLastError( ERROR_INVALID_PARAMETER);
000d4 e3a00057 mov r0, #0x57
000d8 |$L37253|
000d8 eb000000 bl SetLastError
; 437 : return FALSE;
000dc e3a04000 mov r4, #0
000e0 |$L37029|
; 348 : return FALSE;
000e0 e1a00004 mov r0, r4
; 452 : }
; 453 : }
000e4 e8bd83f0 ldmia sp!, {r4 - r9, pc}
000e8 |$L37023|
; 374 : }
; 375 : break;
; 376 :
; 377 : case DISK_IOCTL_GETNAME:
; 378 :
; 379 : case IOCTL_DISK_GET_STORAGEID:
; 380 : if (pOutBuf == NULL) {
000e8 e3510000 cmp r1, #0
000ec 1a000002 bne |$L37022|
; 381 : SetLastError(ERROR_INVALID_PARAMETER);
; 382 : return FALSE;
000f0 eafffff7 b |$L37046|
000f4 |$L37020|
; 360 : case DISK_IOCTL_READ:
; 361 : case DISK_IOCTL_WRITE:
; 362 : case DISK_IOCTL_GETINFO:
; 363 : case DISK_IOCTL_SETINFO:
; 364 : case DISK_IOCTL_INITIALIZED:
; 365 : case IOCTL_DISK_READ:
; 366 : case IOCTL_DISK_WRITE:
; 367 : case IOCTL_DISK_GETINFO:
; 368 : case IOCTL_DISK_SETINFO:
; 369 : case IOCTL_DISK_INITIALIZED:
; 370 : case IOCTL_DISK_DEVICE_INFO:
; 371 : if (pInBuf == NULL) {
000f4 e3570000 cmp r7, #0
; 372 : SetLastError(ERROR_INVALID_PARAMETER);
; 373 : return FALSE;
000f8 0afffff5 beq |$L37046|
000fc |$L37022|
; 388 :
; 389 : default:
; 390 : SetLastError(ERROR_INVALID_PARAMETER);
; 391 : return FALSE;
; 392 : }
; 393 :
; 394 : switch (dwIoControlCode) {
000fc e3540009 cmp r4, #9
00100 8a000018 bhi |$L37244|
00104 0a000011 beq |$L37040|
00108 e3540001 cmp r4, #1
0010c 0a00000b beq |$L37035|
00110 9affffef bls |$L37046|
00114 e3540003 cmp r4, #3
00118 9a00001a bls |$L37032|
0011c e3540005 cmp r4, #5
00120 0a000002 beq |$L37037|
00124 e3540006 cmp r4, #6
00128 1affffe9 bne |$L37046|
; 415 :
; 416 : case DISK_IOCTL_FORMAT_MEDIA:
; 417 : SetLastError(ERROR_SUCCESS);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -