📄 diskmain.cod
字号:
007b4 e3a03000 mov r3, #0
007b8 e58d3008 str r3, [sp, #8]
007bc |$L33033|
007bc e59d3008 ldr r3, [sp, #8]
007c0 e58d3000 str r3, [sp]
007c4 e59d0000 ldr r0, [sp]
007c8 e28dd00c add sp, sp, #0xC
007cc e89d6000 ldmia sp, {sp, lr}
007d0 e12fff1e bx lr
007d4 |$M33036|
ENDP ; |?IsWriteCacheSupported@CDisk@@QAAHXZ|, CDisk::IsWriteCacheSupported
EXPORT |?IsPMSupported@CDisk@@QAAHXZ| ; CDisk::IsPMSupported
00090 AREA |.pdata|, PDATA
|$T33046| DCD |$L33045|
DCD 0x40002004
; Function compile flags: /Odt
007d4 AREA |.text|, CODE, ARM
007d4 |?IsPMSupported@CDisk@@QAAHXZ| PROC ; CDisk::IsPMSupported
; 147 : BOOL CDisk::IsPMSupported() { return (m_Id.CommandSetSupported1 & COMMAND_SET_POWER_MANAGEMENT_SUPPORTED && IsValidCommandSupportInfo()); }
007d4 |$L33045|
007d4 e1a0c00d mov r12, sp
007d8 e92d0001 stmdb sp!, {r0}
007dc e92d5000 stmdb sp!, {r12, lr}
007e0 e24dd00c sub sp, sp, #0xC
007e4 |$M33043|
007e4 e59d3014 ldr r3, [sp, #0x14]
007e8 e2833c05 add r3, r3, #5, 24
007ec e2831034 add r1, r3, #0x34
007f0 e5d13001 ldrb r3, [r1, #1]
007f4 e1a03403 mov r3, r3, lsl #8
007f8 e1a02803 mov r2, r3, lsl #16
007fc e1a02822 mov r2, r2, lsr #16
00800 e5d13000 ldrb r3, [r1]
00804 e1833002 orr r3, r3, r2
00808 e3130008 tst r3, #8
0080c 0a000008 beq |$L33040|
00810 e59d0014 ldr r0, [sp, #0x14]
00814 eb000000 bl |?IsValidCommandSupportInfo@CDisk@@QAAHXZ|
00818 e58d0004 str r0, [sp, #4]
0081c e59d3004 ldr r3, [sp, #4]
00820 e3530000 cmp r3, #0
00824 0a000002 beq |$L33040|
00828 e3a03001 mov r3, #1
0082c e58d3008 str r3, [sp, #8]
00830 ea000001 b |$L33041|
00834 |$L33040|
00834 e3a03000 mov r3, #0
00838 e58d3008 str r3, [sp, #8]
0083c |$L33041|
0083c e59d3008 ldr r3, [sp, #8]
00840 e58d3000 str r3, [sp]
00844 e59d0000 ldr r0, [sp]
00848 e28dd00c add sp, sp, #0xC
0084c e89d6000 ldmia sp, {sp, lr}
00850 e12fff1e bx lr
00854 |$M33044|
ENDP ; |?IsPMSupported@CDisk@@QAAHXZ|, CDisk::IsPMSupported
EXPORT |?IsPMEnabled@CDisk@@QAAHXZ| ; CDisk::IsPMEnabled
00098 AREA |.pdata|, PDATA
|$T33054| DCD |$L33053|
DCD 0x40002004
; Function compile flags: /Odt
00854 AREA |.text|, CODE, ARM
00854 |?IsPMEnabled@CDisk@@QAAHXZ| PROC ; CDisk::IsPMEnabled
; 148 : BOOL CDisk::IsPMEnabled() { return (IsPMSupported() && (m_Id.CommandSetFeatureEnabled1 & COMMAND_SET_POWER_MANAGEMENT_ENABLED)); }
00854 |$L33053|
00854 e1a0c00d mov r12, sp
00858 e92d0001 stmdb sp!, {r0}
0085c e92d5000 stmdb sp!, {r12, lr}
00860 e24dd00c sub sp, sp, #0xC
00864 |$M33051|
00864 e59d0014 ldr r0, [sp, #0x14]
00868 eb000000 bl |?IsPMSupported@CDisk@@QAAHXZ|
0086c e58d0004 str r0, [sp, #4]
00870 e59d3004 ldr r3, [sp, #4]
00874 e3530000 cmp r3, #0
00878 0a00000d beq |$L33048|
0087c e59d3014 ldr r3, [sp, #0x14]
00880 e2833c05 add r3, r3, #5, 24
00884 e283103a add r1, r3, #0x3A
00888 e5d13001 ldrb r3, [r1, #1]
0088c e1a03403 mov r3, r3, lsl #8
00890 e1a02803 mov r2, r3, lsl #16
00894 e1a02822 mov r2, r2, lsr #16
00898 e5d13000 ldrb r3, [r1]
0089c e1833002 orr r3, r3, r2
008a0 e3130008 tst r3, #8
008a4 0a000002 beq |$L33048|
008a8 e3a03001 mov r3, #1
008ac e58d3008 str r3, [sp, #8]
008b0 ea000001 b |$L33049|
008b4 |$L33048|
008b4 e3a03000 mov r3, #0
008b8 e58d3008 str r3, [sp, #8]
008bc |$L33049|
008bc e59d3008 ldr r3, [sp, #8]
008c0 e58d3000 str r3, [sp]
008c4 e59d0000 ldr r0, [sp]
008c8 e28dd00c add sp, sp, #0xC
008cc e89d6000 ldmia sp, {sp, lr}
008d0 e12fff1e bx lr
008d4 |$M33052|
ENDP ; |?IsPMEnabled@CDisk@@QAAHXZ|, CDisk::IsPMEnabled
EXPORT |?SetActiveKey@CDisk@@QAAXPAG@Z| ; CDisk::SetActiveKey
IMPORT |wcsncpy|
000a0 AREA |.pdata|, PDATA
|$T33059| DCD |$L33058|
DCD 0x40001003
; Function compile flags: /Odt
008d4 AREA |.text|, CODE, ARM
008d4 |?SetActiveKey@CDisk@@QAAXPAG@Z| PROC ; CDisk::SetActiveKey
; 152 : {
008d4 |$L33058|
008d4 e1a0c00d mov r12, sp
008d8 e92d0003 stmdb sp!, {r0, r1}
008dc e92d5000 stmdb sp!, {r12, lr}
008e0 |$M33056|
; 153 : wcsncpy(m_szActiveKey, szActiveKey, MAX_PATH - 1);
008e0 e3a03c01 mov r3, #1, 24
008e4 e3832003 orr r2, r3, #3
008e8 e59d100c ldr r1, [sp, #0xC]
008ec e59d3008 ldr r3, [sp, #8]
008f0 e2830070 add r0, r3, #0x70
008f4 eb000000 bl wcsncpy
; 154 : m_szActiveKey[MAX_PATH - 1] = 0;
008f8 e59d3008 ldr r3, [sp, #8]
008fc e2833c02 add r3, r3, #2, 24
00900 e2832076 add r2, r3, #0x76
00904 e3a03000 mov r3, #0
00908 e1c230b0 strh r3, [r2]
; 155 : }
0090c e89d6000 ldmia sp, {sp, lr}
00910 e12fff1e bx lr
00914 |$M33057|
ENDP ; |?SetActiveKey@CDisk@@QAAXPAG@Z|, CDisk::SetActiveKey
EXPORT |?SetDeviceKey@CDisk@@QAAXPAG@Z| ; CDisk::SetDeviceKey
000a8 AREA |.pdata|, PDATA
|$T33064| DCD |$L33063|
DCD 0x40001003
; Function compile flags: /Odt
00914 AREA |.text|, CODE, ARM
00914 |?SetDeviceKey@CDisk@@QAAXPAG@Z| PROC ; CDisk::SetDeviceKey
; 158 : {
00914 |$L33063|
00914 e1a0c00d mov r12, sp
00918 e92d0003 stmdb sp!, {r0, r1}
0091c e92d5000 stmdb sp!, {r12, lr}
00920 |$M33061|
; 159 : wcsncpy(m_szDeviceKey, szDeviceKey, MAX_PATH - 1);
00920 e3a03c01 mov r3, #1, 24
00924 e3832003 orr r2, r3, #3
00928 e59d100c ldr r1, [sp, #0xC]
0092c e59d3008 ldr r3, [sp, #8]
00930 e2830f9e add r0, r3, #0x9E, 30
00934 eb000000 bl wcsncpy
; 160 : m_szDeviceKey[MAX_PATH - 1] = 0;
00938 e59d3008 ldr r3, [sp, #8]
0093c e2833b01 add r3, r3, #1, 22
00940 e283207e add r2, r3, #0x7E
00944 e3a03000 mov r3, #0
00948 e1c230b0 strh r3, [r2]
; 161 : }
0094c e89d6000 ldmia sp, {sp, lr}
00950 e12fff1e bx lr
00954 |$M33062|
ENDP ; |?SetDeviceKey@CDisk@@QAAXPAG@Z|, CDisk::SetDeviceKey
EXPORT |??_C@_1IE@CCFANAPE@?$AAA?$AAt?$AAa?$AAp?$AAi?$AA?$CB?$AAC?$AAD?$AAi?$AAs?$AAk?$AA?3?$AA?3?$AAI?$AAn?$AAi?$AAt?$AAC?$AAo?$AAn@| [ DATA ] ; `string'
EXPORT |??_C@_1HI@CBKBLOGO@?$AAA?$AAt?$AAa?$AAp?$AAi?$AA?$CB?$AAC?$AAD?$AAi?$AAs?$AAk?$AA?3?$AA?3?$AAI?$AAn?$AAi?$AAt?$AAC?$AAo?$AAn@| [ DATA ] ; `string'
EXPORT |?SelectDevice@CDisk@@QAAXXZ| ; CDisk::SelectDevice
EXPORT |?WriteAltDriveController@CDisk@@QAAXE@Z| ; CDisk::WriteAltDriveController
EXPORT |?Identify@CDisk@@QAAHXZ| ; CDisk::Identify
EXPORT |?ResetController@CDisk@@QAAHH@Z| ; CDisk::ResetController
IMPORT |NKDbgPrintfW|
IMPORT |dpCurSettings|
000b0 AREA |.pdata|, PDATA
|$T33074| DCD |$L33073|
DCD 0x40005d04
00000 AREA |.rdata| { |??_C@_1HI@CBKBLOGO@?$AAA?$AAt?$AAa?$AAp?$AAi?$AA?$CB?$AAC?$AAD?$AAi?$AAs?$AAk?$AA?3?$AA?3?$AAI?$AAn?$AAi?$AAt?$AAC?$AAo?$AAn@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1HI@CBKBLOGO@?$AAA?$AAt?$AAa?$AAp?$AAi?$AA?$CB?$AAC?$AAD?$AAi?$AAs?$AAk?$AA?3?$AA?3?$AAI?$AAn?$AAi?$AAt?$AAC?$AAo?$AAn@| DCB "A"
DCB 0x0, "t", 0x0, "a", 0x0, "p", 0x0, "i", 0x0, "!", 0x0, "C"
DCB 0x0, "D", 0x0, "i", 0x0, "s", 0x0, "k", 0x0, ":", 0x0, ":"
DCB 0x0, "I", 0x0, "n", 0x0, "i", 0x0, "t", 0x0, "C", 0x0, "o"
DCB 0x0, "n", 0x0, "t", 0x0, "r", 0x0, "o", 0x0, "l", 0x0, "l"
DCB 0x0, "e", 0x0, "r", 0x0, ">", 0x0, " ", 0x0, "D", 0x0, "e"
DCB 0x0, "v", 0x0, "i", 0x0, "c", 0x0, "e", 0x0, " ", 0x0, "r"
DCB 0x0, "e", 0x0, "s", 0x0, "p", 0x0, "o", 0x0, "n", 0x0, "d"
DCB 0x0, "e", 0x0, "d", 0x0, " ", 0x0, "t", 0x0, "o", 0x0, " "
DCB 0x0, "i", 0x0, "d", 0x0, "e", 0x0, "n", 0x0, "t", 0x0, "i"
DCB 0x0, "f", 0x0, "y", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1IE@CCFANAPE@?$AAA?$AAt?$AAa?$AAp?$AAi?$AA?$CB?$AAC?$AAD?$AAi?$AAs?$AAk?$AA?3?$AA?3?$AAI?$AAn?$AAi?$AAt?$AAC?$AAo?$AAn@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1IE@CCFANAPE@?$AAA?$AAt?$AAa?$AAp?$AAi?$AA?$CB?$AAC?$AAD?$AAi?$AAs?$AAk?$AA?3?$AA?3?$AAI?$AAn?$AAi?$AAt?$AAC?$AAo?$AAn@| DCB "A"
DCB 0x0, "t", 0x0, "a", 0x0, "p", 0x0, "i", 0x0, "!", 0x0, "C"
DCB 0x0, "D", 0x0, "i", 0x0, "s", 0x0, "k", 0x0, ":", 0x0, ":"
DCB 0x0, "I", 0x0, "n", 0x0, "i", 0x0, "t", 0x0, "C", 0x0, "o"
DCB 0x0, "n", 0x0, "t", 0x0, "r", 0x0, "o", 0x0, "l", 0x0, "l"
DCB 0x0, "e", 0x0, "r", 0x0, ">", 0x0, " ", 0x0, "D", 0x0, "e"
DCB 0x0, "v", 0x0, "i", 0x0, "c", 0x0, "e", 0x0, " ", 0x0, "d"
DCB 0x0, "i", 0x0, "d", 0x0, " ", 0x0, "n", 0x0, "o", 0x0, "t"
DCB 0x0, " ", 0x0, "r", 0x0, "e", 0x0, "s", 0x0, "p", 0x0, "o"
DCB 0x0, "n", 0x0, "d", 0x0, " ", 0x0, "t", 0x0, "o", 0x0, " "
DCB 0x0, "i", 0x0, "d", 0x0, "e", 0x0, "n", 0x0, "t", 0x0, "i"
DCB 0x0, "f", 0x0, "y", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
; Function compile flags: /Odt
00954 AREA |.text|, CODE, ARM
00954 |?InitController@CDisk@@UAAHH@Z| PROC ; CDisk::InitController
; 178 : {
00954 |$L33073|
00954 e1a0c00d mov r12, sp
00958 e92d0003 stmdb sp!, {r0, r1}
0095c e92d5000 stmdb sp!, {r12, lr}
00960 e24dd018 sub sp, sp, #0x18
00964 |$M33071|
; 179 : BOOL bRet = TRUE;
00964 e3a03001 mov r3, #1
00968 e58d3000 str r3, [sp]
; 180 :
; 181 : // if the controller has not already been reset, then perform a soft-reset
; 182 : // to enable the channel
; 183 :
; 184 : if (!(m_dwDeviceFlags & DFLAGS_DEVICE_INITIALIZED)) {
0096c e59d3020 ldr r3, [sp, #0x20]
00970 e2833e69 add r3, r3, #0x69, 28
00974 e5933000 ldr r3, [r3]
00978 e3130101 tst r3, #1, 2
0097c 1a00001a bne |$L32033|
; 185 :
; 186 : // perform a soft-reset on the controller; if we don't do this, then
; 187 : // we won't be able to detect whether or not devices are present on the
; 188 : // channel
; 189 :
; 190 : bRet = ResetController(FALSE);
00980 e3a01000 mov r1, #0
00984 e59d0020 ldr r0, [sp, #0x20]
00988 eb000000 bl |?ResetController@CDisk@@QAAHH@Z|
0098c e58d0008 str r0, [sp, #8]
00990 e59d3008 ldr r3, [sp, #8]
00994 e58d3000 str r3, [sp]
; 191 : if (!bRet) {
00998 e59d3000 ldr r3, [sp]
0099c e3530000 cmp r3, #0
009a0 1a000000 bne |$L32034|
; 192 : goto exit;
009a4 ea00003e b |$L32036|
009a8 |$L32034|
; 193 : }
; 194 :
; 195 : // if interrupt is supported, enable interrupt
; 196 :
; 197 : if (m_fInterruptSupported) {
009a8 e59d3020 ldr r3, [sp, #0x20]
009ac e2833040 add r3, r3, #0x40
009b0 e5933000 ldr r3, [r3]
009b4 e3530000 cmp r3, #0
009b8 0a00000b beq |$L32037|
; 198 : SelectDevice();
009bc e59d0020 ldr r0, [sp, #0x20]
009c0 eb000000 bl |?SelectDevice@CDisk@@QAAXXZ|
; 199 : WriteAltDriveController(ATA_CTRL_ENABLE_INTR);
009c4 e3a01000 mov r1, #0
009c8 e59d0020 ldr r0, [sp, #0x20]
009cc eb000000 bl |?WriteAltDriveController@CDisk@@QAAXE@Z|
; 200 : EnableInterrupt();
009d0 e59d3020 ldr r3, [sp, #0x20]
009d4 e5933000 ldr r3, [r3]
009d8 e283303c add r3, r3, #0x3C
009dc e59d0020 ldr r0, [sp, #0x20]
009e0 e5933000 ldr r3, [r3]
009e4 e1a0e00f mov lr, pc
009e8 e12fff13 bx r3
009ec |$L32037|
009ec |$L32033|
; 201 : }
; 202 : }
; 203 :
; 204 : // issue IDENTIFY DEVICE and/or IDENTIFY PACKET DEVICE
; 205 :
; 206 : bRet = Identify();
009ec e59d0020 ldr r0, [sp, #0x20]
009f0 eb000000 bl |?Identify@CDisk@@QAAHXZ|
009f4 e58d000c str r0, [sp, #0xC]
009f8 e59d300c ldr r3, [sp, #0xC]
009fc e58d3000 str r3, [sp]
; 207 : if (!bRet) {
00a00 e59d3000 ldr r3, [sp]
00a04 e3530000 cmp r3, #0
00a08 1a00000f bne |$L32038|
; 208 : DEBUGMSG(ZONE_INIT|ZONE_ERROR, (_T(
; 209 : "Atapi!CDisk::InitController> Device did not respond to identify\r\n"
; 210 : )));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -