📄 atapipm.cod
字号:
; 187 : BOOL fOk = TRUE;
003e0 e3a03001 mov r3, #1
003e4 e58d3000 str r3, [sp]
; 188 : PREFAST_DEBUGCHK(m_pfnDevicePowerNotify != NULL);
003e8 e59d3028 ldr r3, [sp, #0x28]
003ec e28330b0 add r3, r3, #0xB0
003f0 e5933000 ldr r3, [r3]
003f4 e3530000 cmp r3, #0
003f8 0a000002 beq |$L32479|
003fc e3a03001 mov r3, #1
00400 e58d300c str r3, [sp, #0xC]
00404 ea000007 b |$L32480|
00408 |$L32479|
00408 e3a030bc mov r3, #0xBC
0040c e59f21f8 ldr r2, [pc, #0x1F8]
00410 e59f11f0 ldr r1, [pc, #0x1F0]
00414 e59f01e8 ldr r0, [pc, #0x1E8]
00418 eb000000 bl NKDbgPrintfW
0041c e6000010 DCD 0xe6000010
00420 e3a03000 mov r3, #0
00424 e58d300c str r3, [sp, #0xC]
00428 |$L32480|
; 189 :
; 190 : TakeCS();
00428 e59d3028 ldr r3, [sp, #0x28]
0042c e5933000 ldr r3, [r3]
00430 e2833024 add r3, r3, #0x24
00434 e59d0028 ldr r0, [sp, #0x28]
00438 e5933000 ldr r3, [r3]
0043c e1a0e00f mov lr, pc
00440 e12fff13 bx r3
; 191 :
; 192 : // is the disk powered up?
; 193 : if(m_curDx != D0) {
00444 e59d3028 ldr r3, [sp, #0x28]
00448 e2833008 add r3, r3, #8
0044c e5933000 ldr r3, [r3]
00450 e3530000 cmp r3, #0
00454 0a00003e beq |$L32046|
; 194 : // don't bother requesting from the PM if we've already asked in a previous request
; 195 : DEBUGMSG(ZONE_POWER, (_T("CDiskPower::RequestDevice: device at D%d, m_fBoostRequested is %d\r\n"), m_curDx, m_fBoostRequested));
00458 e59f31a8 ldr r3, [pc, #0x1A8]
0045c e5933440 ldr r3, [r3, #0x440]
00460 e3130c02 tst r3, #2, 24
00464 0a00000a beq |$L32481|
00468 e59d3028 ldr r3, [sp, #0x28]
0046c e2833010 add r3, r3, #0x10
00470 e5932000 ldr r2, [r3]
00474 e59d3028 ldr r3, [sp, #0x28]
00478 e2833008 add r3, r3, #8
0047c e5931000 ldr r1, [r3]
00480 e59f018c ldr r0, [pc, #0x18C]
00484 eb000000 bl NKDbgPrintfW
00488 e3a03001 mov r3, #1
0048c e58d3010 str r3, [sp, #0x10]
00490 ea000001 b |$L32482|
00494 |$L32481|
00494 e3a03000 mov r3, #0
00498 e58d3010 str r3, [sp, #0x10]
0049c |$L32482|
; 196 : if(!m_fBoostRequested) {
0049c e59d3028 ldr r3, [sp, #0x28]
004a0 e2833010 add r3, r3, #0x10
004a4 e5933000 ldr r3, [r3]
004a8 e3530000 cmp r3, #0
004ac 1a000028 bne |$L32049|
; 197 : // request that the PM make us available
; 198 : m_fBoostRequested = TRUE;
004b0 e59d3028 ldr r3, [sp, #0x28]
004b4 e2832010 add r2, r3, #0x10
004b8 e3a03001 mov r3, #1
004bc e5823000 str r3, [r2]
; 199 : DWORD dwStatus = m_pfnDevicePowerNotify((PVOID) m_pszPMName, D0, POWER_NAME);
004c0 e3a02001 mov r2, #1
004c4 e3a01000 mov r1, #0
004c8 e59d3028 ldr r3, [sp, #0x28]
004cc e2833048 add r3, r3, #0x48
004d0 e5930000 ldr r0, [r3]
004d4 e59d3028 ldr r3, [sp, #0x28]
004d8 e28330b0 add r3, r3, #0xB0
004dc e5933000 ldr r3, [r3]
004e0 e1a0e00f mov lr, pc
004e4 e12fff13 bx r3
004e8 e58d0014 str r0, [sp, #0x14]
004ec e59d3014 ldr r3, [sp, #0x14]
004f0 e58d3004 str r3, [sp, #4]
; 200 : if(dwStatus != ERROR_SUCCESS) {
004f4 e59d3004 ldr r3, [sp, #4]
004f8 e3530000 cmp r3, #0
004fc 0a000014 beq |$L32053|
; 201 : DEBUGMSG(ZONE_WARNING, (_T("CDiskPower::RequestDevice: DevicePowerNotify('%s') failed %d\r\n"), m_pszPMName, dwStatus));
00500 e59f3100 ldr r3, [pc, #0x100]
00504 e5933440 ldr r3, [r3, #0x440]
00508 e3130a01 tst r3, #1, 20
0050c 0a000008 beq |$L32483|
00510 e59d2004 ldr r2, [sp, #4]
00514 e59d3028 ldr r3, [sp, #0x28]
00518 e2833048 add r3, r3, #0x48
0051c e5931000 ldr r1, [r3]
00520 e59f00e8 ldr r0, [pc, #0xE8]
00524 eb000000 bl NKDbgPrintfW
00528 e3a03001 mov r3, #1
0052c e58d3018 str r3, [sp, #0x18]
00530 ea000001 b |$L32484|
00534 |$L32483|
00534 e3a03000 mov r3, #0
00538 e58d3018 str r3, [sp, #0x18]
0053c |$L32484|
; 202 : m_fBoostRequested = FALSE;
0053c e59d3028 ldr r3, [sp, #0x28]
00540 e2832010 add r2, r3, #0x10
00544 e3a03000 mov r3, #0
00548 e5823000 str r3, [r2]
; 203 : fOk = FALSE;
0054c e3a03000 mov r3, #0
00550 e58d3000 str r3, [sp]
00554 |$L32053|
00554 |$L32049|
00554 |$L32046|
; 204 : }
; 205 : }
; 206 : }
; 207 :
; 208 : if(m_curDx == D0) {
00554 e59d3028 ldr r3, [sp, #0x28]
00558 e2833008 add r3, r3, #8
0055c e5933000 ldr r3, [r3]
00560 e3530000 cmp r3, #0
00564 1a000017 bne |$L32056|
; 209 : // wait for the disk to spin up so that we can do I/O
; 210 : DEBUGCHK(m_UseCount == 0);
00568 e59d3028 ldr r3, [sp, #0x28]
0056c e283304c add r3, r3, #0x4C
00570 e5933000 ldr r3, [r3]
00574 e3530000 cmp r3, #0
00578 1a000002 bne |$L32485|
0057c e3a03001 mov r3, #1
00580 e58d301c str r3, [sp, #0x1C]
00584 ea000007 b |$L32486|
00588 |$L32485|
00588 e3a030d2 mov r3, #0xD2
0058c e59f2078 ldr r2, [pc, #0x78]
00590 e59f1070 ldr r1, [pc, #0x70]
00594 e59f0068 ldr r0, [pc, #0x68]
00598 eb000000 bl NKDbgPrintfW
0059c e6000010 DCD 0xe6000010
005a0 e3a03000 mov r3, #0
005a4 e58d301c str r3, [sp, #0x1C]
005a8 |$L32486|
; 211 : m_UseCount++;
005a8 e59d3028 ldr r3, [sp, #0x28]
005ac e283304c add r3, r3, #0x4C
005b0 e5933000 ldr r3, [r3]
005b4 e2832001 add r2, r3, #1
005b8 e59d3028 ldr r3, [sp, #0x28]
005bc e283304c add r3, r3, #0x4C
005c0 e5832000 str r2, [r3]
; 212 : } else {
005c4 ea000001 b |$L32059|
005c8 |$L32056|
; 213 : fOk = FALSE;
005c8 e3a03000 mov r3, #0
005cc e58d3000 str r3, [sp]
005d0 |$L32059|
; 214 : }
; 215 :
; 216 : ReleaseCS();
005d0 e59d3028 ldr r3, [sp, #0x28]
005d4 e5933000 ldr r3, [r3]
005d8 e2833028 add r3, r3, #0x28
005dc e59d0028 ldr r0, [sp, #0x28]
005e0 e5933000 ldr r3, [r3]
005e4 e1a0e00f mov lr, pc
005e8 e12fff13 bx r3
; 217 :
; 218 : return fOk;
005ec e59d3000 ldr r3, [sp]
005f0 e58d3008 str r3, [sp, #8]
005f4 e59d0008 ldr r0, [sp, #8]
; 219 : }
005f8 e28dd020 add sp, sp, #0x20
005fc e89d6000 ldmia sp, {sp, lr}
00600 e12fff1e bx lr
00604 |$L32492|
00604 00000000 DCD |??_C@_1FK@FNONLNGN@?$AA?$CF?$AAs?$AA?3?$AA?5?$AAD?$AAE?$AAB?$AAU?$AAG?$AAC?$AAH?$AAK?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?5@|
00608 00000000 DCD |dpCurSettings|
0060c 00000000 DCD |??_C@_1HA@GOBHIDMB@?$AAd?$AA?3?$AA?2?$AAw?$AAi?$AAn?$AAc?$AAe?$AA5?$AA0?$AA0?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm@|
00610 00000000 DCD |??_C@_1HO@IIGHNCKK@?$AAC?$AAD?$AAi?$AAs?$AAk?$AAP?$AAo?$AAw?$AAe?$AAr?$AA?3?$AA?3?$AAR?$AAe?$AAq?$AAu?$AAe?$AAs?$AAt?$AAD@|
00614 00000000 DCD |??_C@_1II@DLDDCBCE@?$AAC?$AAD?$AAi?$AAs?$AAk?$AAP?$AAo?$AAw?$AAe?$AAr?$AA?3?$AA?3?$AAR?$AAe?$AAq?$AAu?$AAe?$AAs?$AAt?$AAD@|
00618 |$M32489|
ENDP ; |?RequestDevice@CDiskPower@@UAAHXZ|, CDiskPower::RequestDevice
EXPORT |??_C@_1IM@IBNIPDHH@?$AAC?$AAD?$AAi?$AAs?$AAk?$AAP?$AAo?$AAw?$AAe?$AAr?$AA?3?$AA?3?$AAD?$AAi?$AAs?$AAk?$AAP?$AAo?$AAw?$AAe@| [ DATA ] ; `string'
00030 AREA |.pdata|, PDATA
|$T32505| DCD |$L32504|
DCD 0x40008104
00000 AREA |.rdata| { |??_C@_1IM@IBNIPDHH@?$AAC?$AAD?$AAi?$AAs?$AAk?$AAP?$AAo?$AAw?$AAe?$AAr?$AA?3?$AA?3?$AAD?$AAi?$AAs?$AAk?$AAP?$AAo?$AAw?$AAe@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1IM@IBNIPDHH@?$AAC?$AAD?$AAi?$AAs?$AAk?$AAP?$AAo?$AAw?$AAe?$AAr?$AA?3?$AA?3?$AAD?$AAi?$AAs?$AAk?$AAP?$AAo?$AAw?$AAe@| DCB "C"
DCB 0x0, "D", 0x0, "i", 0x0, "s", 0x0, "k", 0x0, "P", 0x0, "o"
DCB 0x0, "w", 0x0, "e", 0x0, "r", 0x0, ":", 0x0, ":", 0x0, "D"
DCB 0x0, "i", 0x0, "s", 0x0, "k", 0x0, "P", 0x0, "o", 0x0, "w"
DCB 0x0, "e", 0x0, "r", 0x0, "T", 0x0, "h", 0x0, "r", 0x0, "e"
DCB 0x0, "a", 0x0, "d", 0x0, ":", 0x0, " ", 0x0, "D", 0x0, "e"
DCB 0x0, "v", 0x0, "i", 0x0, "c", 0x0, "e", 0x0, "P", 0x0, "o"
DCB 0x0, "w", 0x0, "e", 0x0, "r", 0x0, "N", 0x0, "o", 0x0, "t"
DCB 0x0, "i", 0x0, "f", 0x0, "y", 0x0, "(", 0x0, "'", 0x0, "%"
DCB 0x0, "s", 0x0, "'", 0x0, ",", 0x0, " ", 0x0, "D", 0x0, "%"
DCB 0x0, "d", 0x0, ")", 0x0, " ", 0x0, "f", 0x0, "a", 0x0, "i"
DCB 0x0, "l", 0x0, "e", 0x0, "d", 0x0, " ", 0x0, "%", 0x0, "d"
DCB 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
; Function compile flags: /Odt
00618 AREA |.text|, CODE, ARM
00618 |?ReleaseDevice@CDiskPower@@UAAXXZ| PROC ; CDiskPower::ReleaseDevice
; 224 : {
00618 |$L32504|
00618 e1a0c00d mov r12, sp
0061c e92d0001 stmdb sp!, {r0}
00620 e92d5000 stmdb sp!, {r12, lr}
00624 e24dd018 sub sp, sp, #0x18
00628 |$M32502|
; 225 : PREFAST_DEBUGCHK(m_pfnDevicePowerNotify);
00628 e59d3020 ldr r3, [sp, #0x20]
0062c e28330b0 add r3, r3, #0xB0
00630 e5933000 ldr r3, [r3]
00634 e3530000 cmp r3, #0
00638 0a000002 beq |$L32494|
0063c e3a03001 mov r3, #1
00640 e58d3004 str r3, [sp, #4]
00644 ea000007 b |$L32495|
00648 |$L32494|
00648 e3a030e1 mov r3, #0xE1
0064c e59f21c4 ldr r2, [pc, #0x1C4]
00650 e59f11b8 ldr r1, [pc, #0x1B8]
00654 e59f01b8 ldr r0, [pc, #0x1B8]
00658 eb000000 bl NKDbgPrintfW
0065c e6000010 DCD 0xe6000010
00660 e3a03000 mov r3, #0
00664 e58d3004 str r3, [sp, #4]
00668 |$L32495|
; 226 :
; 227 : TakeCS();
00668 e59d3020 ldr r3, [sp, #0x20]
0066c e5933000 ldr r3, [r3]
00670 e2833024 add r3, r3, #0x24
00674 e59d0020 ldr r0, [sp, #0x20]
00678 e5933000 ldr r3, [r3]
0067c e1a0e00f mov lr, pc
00680 e12fff13 bx r3
; 228 :
; 229 : // update the usage counter
; 230 : DEBUGCHK(m_UseCount != 0);
00684 e59d3020 ldr r3, [sp, #0x20]
00688 e283304c add r3, r3, #0x4C
0068c e5933000 ldr r3, [r3]
00690 e3530000 cmp r3, #0
00694 0a000002 beq |$L32496|
00698 e3a03001 mov r3, #1
0069c e58d3008 str r3, [sp, #8]
006a0 ea000007 b |$L32497|
006a4 |$L32496|
006a4 e3a030e6 mov r3, #0xE6
006a8 e59f2168 ldr r2, [pc, #0x168]
006ac e59f115c ldr r1, [pc, #0x15C]
006b0 e59f015c ldr r0, [pc, #0x15C]
006b4 eb000000 bl NKDbgPrintfW
006b8 e6000010 DCD 0xe6000010
006bc e3a03000 mov r3, #0
006c0 e58d3008 str r3, [sp, #8]
006c4 |$L32497|
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -