📄 diskmain.cod
字号:
00294 13a0eb02 movne lr, #2, 22
00298 |$L32968|
00298 e59036b4 ldr r3, [r0, #0x6B4]
0029c e580269c str r2, [r0, #0x69C]
002a0 e58046b0 str r4, [r0, #0x6B0]
002a4 e183300e orr r3, r3, lr
002a8 e58036b4 str r3, [r0, #0x6B4]
002ac e58016a0 str r1, [r0, #0x6A0]
002b0 |$L32904|
; 720 :
; 721 :
; 722 : DEBUGMSG( ZONE_INIT, (TEXT("ATAPI:AnalyzeDeviceCapabilities target %d transfer timing:\r\n"),m_dwDevice));
; 723 :
; 724 : //* * * CAMSDB03/30/04 - Added a '0x' for mode display in all the DEBUGMSG's below.
; 725 :
; 726 : DEBUGMSG( ZONE_INIT, (TEXT("ATAPI:AnalyzeDeviceCapabilities PIO mode supported = 0x%04x and best cycle time = %5d ns\r\n"),
; 727 : m_dwTransferModeSupported & PIO_SUPPORT,
; 728 : m_dwBestPioCycleTime));
; 729 : DEBUGMSG( ZONE_INIT, (TEXT("ATAPI:AnalyzeDeviceCapabilities SWDMA mode supported = 0x%04x and best cycle time = %5d ns\r\n"),
; 730 : m_dwTransferModeSupported & SWDMA_SUPPORT,
; 731 : m_dwBestSwDmaCycleTime));
; 732 : DEBUGMSG( ZONE_INIT, (TEXT("ATAPI:AnalyzeDeviceCapabilities MWDMA mode supported = 0x%04x and best cycle time = %5d ns\r\n"),
; 733 : m_dwTransferModeSupported & MWDMA_SUPPORT,
; 734 : m_dwBestSwDmaCycleTime));
; 735 : DEBUGMSG( ZONE_INIT, (TEXT("ATAPI:AnalyzeDeviceCapabilities UDMA mode supported = 0x%04x and best cycle time = %5d ns\r\n"),
; 736 : m_dwTransferModeSupported & UDMA_SUPPORT,
; 737 : m_dwBestUDmaCycleTime));
; 738 :
; 739 : //* * * CAMSDB03/30/04 - Uncommented the line below (START)
; 740 : DEBUGMSG( ZONE_INIT, (TEXT("ATAPI:AnalyzeDeviceCapabilities Current mode bitmap = %04x\r\n"),
; 741 : m_dwTransferModeCurrent));
; 742 : //* * * CAMSDB03/30/04 - Uncommented the line below (END)
; 743 :
; 744 : }
; 745 : } // AnalyzeDeviceCapabilities
002b0 e8bd41f0 ldmia sp!, {r4 - r8, lr}
002b4 e12fff1e bx lr
002b8 |$M33648|
ENDP ; |?AnalyzeDeviceCapabilities@CDisk@@QAAXXZ|, CDisk::AnalyzeDeviceCapabilities
EXPORT |?ValidateSg@CDisk@@CAHPAU_SG_REQ@@K@Z| ; CDisk::ValidateSg
IMPORT |MapCallerPtr|
00000 AREA |.text| { |?ValidateSg@CDisk@@CAHPAU_SG_REQ@@K@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?ValidateSg@CDisk@@CAHPAU_SG_REQ@@K@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?ValidateSg@CDisk@@CAHPAU_SG_REQ@@K@Z| } ; comdat associative
|$T33666| DCD |$L33665|
DCD 0x40002701
; Function compile flags: /Ogsy
00000 AREA |.text| { |?ValidateSg@CDisk@@CAHPAU_SG_REQ@@K@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?ValidateSg@CDisk@@CAHPAU_SG_REQ@@K@Z| PROC ; CDisk::ValidateSg
; 748 : {
00000 |$L33665|
00000 e92d4070 stmdb sp!, {r4 - r6, lr}
00004 |$M33663|
00004 e1a04000 mov r4, r0
; 749 : if (PSLGetCallerTrust()!= OEM_CERTIFY_TRUST) {
00008 e3a02000 mov r2, #0
0000c e2422b0e sub r2, r2, #0xE, 22
00010 e5923000 ldr r3, [r2]
00014 e5133014 ldr r3, [r3, #-0x14]
00018 e3130002 tst r3, #2
0001c 1a000018 bne |$L32993|
00020 e5923000 ldr r3, [r2]
00024 e5133018 ldr r3, [r3, #-0x18]
00028 e3530002 cmp r3, #2
0002c 0a000014 beq |$L32993|
; 750 : if (pSgReq && InBufLen >= (sizeof(SG_REQ) + sizeof(SG_BUF) * (pSgReq->sr_num_sg - 1))) {
00030 e3540000 cmp r4, #0
00034 0a000015 beq |$L32986|
00038 e5942008 ldr r2, [r4, #8]
0003c e2423001 sub r3, r2, #1
00040 e1a03183 mov r3, r3, lsl #3
00044 e283301c add r3, r3, #0x1C
00048 e1510003 cmp r1, r3
0004c 3a00000f bcc |$L32986|
; 751 : DWORD dwIndex;
; 752 : for (dwIndex=0; dwIndex < pSgReq -> sr_num_sg; dwIndex++) {
00050 e3a06000 mov r6, #0
00054 e3520000 cmp r2, #0
00058 0a000009 beq |$L32993|
0005c e1a05004 mov r5, r4
00060 |$L32988|
; 753 : pSgReq->sr_sglist[dwIndex].sb_buf =
; 754 : (PUCHAR)MapCallerPtr((LPVOID)pSgReq->sr_sglist[dwIndex].sb_buf,pSgReq->sr_sglist[dwIndex].sb_len);
00060 e5951018 ldr r1, [r5, #0x18]
00064 e5950014 ldr r0, [r5, #0x14]
00068 eb000000 bl MapCallerPtr
0006c e5850014 str r0, [r5, #0x14]
00070 e5943008 ldr r3, [r4, #8]
00074 e2866001 add r6, r6, #1
00078 e2855008 add r5, r5, #8
0007c e1560003 cmp r6, r3
00080 3afffff6 bcc |$L32988|
00084 |$L32993|
; 759 : }
; 760 : return TRUE;
00084 e3a00001 mov r0, #1
; 761 : }
00088 e8bd4070 ldmia sp!, {r4 - r6, lr}
0008c e12fff1e bx lr
00090 |$L32986|
; 755 : }
; 756 : }
; 757 : else // Parameter Wrong.
; 758 : return FALSE;
00090 e3a00000 mov r0, #0
; 761 : }
00094 e8bd4070 ldmia sp!, {r4 - r6, lr}
00098 e12fff1e bx lr
0009c |$M33664|
ENDP ; |?ValidateSg@CDisk@@CAHPAU_SG_REQ@@K@Z|, CDisk::ValidateSg
EXPORT |?ValidateSg@CDisk@@CAHPAUCDROM_READ@@K@Z| ; CDisk::ValidateSg
00000 AREA |.text| { |?ValidateSg@CDisk@@CAHPAUCDROM_READ@@K@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?ValidateSg@CDisk@@CAHPAUCDROM_READ@@K@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?ValidateSg@CDisk@@CAHPAUCDROM_READ@@K@Z| } ; comdat associative
|$T33682| DCD |$L33681|
DCD 0x40004301
; Function compile flags: /Ogsy
00000 AREA |.text| { |?ValidateSg@CDisk@@CAHPAUCDROM_READ@@K@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?ValidateSg@CDisk@@CAHPAUCDROM_READ@@K@Z| PROC ; CDisk::ValidateSg
; 763 : {
00000 |$L33681|
00000 e92d41f0 stmdb sp!, {r4 - r8, lr}
00004 |$M33679|
00004 e1a06000 mov r6, r0
; 764 : if (PSLGetCallerTrust()!= OEM_CERTIFY_TRUST) {
00008 e3a02000 mov r2, #0
0000c e2422b0e sub r2, r2, #0xE, 22
00010 e5923000 ldr r3, [r2]
00014 e5133014 ldr r3, [r3, #-0x14]
00018 e3130002 tst r3, #2
0001c 1a000034 bne |$L33012|
00020 e5923000 ldr r3, [r2]
00024 e5133018 ldr r3, [r3, #-0x18]
00028 e3530002 cmp r3, #2
0002c 0a000030 beq |$L33012|
; 765 : if (pCdrom && InBufLen >= (sizeof(CDROM_READ) + sizeof(SGX_BUF) * (pCdrom->sgcount - 1))) {
00030 e3560000 cmp r6, #0
00034 0a000031 beq |$L33005|
00038 e5d64014 ldrb r4, [r6, #0x14]
0003c e5d63015 ldrb r3, [r6, #0x15]
00040 e5d62016 ldrb r2, [r6, #0x16]
00044 e5d6e017 ldrb lr, [r6, #0x17]
00048 e1843403 orr r3, r4, r3, lsl #8
0004c e1833802 orr r3, r3, r2, lsl #16
00050 e1832c0e orr r2, r3, lr, lsl #24
00054 e2823003 add r3, r2, #3
00058 e1510183 cmp r1, r3, lsl #3
0005c 3a000027 bcc |$L33005|
; 766 : DWORD dwIndex;
; 767 : for (dwIndex=0; dwIndex < pCdrom-> sgcount; dwIndex++) {
00060 e3a08000 mov r8, #0
00064 e3520000 cmp r2, #0
00068 0a000021 beq |$L33012|
0006c e1a07006 mov r7, r6
00070 |$L33007|
; 768 : pCdrom->sglist[dwIndex].sb_buf =
; 769 : (PUCHAR)MapCallerPtr((LPVOID)pCdrom->sglist[dwIndex].sb_buf,pCdrom->sglist[dwIndex].sb_len);
00070 e5d7001c ldrb r0, [r7, #0x1C]
00074 e5d7201d ldrb r2, [r7, #0x1D]
00078 e5d71018 ldrb r1, [r7, #0x18]
0007c e5d73019 ldrb r3, [r7, #0x19]
00080 e5d7401e ldrb r4, [r7, #0x1E]
00084 e5d7501a ldrb r5, [r7, #0x1A]
00088 e1802402 orr r2, r0, r2, lsl #8
0008c e5d7001f ldrb r0, [r7, #0x1F]
00090 e5d7e01b ldrb lr, [r7, #0x1B]
00094 e1811403 orr r1, r1, r3, lsl #8
00098 e1823804 orr r3, r2, r4, lsl #16
0009c e1812805 orr r2, r1, r5, lsl #16
000a0 e1831c00 orr r1, r3, r0, lsl #24
000a4 e1820c0e orr r0, r2, lr, lsl #24
000a8 eb000000 bl MapCallerPtr
000ac e1a03420 mov r3, r0, lsr #8
000b0 e1a02820 mov r2, r0, lsr #16
000b4 e1a01c20 mov r1, r0, lsr #24
000b8 e5c73019 strb r3, [r7, #0x19]
000bc e5c7201a strb r2, [r7, #0x1A]
000c0 e5c7101b strb r1, [r7, #0x1B]
000c4 e5c70018 strb r0, [r7, #0x18]
000c8 e5d60014 ldrb r0, [r6, #0x14]
000cc e5d63015 ldrb r3, [r6, #0x15]
000d0 e5d62016 ldrb r2, [r6, #0x16]
000d4 e5d61017 ldrb r1, [r6, #0x17]
000d8 e1803403 orr r3, r0, r3, lsl #8
000dc e1833802 orr r3, r3, r2, lsl #16
000e0 e1833c01 orr r3, r3, r1, lsl #24
000e4 e2888001 add r8, r8, #1
000e8 e1580003 cmp r8, r3
000ec e2877008 add r7, r7, #8
000f0 3affffde bcc |$L33007|
000f4 |$L33012|
; 774 : }
; 775 : return TRUE;
000f4 e3a00001 mov r0, #1
; 776 : }
000f8 e8bd41f0 ldmia sp!, {r4 - r8, lr}
000fc e12fff1e bx lr
00100 |$L33005|
; 770 : }
; 771 : }
; 772 : else // Parameter Wrong.
; 773 : return FALSE;
00100 e3a00000 mov r0, #0
; 776 : }
00104 e8bd41f0 ldmia sp!, {r4 - r8, lr}
00108 e12fff1e bx lr
0010c |$M33680|
ENDP ; |?ValidateSg@CDisk@@CAHPAUCDROM_READ@@K@Z|, CDisk::ValidateSg
EXPORT |?PostInit@CDisk@@QAAHPAU_POST_INIT_BUF@@@Z| ; CDisk::PostInit
00000 AREA |.text| { |?PostInit@CDisk@@QAAHPAU_POST_INIT_BUF@@@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?PostInit@CDisk@@QAAHPAU_POST_INIT_BUF@@@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?PostInit@CDisk@@QAAHPAU_POST_INIT_BUF@@@Z| } ; comdat associative
|$T33695| DCD |$L33694|
DCD 0x40000500
; Function compile flags: /Ogsy
00000 AREA |.text| { |?PostInit@CDisk@@QAAHPAU_POST_INIT_BUF@@@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?PostInit@CDisk@@QAAHPAU_POST_INIT_BUF@@@Z| PROC ; CDisk::PostInit
; 919 : {
00000 |$L33694|
00000 |$M33692|
00000 e1a02000 mov r2, r0
; 920 : DWORD dwError=ERROR_SUCCESS;
; 921 :
; 922 : DEBUGMSG( ZONEID_INIT, (TEXT("ATAPI: PostInit ( Device :0x%x) \r\n"),m_dwDeviceId));
; 923 : m_hDevice = pPostInitBuf->p_hDevice;
00004 e5913000 ldr r3, [r1]
; 924 : return dwError == ERROR_SUCCESS;
00008 e3a00001 mov r0, #1
0000c e5823014 str r3, [r2, #0x14]
; 925 : }
00010 e12fff1e bx lr
00014 |$M33693|
ENDP ; |?PostInit@CDisk@@QAAHPAU_POST_INIT_BUF@@@Z|, CDisk::PostInit
EXPORT |?GetDiskInfo@CDisk@@QAAKPAU_IOREQ@@@Z| ; CDisk::GetDiskInfo
IMPORT |memcpy|
IMPORT |__C_specific_handler|
; File d:\wince500\platform\bvdmain\drivers\atapi\diskmain.h
00000 AREA |.text| { |?GetDiskInfo@CDisk@@QAAKPAU_IOREQ@@@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.xdata$$?GetDiskInfo@CDisk@@QAAKPAU_IOREQ@@@Z|, DATA, SELECTION=5, ASSOC=|.text| { |?GetDiskInfo@CDisk@@QAAKPAU_IOREQ@@@Z| } ; comdat associative
|$T33727| DCD 0x1
DCD |$L33704|
DCD |$L33705|
DCD |$L33700|
DCD |$L33701|
00000 AREA |.text| { |?GetDiskInfo@CDisk@@QAAKPAU_IOREQ@@@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?GetDiskInfo@CDisk@@QAAKPAU_IOREQ@@@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?GetDiskInfo@CDisk@@QAAKPAU_IOREQ@@@Z| } ; comdat associative
|$T33729| DCD |$L33728|
DCD 0xc0002d04
00000 AREA |.text| { |?GetDiskInfo@CDisk@@QAAKPAU_IOREQ@@@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?GetDiskInfo@CDisk@@QAAKPAU_IOREQ@@@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?GetDiskInfo@CDisk@@QAAKPAU_IOREQ@@@Z| } ; comdat associative
|$T33731| DCD |$L33700|
DCD 0x40000200
; Function compile flags: /Ogsy
; File d:\wince500\platform\bvdmain\drivers\atapi\diskmain.cpp
00000 AREA |.text| { |?GetDiskInfo@CDisk@@QAAKPAU_IOREQ@@@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 00000000 DCD |__C_specific_handler|
00004 00000000 DCD |$T33727|
00008 |?GetDiskInfo@CDisk@@QAAKPAU_IOREQ@@@Z| PROC ; CDisk::GetDiskInfo
; 929 : {
00008 |$L33728|
00008 e1a0c00d mov r12, sp
0000c e92d5870 stmdb sp!, {r4 - r6, r11, r12, lr}
00010 e28db018 add r11, sp, #0x18
00014 e24dd004 sub sp, sp, #4
00018 |$L33725|
00018 e1a05001 mov r5, r1
; 930 : DWORD dwError = ERROR_SUCCESS;
; 931 : DISK_INFO *pInfo = NULL;
; 932 :
; 933 : // The Call can come in three flavors (BC). Just inbuf is specified, outbuf is specified or both. If both then outbuf is used
; 934 : if (pIOReq->pInBuf) {
0001c e5953018 ldr r3, [r5, #0x18]
00020 e3a04000 mov r4, #0
00024 e3a06000 mov r6, #0
00028 e1b02003 movs r2, r3
0002c 0a000003 beq |$L33065|
; 935 : if (pIOReq->dwInBufSize != sizeof(DISK_INFO))
00030 e595301c ldr r3, [r5, #0x1C]
00034 e3530018 cmp r3, #0x18
; 936 : return ERROR_INVALID_PARAMETER;
00038 1a000009 bne |$L33723|
; 937 : pInfo = (DISK_INFO *)pIOReq->pInBuf;
0003c e1a06002 mov r6, r2
00040 |$L33065|
; 938 : }
; 939 :
; 940
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -