?? cdaudio.cod
字號:
; Listing generated by Microsoft (R) Optimizing Compiler Version 13.10.4091
TTL D:\WINCE500\PLATFORM\smdk2440\DRIVERS\atapi\.\cdaudio.cpp
CODE32
00000 AREA |.drectve|, DRECTVE
DCB "-defaultlib:coredll.lib "
DCB "-defaultlib:corelibc.lib "
EXPORT |?ControlAudio@CPCIDiskAndCD@@QAAKPAU_IOREQ@@@Z| ; CPCIDiskAndCD::ControlAudio
EXPORT |??_C@_1EA@PCEDIIOM@?$AAA?$AAT?$AAA?$AAP?$AAI?$AA?3?$AAP?$AAl?$AAa?$AAy?$AAA?$AAu?$AAd?$AAi?$AAo?$AAM?$AAS?$AAF?$AA?5?$AA?9@| [ DATA ] ; `string'
EXPORT |??_C@_1FA@IDFFGBMO@?$AAA?$AAT?$AAA?$AAP?$AAI?$AA?3?$AA?3?$AAP?$AAl?$AAa?$AAy?$AAA?$AAu?$AAd?$AAi?$AAo?$AAM?$AAS?$AAF?$AA?5@| [ DATA ] ; `string'
IMPORT |NKDbgPrintfW|
IMPORT |dpCurSettings|
IMPORT |?AtapiSendCommand@CPCIDiskAndCD@@QAAHPAU_ATAPI_COMMAND_PACKET@@GH@Z| ; CPCIDiskAndCD::AtapiSendCommand
IMPORT |?AtapiReceiveData@CPCIDiskAndCD@@QAAHPAU_SGX_BUF@@KPAK@Z| ; CPCIDiskAndCD::AtapiReceiveData
IMPORT |memset|
00000 AREA |.pdata|, PDATA
|$T32169| DCD |$L32168|
DCD 0x40010904
; File d:\wince500\platform\smdk2440\drivers\atapi\cdaudio.cpp
00000 AREA |.rdata| { |??_C@_1FA@IDFFGBMO@?$AAA?$AAT?$AAA?$AAP?$AAI?$AA?3?$AA?3?$AAP?$AAl?$AAa?$AAy?$AAA?$AAu?$AAd?$AAi?$AAo?$AAM?$AAS?$AAF?$AA?5@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1FA@IDFFGBMO@?$AAA?$AAT?$AAA?$AAP?$AAI?$AA?3?$AA?3?$AAP?$AAl?$AAa?$AAy?$AAA?$AAu?$AAd?$AAi?$AAo?$AAM?$AAS?$AAF?$AA?5@| DCB "A"
DCB 0x0, "T", 0x0, "A", 0x0, "P", 0x0, "I", 0x0, ":", 0x0, ":"
DCB 0x0, "P", 0x0, "l", 0x0, "a", 0x0, "y", 0x0, "A", 0x0, "u"
DCB 0x0, "d", 0x0, "i", 0x0, "o", 0x0, "M", 0x0, "S", 0x0, "F"
DCB 0x0, " ", 0x0, "f", 0x0, "a", 0x0, "i", 0x0, "l", 0x0, "e"
DCB 0x0, "d", 0x0, " ", 0x0, "o", 0x0, "n", 0x0, " ", 0x0, "r"
DCB 0x0, "e", 0x0, "c", 0x0, "e", 0x0, "i", 0x0, "v", 0x0, "e"
DCB 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1EA@PCEDIIOM@?$AAA?$AAT?$AAA?$AAP?$AAI?$AA?3?$AAP?$AAl?$AAa?$AAy?$AAA?$AAu?$AAd?$AAi?$AAo?$AAM?$AAS?$AAF?$AA?5?$AA?9@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1EA@PCEDIIOM@?$AAA?$AAT?$AAA?$AAP?$AAI?$AA?3?$AAP?$AAl?$AAa?$AAy?$AAA?$AAu?$AAd?$AAi?$AAo?$AAM?$AAS?$AAF?$AA?5?$AA?9@| DCB "A"
DCB 0x0, "T", 0x0, "A", 0x0, "P", 0x0, "I", 0x0, ":", 0x0, "P"
DCB 0x0, "l", 0x0, "a", 0x0, "y", 0x0, "A", 0x0, "u", 0x0, "d"
DCB 0x0, "i", 0x0, "o", 0x0, "M", 0x0, "S", 0x0, "F", 0x0, " "
DCB 0x0, "-", 0x0, " ", 0x0, "E", 0x0, "n", 0x0, "t", 0x0, "e"
DCB 0x0, "r", 0x0, "e", 0x0, "d", 0x0, ".", 0x0, 0xd, 0x0, 0xa
DCB 0x0, 0x0, 0x0 ; `string'
; Function compile flags: /Odt
00000 AREA |.text|, CODE, ARM
00000 |?ControlAudio@CPCIDiskAndCD@@QAAKPAU_IOREQ@@@Z| PROC ; CPCIDiskAndCD::ControlAudio
; 15 : {
00000 |$L32168|
00000 e1a0c00d mov r12, sp
00004 e92d0003 stmdb sp!, {r0, r1}
00008 e92d5000 stmdb sp!, {r12, lr}
0000c e24dd054 sub sp, sp, #0x54
00010 |$M32166|
; 16 : ATAPI_COMMAND_PACKET CmdPkt;
; 17 : DWORD dwError = ERROR_SUCCESS;
00010 e3a03000 mov r3, #0
00014 e58d3028 str r3, [sp, #0x28]
; 18 : SGX_BUF SgBuf;
; 19 : DWORD dwRet;
; 20 :
; 21 : DEBUGMSG(ZONE_IOCTL, (TEXT("ATAPI:PlayAudioMSF - Entered.\r\n")));
00018 e59f33fc ldr r3, [pc, #0x3FC]
0001c e5933440 ldr r3, [r3, #0x440]
00020 e3130040 tst r3, #0x40
00024 0a000004 beq |$L32160|
00028 e59f03f0 ldr r0, [pc, #0x3F0]
0002c eb000000 bl NKDbgPrintfW
00030 e3a03001 mov r3, #1
00034 e58d3040 str r3, [sp, #0x40]
00038 ea000001 b |$L32161|
0003c |$L32160|
0003c e3a03000 mov r3, #0
00040 e58d3040 str r3, [sp, #0x40]
00044 |$L32161|
; 22 :
; 23 : memset( (void *)&CmdPkt, 0, sizeof( CmdPkt));
00044 e3a02014 mov r2, #0x14
00048 e3a01000 mov r1, #0
0004c e28d0008 add r0, sp, #8
00050 eb000000 bl memset
; 24 :
; 25 : switch(pIOReq->dwCode) {
00054 e59d3060 ldr r3, [sp, #0x60]
00058 e2833014 add r3, r3, #0x14
0005c e5933000 ldr r3, [r3]
00060 e58d3044 str r3, [sp, #0x44]
00064 e59d2044 ldr r2, [sp, #0x44]
00068 e3a03909 mov r3, #9, 18
0006c e383300c orr r3, r3, #0xC
00070 e1520003 cmp r2, r3
00074 8a000014 bhi |$L32162|
00078 e59d2044 ldr r2, [sp, #0x44]
0007c e3a03909 mov r3, #9, 18
00080 e383300c orr r3, r3, #0xC
00084 e1520003 cmp r2, r3
00088 0a0000a5 beq |$L32138|
0008c e59d2044 ldr r2, [sp, #0x44]
00090 e3a03802 mov r3, #2, 16
00094 e3833080 orr r3, r3, #0x80
00098 e1520003 cmp r2, r3
0009c 0a000069 beq |$L32131|
000a0 e59d2044 ldr r2, [sp, #0x44]
000a4 e3a03909 mov r3, #9, 18
000a8 e3833004 orr r3, r3, #4
000ac e1520003 cmp r2, r3
000b0 0a000039 beq |$L32115|
000b4 e59d2044 ldr r2, [sp, #0x44]
000b8 e3a03909 mov r3, #9, 18
000bc e3833008 orr r3, r3, #8
000c0 e1520003 cmp r2, r3
000c4 0a000093 beq |$L32137|
000c8 ea00009e b |$L32106|
000cc |$L32162|
000cc e59d2044 ldr r2, [sp, #0x44]
000d0 e3a03909 mov r3, #9, 18
000d4 e3833010 orr r3, r3, #0x10
000d8 e1520003 cmp r2, r3
000dc 0a000095 beq |$L32139|
000e0 e59d2044 ldr r2, [sp, #0x44]
000e4 e3a03909 mov r3, #9, 18
000e8 e3833018 orr r3, r3, #0x18
000ec e1520003 cmp r2, r3
000f0 0a000000 beq |$L32109|
000f4 ea000093 b |$L32106|
000f8 |$L32109|
; 26 : case IOCTL_CDROM_PLAY_AUDIO_MSF:
; 27 : {
; 28 : PCDROM_PLAY_AUDIO_MSF pPlayMSF;
; 29 : pPlayMSF = (PCDROM_PLAY_AUDIO_MSF) pIOReq->pInBuf;
000f8 e59d3060 ldr r3, [sp, #0x60]
000fc e2833018 add r3, r3, #0x18
00100 e5933000 ldr r3, [r3]
00104 e58d302c str r3, [sp, #0x2C]
; 30 : if (!pPlayMSF || (sizeof(CDROM_PLAY_AUDIO_MSF) > pIOReq->dwInBufSize)) {
00108 e59d302c ldr r3, [sp, #0x2C]
0010c e3530000 cmp r3, #0
00110 0a000004 beq |$L32114|
00114 e59d3060 ldr r3, [sp, #0x60]
00118 e283301c add r3, r3, #0x1C
0011c e5933000 ldr r3, [r3]
00120 e3530006 cmp r3, #6
00124 2a000002 bcs |$L32113|
00128 |$L32114|
; 31 : dwError = ERROR_BAD_ARGUMENTS;
00128 e3a030a0 mov r3, #0xA0
0012c e58d3028 str r3, [sp, #0x28]
; 32 : break;
00130 ea000084 b |$L32106|
00134 |$L32113|
; 33 : }
; 34 : CmdPkt.Opcode = ATAPI_PACKET_CMD_PLAY_MSF;
00134 e3a03047 mov r3, #0x47
00138 e5cd3008 strb r3, [sp, #8]
; 35 : CmdPkt.Byte_3 = pPlayMSF->StartingM;
0013c e59d302c ldr r3, [sp, #0x2C]
00140 e5d33000 ldrb r3, [r3]
00144 e5cd300b strb r3, [sp, #0xB]
; 36 : CmdPkt.Byte_4 = pPlayMSF->StartingS;
00148 e59d302c ldr r3, [sp, #0x2C]
0014c e2833001 add r3, r3, #1
00150 e5d33000 ldrb r3, [r3]
00154 e5cd300c strb r3, [sp, #0xC]
; 37 : CmdPkt.Byte_5 = pPlayMSF->StartingF;
00158 e59d302c ldr r3, [sp, #0x2C]
0015c e2833002 add r3, r3, #2
00160 e5d33000 ldrb r3, [r3]
00164 e5cd300d strb r3, [sp, #0xD]
; 38 : CmdPkt.Byte_6 = pPlayMSF->EndingM;
00168 e59d302c ldr r3, [sp, #0x2C]
0016c e2833003 add r3, r3, #3
00170 e5d33000 ldrb r3, [r3]
00174 e5cd300e strb r3, [sp, #0xE]
; 39 : CmdPkt.Byte_7 = pPlayMSF->EndingS;
00178 e59d302c ldr r3, [sp, #0x2C]
0017c e2833004 add r3, r3, #4
00180 e5d33000 ldrb r3, [r3]
00184 e5cd300f strb r3, [sp, #0xF]
; 40 : CmdPkt.Byte_8 = pPlayMSF->EndingF;
00188 e59d302c ldr r3, [sp, #0x2C]
0018c e2833005 add r3, r3, #5
00190 e5d33000 ldrb r3, [r3]
00194 e5cd3010 strb r3, [sp, #0x10]
; 41 : }
; 42 : break;
00198 ea00006a b |$L32106|
0019c |$L32115|
; 43 : case IOCTL_CDROM_SEEK_AUDIO_MSF:
; 44 : {
; 45 : CDROM_SEEK_AUDIO_MSF *pSeekMSF = (CDROM_SEEK_AUDIO_MSF *) pIOReq->pInBuf;
0019c e59d3060 ldr r3, [sp, #0x60]
001a0 e2833018 add r3, r3, #0x18
001a4 e5933000 ldr r3, [r3]
001a8 e58d3030 str r3, [sp, #0x30]
; 46 : DWORD dwLBAAddr;
; 47 : if (!pSeekMSF || (sizeof(CDROM_SEEK_AUDIO_MSF) > pIOReq->dwInBufSize)) {
001ac e59d3030 ldr r3, [sp, #0x30]
001b0 e3530000 cmp r3, #0
001b4 0a000004 beq |$L32121|
001b8 e59d3060 ldr r3, [sp, #0x60]
001bc e283301c add r3, r3, #0x1C
001c0 e5933000 ldr r3, [r3]
001c4 e3530003 cmp r3, #3
001c8 2a000002 bcs |$L32120|
001cc |$L32121|
; 48 : dwError = ERROR_BAD_ARGUMENTS;
001cc e3a030a0 mov r3, #0xA0
001d0 e58d3028 str r3, [sp, #0x28]
; 49 : break;
001d4 ea00005b b |$L32106|
001d8 |$L32120|
; 50 : }
; 51 : dwLBAAddr = CDROM_MSFCOMP_TO_LBA( pSeekMSF->M, pSeekMSF->S, pSeekMSF->F);
001d8 e59d3030 ldr r3, [sp, #0x30]
001dc e5d33000 ldrb r3, [r3]
001e0 e1a01003 mov r1, r3
001e4 e3a0303c mov r3, #0x3C
001e8 e0020391 mul r2, r1, r3
001ec e59d3030 ldr r3, [sp, #0x30]
001f0 e2833001 add r3, r3, #1
001f4 e5d33000 ldrb r3, [r3]
001f8 e0821003 add r1, r2, r3
001fc e3a0304b mov r3, #0x4B
00200 e0020391 mul r2, r1, r3
00204 e59d3030 ldr r3, [sp, #0x30]
00208 e2833002 add r3, r3, #2
0020c e5d33000 ldrb r3, [r3]
00210 e0823003 add r3, r2, r3
00214 e2433096 sub r3, r3, #0x96
00218 e58d3034 str r3, [sp, #0x34]
; 52 : CmdPkt.Opcode = ATAPI_PACKET_CMD_SEEK;
0021c e3a0302b mov r3, #0x2B
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -