📄 cdio.cod
字号:
; Listing generated by Microsoft (R) Optimizing Compiler Version 13.10.4091
TTL D:\WINCE500\PLATFORM\smdk2440\DRIVERS\atapi\.\cdio.cpp
CODE32
00000 AREA |.drectve|, DRECTVE
DCB "-defaultlib:coredll.lib "
DCB "-defaultlib:corelibc.lib "
EXPORT |?AtapiIoctl@CPCIDiskAndCD@@QAAKPAU_IOREQ@@@Z| ; CPCIDiskAndCD::AtapiIoctl
EXPORT |?ReadCdRom@CPCIDiskAndCD@@QAAKPAUCDROM_READ@@PAK@Z| ; CPCIDiskAndCD::ReadCdRom
EXPORT |?AtapiIsUnitReady@CPCIDiskAndCD@@QAAHPAU_IOREQ@@@Z| ; CPCIDiskAndCD::AtapiIsUnitReady
EXPORT |?AtapiIsUnitReadyEx@CPCIDiskAndCD@@QAAHXZ| ; CPCIDiskAndCD::AtapiIsUnitReadyEx
EXPORT |?AtapiGetSenseInfo@CPCIDiskAndCD@@QAAHPAU_CD_SENSE_DATA@@@Z| ; CPCIDiskAndCD::AtapiGetSenseInfo
EXPORT |?AtapiIssueInquiry@CPCIDiskAndCD@@QAAHPAU_INQUIRY_DATA@@@Z| ; CPCIDiskAndCD::AtapiIssueInquiry
EXPORT |?AtapiGetToc@CPCIDiskAndCD@@QAAHPAU_CDROM_TOC@@@Z| ; CPCIDiskAndCD::AtapiGetToc
EXPORT |?AtapiGetDiscInfo@CPCIDiskAndCD@@QAAKPAU_IOREQ@@@Z| ; CPCIDiskAndCD::AtapiGetDiscInfo
EXPORT |?AtapiReadQChannel@CPCIDiskAndCD@@QAAKPAU_IOREQ@@@Z| ; CPCIDiskAndCD::AtapiReadQChannel
EXPORT |?AtapiLoadMedia@CPCIDiskAndCD@@QAAKH@Z| ; CPCIDiskAndCD::AtapiLoadMedia
EXPORT |??_C@_1EO@MDEOOFHJ@?$AAA?$AAT?$AAA?$AAP?$AAI?$AA?3?$AAP?$AAe?$AAr?$AAf?$AAo?$AAr?$AAm?$AAI?$AAo?$AAc?$AAt?$AAl?$AA?3?$AA?5@| [ DATA ] ; `string'
IMPORT |NKDbgPrintfW|
IMPORT |dpCurSettings|
IMPORT |?ControlAudio@CPCIDiskAndCD@@QAAKPAU_IOREQ@@@Z| ; CPCIDiskAndCD::ControlAudio
IMPORT |?DVDReadKey@CPCIDiskAndCD@@QAAKPAU_IOREQ@@@Z| ; CPCIDiskAndCD::DVDReadKey
IMPORT |?DVDGetRegion@CPCIDiskAndCD@@QAAKPAU_IOREQ@@@Z| ; CPCIDiskAndCD::DVDGetRegion
IMPORT |?DVDSendKey@CPCIDiskAndCD@@QAAKPAU_IOREQ@@@Z| ; CPCIDiskAndCD::DVDSendKey
IMPORT |?DVDSetRegion@CPCIDiskAndCD@@QAAKPAU_IOREQ@@@Z| ; CPCIDiskAndCD::DVDSetRegion
IMPORT |?ValidateSg@CDisk@@SAHPAUCDROM_READ@@K@Z| ; CDisk::ValidateSg
00000 AREA |.pdata|, PDATA
|$T32739| DCD |$L32738|
DCD 0x40021f04
; File d:\wince500\platform\smdk2440\drivers\atapi\cdio.cpp
00000 AREA |.rdata| { |??_C@_1EO@MDEOOFHJ@?$AAA?$AAT?$AAA?$AAP?$AAI?$AA?3?$AAP?$AAe?$AAr?$AAf?$AAo?$AAr?$AAm?$AAI?$AAo?$AAc?$AAt?$AAl?$AA?3?$AA?5@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1EO@MDEOOFHJ@?$AAA?$AAT?$AAA?$AAP?$AAI?$AA?3?$AAP?$AAe?$AAr?$AAf?$AAo?$AAr?$AAm?$AAI?$AAo?$AAc?$AAt?$AAl?$AA?3?$AA?5@| DCB "A"
DCB 0x0, "T", 0x0, "A", 0x0, "P", 0x0, "I", 0x0, ":", 0x0, "P"
DCB 0x0, "e", 0x0, "r", 0x0, "f", 0x0, "o", 0x0, "r", 0x0, "m"
DCB 0x0, "I", 0x0, "o", 0x0, "c", 0x0, "t", 0x0, "l", 0x0, ":"
DCB 0x0, " ", 0x0, "%", 0x0, "x", 0x0, " ", 0x0, "D", 0x0, "e"
DCB 0x0, "v", 0x0, "i", 0x0, "c", 0x0, "e", 0x0, "I", 0x0, "d"
DCB 0x0, ":", 0x0, " ", 0x0, "%", 0x0, "x", 0x0, " ", 0x0, 0xd
DCB 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
; Function compile flags: /Odt
00000 AREA |.text|, CODE, ARM
00000 |?AtapiIoctl@CPCIDiskAndCD@@QAAKPAU_IOREQ@@@Z| PROC ; CPCIDiskAndCD::AtapiIoctl
; 17 : {
00000 |$L32738|
00000 e1a0c00d mov r12, sp
00004 e92d0003 stmdb sp!, {r0, r1}
00008 e92d5000 stmdb sp!, {r12, lr}
0000c e24dd0b4 sub sp, sp, #0xB4
00010 |$M32736|
; 18 : DWORD dwError = ERROR_SUCCESS;
00010 e3a03000 mov r3, #0
00014 e58d3004 str r3, [sp, #4]
; 19 : BOOL fIsDVD = FALSE;
00018 e3a03000 mov r3, #0
0001c e58d3000 str r3, [sp]
; 20 : DEBUGMSG( ZONE_IOCTL, (TEXT("ATAPI:PerformIoctl: %x DeviceId: %x \r\n"),pIOReq->dwCode, m_dwDeviceId));
00020 e59f3850 ldr r3, [pc, #0x850]
00024 e5933440 ldr r3, [r3, #0x440]
00028 e3130040 tst r3, #0x40
0002c 0a00000b beq |$L32719|
00030 e59d30bc ldr r3, [sp, #0xBC]
00034 e2833b01 add r3, r3, #1, 22
00038 e2833088 add r3, r3, #0x88
0003c e5932000 ldr r2, [r3]
00040 e59d30c0 ldr r3, [sp, #0xC0]
00044 e2833014 add r3, r3, #0x14
00048 e5931000 ldr r1, [r3]
0004c e59f0820 ldr r0, [pc, #0x820]
00050 eb000000 bl NKDbgPrintfW
00054 e3a03001 mov r3, #1
00058 e58d3040 str r3, [sp, #0x40]
0005c ea000001 b |$L32720|
00060 |$L32719|
00060 e3a03000 mov r3, #0
00064 e58d3040 str r3, [sp, #0x40]
00068 |$L32720|
; 21 :
; 22 : switch( pIOReq->dwCode) {
00068 e59d30c0 ldr r3, [sp, #0xC0]
0006c e2833014 add r3, r3, #0x14
00070 e5933000 ldr r3, [r3]
00074 e58d3044 str r3, [sp, #0x44]
00078 e59d2044 ldr r2, [sp, #0x44]
0007c e3a03b93 mov r3, #0x93, 22
00080 e3833004 orr r3, r3, #4
00084 e1520003 cmp r2, r3
00088 8a00004c bhi |$L32727|
0008c e59d2044 ldr r2, [sp, #0x44]
00090 e3a03b93 mov r3, #0x93, 22
00094 e3833004 orr r3, r3, #4
00098 e1520003 cmp r2, r3
0009c 0a000089 beq |$L32106|
000a0 e59d2044 ldr r2, [sp, #0x44]
000a4 e3a03909 mov r3, #9, 18
000a8 e3833010 orr r3, r3, #0x10
000ac e1520003 cmp r2, r3
000b0 8a000022 bhi |$L32728|
000b4 e59d2044 ldr r2, [sp, #0x44]
000b8 e3a03909 mov r3, #9, 18
000bc e3833010 orr r3, r3, #0x10
000c0 e1520003 cmp r2, r3
000c4 0a0001d2 beq |$L32162|
000c8 e59d2044 ldr r2, [sp, #0x44]
000cc e3a03909 mov r3, #9, 18
000d0 e3833004 orr r3, r3, #4
000d4 e1520003 cmp r2, r3
000d8 8a00000d bhi |$L32729|
000dc e59d2044 ldr r2, [sp, #0x44]
000e0 e3a03909 mov r3, #9, 18
000e4 e3833004 orr r3, r3, #4
000e8 e1520003 cmp r2, r3
000ec 0a0001c8 beq |$L32162|
000f0 e59d2044 ldr r2, [sp, #0x44]
000f4 e3a03802 mov r3, #2, 16
000f8 e3833080 orr r3, r3, #0x80
000fc e1520003 cmp r2, r3
00100 0a0001c3 beq |$L32162|
00104 e59d3044 ldr r3, [sp, #0x44]
00108 e3530909 cmp r3, #9, 18
0010c 0a000145 beq |$L32142|
00110 ea0001cf b |$L32164|
00114 |$L32729|
00114 e59d2044 ldr r2, [sp, #0x44]
00118 e3a03909 mov r3, #9, 18
0011c e3833008 orr r3, r3, #8
00120 e1520003 cmp r2, r3
00124 0a0001ba beq |$L32162|
00128 e59d2044 ldr r2, [sp, #0x44]
0012c e3a03909 mov r3, #9, 18
00130 e383300c orr r3, r3, #0xC
00134 e1520003 cmp r2, r3
00138 0a0001b5 beq |$L32162|
0013c ea0001c4 b |$L32164|
00140 |$L32728|
00140 e59d2044 ldr r2, [sp, #0x44]
00144 e3a03909 mov r3, #9, 18
00148 e383303e orr r3, r3, #0x3E
0014c e1520003 cmp r2, r3
00150 8a00000f bhi |$L32730|
00154 e59d2044 ldr r2, [sp, #0x44]
00158 e3a03909 mov r3, #9, 18
0015c e383303e orr r3, r3, #0x3E
00160 e1520003 cmp r2, r3
00164 0a000084 beq |$L32113|
00168 e59d2044 ldr r2, [sp, #0x44]
0016c e3a03909 mov r3, #9, 18
00170 e3833018 orr r3, r3, #0x18
00174 e1520003 cmp r2, r3
00178 0a0001a5 beq |$L32162|
0017c e59d2044 ldr r2, [sp, #0x44]
00180 e3a03909 mov r3, #9, 18
00184 e383302c orr r3, r3, #0x2C
00188 e1520003 cmp r2, r3
0018c 0a000190 beq |$L32160|
00190 ea0001af b |$L32164|
00194 |$L32730|
00194 e59d2044 ldr r2, [sp, #0x44]
00198 e3a03b92 mov r3, #0x92, 22
0019c e3833008 orr r3, r3, #8
001a0 e1520003 cmp r2, r3
001a4 0a0000d5 beq |$L32126|
001a8 e59d2044 ldr r2, [sp, #0x44]
001ac e3a03b92 mov r3, #0x92, 22
001b0 e383300c orr r3, r3, #0xC
001b4 e1520003 cmp r2, r3
001b8 0a0000d7 beq |$L32127|
001bc ea0001a4 b |$L32164|
001c0 |$L32727|
001c0 e59d2044 ldr r2, [sp, #0x44]
001c4 e3a039cd mov r3, #0xCD, 18
001c8 e3833004 orr r3, r3, #4
001cc e1520003 cmp r2, r3
001d0 8a000022 bhi |$L32731|
001d4 e59d2044 ldr r2, [sp, #0x44]
001d8 e3a039cd mov r3, #0xCD, 18
001dc e3833004 orr r3, r3, #4
001e0 e1520003 cmp r2, r3
001e4 0a00014c beq |$L32154|
001e8 e59d2044 ldr r2, [sp, #0x44]
001ec e3a03b93 mov r3, #0x93, 22
001f0 e3833018 orr r3, r3, #0x18
001f4 e1520003 cmp r2, r3
001f8 8a00000f bhi |$L32732|
001fc e59d2044 ldr r2, [sp, #0x44]
00200 e3a03b93 mov r3, #0x93, 22
00204 e3833018 orr r3, r3, #0x18
00208 e1520003 cmp r2, r3
0020c 0a0000c9 beq |$L32128|
00210 e59d2044 ldr r2, [sp, #0x44]
00214 e3a03b93 mov r3, #0x93, 22
00218 e3833008 orr r3, r3, #8
0021c e1520003 cmp r2, r3
00220 0a00009c beq |$L32122|
00224 e59d2044 ldr r2, [sp, #0x44]
00228 e3a03b93 mov r3, #0x93, 22
0022c e383300c orr r3, r3, #0xC
00230 e1520003 cmp r2, r3
00234 0a0000a1 beq |$L32124|
00238 ea000185 b |$L32164|
0023c |$L32732|
0023c e59d2044 ldr r2, [sp, #0x44]
00240 e3a03b93 mov r3, #0x93, 22
00244 e383301c orr r3, r3, #0x1C
00248 e1520003 cmp r2, r3
0024c 0a0000d7 beq |$L32135|
00250 e59d3044 ldr r3, [sp, #0x44]
00254 e35309cd cmp r3, #0xCD, 18
00258 0a00012f beq |$L32154|
0025c ea00017c b |$L32164|
00260 |$L32731|
00260 e59d2044 ldr r2, [sp, #0x44]
00264 e3a039cd mov r3, #0xCD, 18
00268 e3833008 orr r3, r3, #8
0026c e0423003 sub r3, r2, r3
00270 e58d3044 str r3, [sp, #0x44]
00274 e59d3044 ldr r3, [sp, #0x44]
00278 e353000c cmp r3, #0xC
0027c 8a000174 bhi |$L32164|
00280 e59d2044 ldr r2, [sp, #0x44]
00284 e1a03102 mov r3, r2, lsl #2
00288 e083300f add r3, r3, pc
0028c e5933004 ldr r3, [r3, #4]
00290 e08ff003 add pc, pc, r3
00294 |$L32735|
00294 |$L32734|
00294 000004c4 DCD 0x4c4
00298 000005bc DCD 0x5bc
0029c 000005bc DCD 0x5bc
002a0 000005bc DCD 0x5bc
002a4 000004c4 DCD 0x4c4
002a8 000005bc DCD 0x5bc
002ac 000005bc DCD 0x5bc
002b0 000005bc DCD 0x5bc
002b4 00000504 DCD 0x504
002b8 000005bc DCD 0x5bc
002bc 000005bc DCD 0x5bc
002c0 000005bc DCD 0x5bc
002c4 00000520 DCD 0x520
002c8 |$L32106|
; 23 : ///////////////////// ATAPI /////////////////////////////////////
; 24 : case IOCTL_CDROM_READ_SG:
; 25 : // Verify that the buffer is of valid size
; 26 : {
; 27 : if (!AtapiIsUnitReadyEx()) return ERROR_NOT_READY;
002c8 e59d00bc ldr r0, [sp, #0xBC]
002cc eb000000 bl |?AtapiIsUnitReadyEx@CPCIDiskAndCD@@QAAHXZ|
002d0 e58d0048 str r0, [sp, #0x48]
002d4 e59d3048 ldr r3, [sp, #0x48]
002d8 e3530000 cmp r3, #0
002dc 1a000002 bne |$L32107|
002e0 e3a03015 mov r3, #0x15
002e4 e58d303c str r3, [sp, #0x3C]
002e8 ea00015d b |$L32097|
002ec |$L32107|
; 28 : if ((pIOReq->pInBuf == NULL) ||
; 29 : (pIOReq->pBytesReturned == NULL) ||
; 30 : !ValidateSg((CDROM_READ *)pIOReq->pInBuf,pIOReq->dwInBufSize)) {
002ec e59d30c0 ldr r3, [sp, #0xC0]
002f0 e2833018 add r3, r3, #0x18
002f4 e5933000 ldr r3, [r3]
002f8 e3530000 cmp r3, #0
002fc 0a00000f beq |$L32110|
00300 e59d30c0 ldr r3, [sp, #0xC0]
00304 e2833028 add r3, r3, #0x28
00308 e5933000 ldr r3, [r3]
0030c e3530000 cmp r3, #0
00310 0a00000a beq |$L32110|
00314 e59d30c0 ldr r3, [sp, #0xC0]
00318 e283301c add r3, r3, #0x1C
0031c e5931000 ldr r1, [r3]
00320 e59d30c0 ldr r3, [sp, #0xC0]
00324 e2833018 add r3, r3, #0x18
00328 e5930000 ldr r0, [r3]
0032c eb000000 bl |?ValidateSg@CDisk@@SAHPAUCDROM_READ@@K@Z|
00330 e58d004c str r0, [sp, #0x4C]
00334 e59d304c ldr r3, [sp, #0x4C]
00338 e3530000 cmp r3, #0
0033c 1a000002 bne |$L32109|
00340 |$L32110|
; 31 : dwError = ERROR_INVALID_PARAMETER;
00340 e3a03057 mov r3, #0x57
00344 e58d3004 str r3, [sp, #4]
; 32 : } else {
00348 ea00000a b |$L32111|
0034c |$L32109|
; 33 : dwError = ReadCdRom((CDROM_READ *)pIOReq->pInBuf, pIOReq->pBytesReturned);
0034c e59d30c0 ldr r3, [sp, #0xC0]
00350 e2833028 add r3, r3, #0x28
00354 e5932000 ldr r2, [r3]
00358 e59d30c0 ldr r3, [sp, #0xC0]
0035c e2833018 add r3, r3, #0x18
00360 e5931000 ldr r1, [r3]
00364 e59d00bc ldr r0, [sp, #0xBC]
00368 eb000000 bl |?ReadCdRom@CPCIDiskAndCD@@QAAKPAUCDROM_READ@@PAK@Z|
0036c e58d0050 str r0, [sp, #0x50]
00370 e59d3050 ldr r3, [sp, #0x50]
00374 e58d3004 str r3, [sp, #4]
00378 |$L32111|
; 34 : }
; 35 : }
; 36 : break;
00378 ea000137 b |$L32103|
0037c |$L32113|
; 37 : case IOCTL_CDROM_RAW_READ:
; 38 : {
; 39 : if (!AtapiIsUnitReadyEx()) return ERROR_NOT_READY;
0037c e59d00bc ldr r0, [sp, #0xBC]
00380 eb000000 bl |?AtapiIsUnitReadyEx@CPCIDiskAndCD@@QAAHXZ|
00384 e58d0054 str r0, [sp, #0x54]
00388 e59d3054 ldr r3, [sp, #0x54]
0038c e3530000 cmp r3, #0
00390 1a000002 bne |$L32114|
00394 e3a03015 mov r3, #0x15
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -