📄 atamain.cod
字号:
00000 AREA |.pdata$$?AtaIsValidDisk@@YAHPAVCDisk@@@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?AtaIsValidDisk@@YAHPAVCDisk@@@Z| } ; comdat associative
|$T33447| DCD |$L33446|
DCD 0x40000d00
; Function compile flags: /Ogsy
00000 AREA |.text| { |?AtaIsValidDisk@@YAHPAVCDisk@@@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?AtaIsValidDisk@@YAHPAVCDisk@@@Z| PROC ; AtaIsValidDisk
; 378 : {
00000 |$L33446|
00000 |$M33444|
; 379 : CDisk *pTemp = g_pDiskRoot;
00000 e59f3028 ldr r3, [pc, #0x28]
00004 e5933000 ldr r3, [r3]
00008 ea000002 b |$L33443|
0000c |$L33038|
; 380 : while(pTemp) {
; 381 : if (pTemp == pDisk)
0000c e1530000 cmp r3, r0
00010 0a000004 beq |$L33437|
; 383 : pTemp = pTemp->m_pNextDisk;
00014 e593300c ldr r3, [r3, #0xC]
00018 |$L33443|
00018 e3530000 cmp r3, #0
0001c 1afffffa bne |$L33038|
; 384 : }
; 385 : return FALSE;
00020 e3a00000 mov r0, #0
; 386 : }
00024 e12fff1e bx lr
00028 |$L33437|
; 382 : return TRUE;
00028 e3a00001 mov r0, #1
; 386 : }
0002c e12fff1e bx lr
00030 |$L33449|
00030 00000000 DCD |?g_pDiskRoot@@3PAVCDisk@@A|
00034 |$M33445|
ENDP ; |?AtaIsValidDisk@@YAHPAVCDisk@@@Z|, AtaIsValidDisk
EXPORT |DSK_Init|
EXPORT |??_C@_1DO@OJOELLHC@?$AAI?$AAD?$AAE?$AA?5?$AAD?$AAS?$AAK?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?5?$AAA?$AAc?$AAt?$AAi?$AAv?$AAe?$AAK@| [ DATA ] ; `string'
EXPORT |??_C@_1CG@COODOPE@?$AAI?$AAD?$AAE?$AA?5?$AAD?$AAS?$AAK?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?9?$AA?9?$AA?9?$AA?9?$AA?$AN?$AA?6?$AA?$AA@| [ DATA ] ; `string'
EXPORT |??_C@_1EC@DIHLFDEB@?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9@| [ DATA ] ; `string'
EXPORT |??_C@_1CC@CNGNFKEG@?$AAI?$AAD?$AAE?$AA?5?$AAr?$AAe?$AAs?$AAe?$AAt?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?$AN?$AA?6?$AA?$AA@| [ DATA ] ; `string'
EXPORT |??_C@_1CO@KOAMLMDG@?$AAD?$AAS?$AAK?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9@| [ DATA ] ; `string'
EXPORT |??_C@_1BO@JFNKJLCM@?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?$AN?$AA?6?$AA?$AA@| [ DATA ] ; `string'
EXPORT |??_C@_1DA@KGFEKKNL@?$AA?5?$AA?$DO?$AA?$DO?$AA?$DO?$AA?$DO?$AA?$DO?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AAp?$AAD?$AAi?$AAs?$AAk?$AA?$DN?$AA0?$AAx?$AA?$CF@| [ DATA ] ; `string'
IMPORT |?Init@CEP931xPort@@QAAHXZ| ; CEP931xPort::Init
IMPORT |??0CEP931xDisk@@QAA@PAVCEP931xPort@@PAUHKEY__@@@Z| ; CEP931xDisk::CEP931xDisk
IMPORT |??2@YAPAXI@Z| ; operator new
IMPORT |RegCloseKey|
IMPORT |EnterCriticalSection|
IMPORT |LeaveCriticalSection|
; File d:\wince500\platform\bvdmain\drivers\atapi\diskmain.h
00000 AREA |.text| { |DSK_Init| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$DSK_Init|, PDATA, SELECTION=5, ASSOC=|.text| { |DSK_Init| } ; comdat associative
|$T33505| DCD |$L33504|
DCD 0x40008902
00000 AREA |.rdata| { |??_C@_1BO@JFNKJLCM@?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?$AN?$AA?6?$AA?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1BO@JFNKJLCM@?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?$AN?$AA?6?$AA?$AA@| DCB "-"
DCB 0x0, "-", 0x0, "-", 0x0, "-", 0x0, "-", 0x0, "-", 0x0, "-"
DCB 0x0, "-", 0x0, "-", 0x0, "-", 0x0, "-", 0x0, "-", 0x0, 0xd
DCB 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1DA@KGFEKKNL@?$AA?5?$AA?$DO?$AA?$DO?$AA?$DO?$AA?$DO?$AA?$DO?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AAp?$AAD?$AAi?$AAs?$AAk?$AA?$DN?$AA0?$AAx?$AA?$CF@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1DA@KGFEKKNL@?$AA?5?$AA?$DO?$AA?$DO?$AA?$DO?$AA?$DO?$AA?$DO?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AAp?$AAD?$AAi?$AAs?$AAk?$AA?$DN?$AA0?$AAx?$AA?$CF@| DCB " "
DCB 0x0, ">", 0x0, ">", 0x0, ">", 0x0, ">", 0x0, ">", 0x0, "-"
DCB 0x0, "-", 0x0, "-", 0x0, "-", 0x0, "-", 0x0, "p", 0x0, "D"
DCB 0x0, "i", 0x0, "s", 0x0, "k", 0x0, "=", 0x0, "0", 0x0, "x"
DCB 0x0, "%", 0x0, "x", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1CO@KOAMLMDG@?$AAD?$AAS?$AAK?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1CO@KOAMLMDG@?$AAD?$AAS?$AAK?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9@| DCB "D"
DCB 0x0, "S", 0x0, "K", 0x0, "_", 0x0, "I", 0x0, "n", 0x0, "i"
DCB 0x0, "t", 0x0, " ", 0x0, "f", 0x0, "a", 0x0, "i", 0x0, "l"
DCB 0x0, "e", 0x0, "d", 0x0, "-", 0x0, "-", 0x0, "-", 0x0, "-"
DCB 0x0, "-", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1CC@CNGNFKEG@?$AAI?$AAD?$AAE?$AA?5?$AAr?$AAe?$AAs?$AAe?$AAt?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?$AN?$AA?6?$AA?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1CC@CNGNFKEG@?$AAI?$AAD?$AAE?$AA?5?$AAr?$AAe?$AAs?$AAe?$AAt?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?$AN?$AA?6?$AA?$AA@| DCB "I"
DCB 0x0, "D", 0x0, "E", 0x0, " ", 0x0, "r", 0x0, "e", 0x0, "s"
DCB 0x0, "e", 0x0, "t", 0x0, "-", 0x0, "-", 0x0, "-", 0x0, "-"
DCB 0x0, "-", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1DO@OJOELLHC@?$AAI?$AAD?$AAE?$AA?5?$AAD?$AAS?$AAK?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?5?$AAA?$AAc?$AAt?$AAi?$AAv?$AAe?$AAK@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1DO@OJOELLHC@?$AAI?$AAD?$AAE?$AA?5?$AAD?$AAS?$AAK?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?5?$AAA?$AAc?$AAt?$AAi?$AAv?$AAe?$AAK@| DCB "I"
DCB 0x0, "D", 0x0, "E", 0x0, " ", 0x0, "D", 0x0, "S", 0x0, "K"
DCB 0x0, "_", 0x0, "I", 0x0, "n", 0x0, "i", 0x0, "t", 0x0, " "
DCB 0x0, "A", 0x0, "c", 0x0, "t", 0x0, "i", 0x0, "v", 0x0, "e"
DCB 0x0, "K", 0x0, "e", 0x0, "y", 0x0, "=", 0x0, " ", 0x0, "%"
DCB 0x0, "s", 0x0, 0xd, 0x0, 0xa, 0x0, 0xd, 0x0, 0xa, 0x0, 0x0
DCB 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1CG@COODOPE@?$AAI?$AAD?$AAE?$AA?5?$AAD?$AAS?$AAK?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?9?$AA?9?$AA?9?$AA?9?$AA?$AN?$AA?6?$AA?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1CG@COODOPE@?$AAI?$AAD?$AAE?$AA?5?$AAD?$AAS?$AAK?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?9?$AA?9?$AA?9?$AA?9?$AA?$AN?$AA?6?$AA?$AA@| DCB "I"
DCB 0x0, "D", 0x0, "E", 0x0, " ", 0x0, "D", 0x0, "S", 0x0, "K"
DCB 0x0, "_", 0x0, "I", 0x0, "n", 0x0, "i", 0x0, "t", 0x0, "-"
DCB 0x0, "-", 0x0, "-", 0x0, "-", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0
DCB 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1EC@DIHLFDEB@?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1EC@DIHLFDEB@?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9?$AA?9@| DCB "-"
DCB 0x0, "-", 0x0, "-", 0x0, "-", 0x0, "-", 0x0, "-", 0x0, "-"
DCB 0x0, "-", 0x0, "-", 0x0, "-", 0x0, "-", 0x0, "-", 0x0, "-"
DCB 0x0, "-", 0x0, "-", 0x0, "-", 0x0, "-", 0x0, "-", 0x0, "-"
DCB 0x0, "-", 0x0, "-", 0x0, "-", 0x0, "-", 0x0, "-", 0x0, "-"
DCB 0x0, "-", 0x0, "-", 0x0, "-", 0x0, "-", 0x0, "-", 0x0, 0xd
DCB 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
; Function compile flags: /Ogsy
; File d:\wince500\platform\bvdmain\drivers\atapi\atamain.cpp
00000 AREA |.text| { |DSK_Init| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |DSK_Init| PROC
; 414 : {
00000 |$L33504|
00000 e92d41f0 stmdb sp!, {r4 - r8, lr}
00004 e24dd00c sub sp, sp, #0xC
00008 |$M33502|
00008 e1a07000 mov r7, r0
; 415 : PTSTR szActiveKey = (PTSTR)dwContext;
; 416 : DWORD dwHandle = 0;
; 417 : HKEY hActiveKey;
; 418 : CDisk *pDisk = NULL;
; 419 : DWORD dwError = ERROR_SUCCESS;
; 420 :
; 421 : int i ;
; 422 :
; 423 : // typedef U16 unsigned int ;
; 424 :
; 425 :
; 426 : DEBUGMSG( ZONE_MAIN, (TEXT("ATAPI: DSK_Init ActiveKey = %s\r\n"), szActiveKey));
; 427 : EnterCriticalSection( &g_csMain);
0000c e59f620c ldr r6, [pc, #0x20C]
00010 e3a05000 mov r5, #0
00014 e1a00006 mov r0, r6
00018 eb000000 bl EnterCriticalSection
; 428 :
; 429 :
; 430 : RETAILMSG(1,(TEXT("IDE DSK_Init ActiveKey= %s\r\n\r\n"),szActiveKey));
0001c e59f01f8 ldr r0, [pc, #0x1F8]
00020 e1a01007 mov r1, r7
00024 eb000000 bl NKDbgPrintfW
; 431 : RETAILMSG(1,(TEXT("IDE DSK_Init----\r\n")));
00028 e59f01e8 ldr r0, [pc, #0x1E8]
0002c eb000000 bl NKDbgPrintfW
; 432 :
; 433 :
; 434 : //liudiping------------------
; 435 : RETAILMSG(1,(TEXT("------------------------------\r\n")));
00030 e59f01dc ldr r0, [pc, #0x1DC]
00034 eb000000 bl NKDbgPrintfW
; 436 : RETAILMSG(1,(TEXT("------------------------------\r\n")));
00038 e59f01d4 ldr r0, [pc, #0x1D4]
0003c eb000000 bl NKDbgPrintfW
; 437 : RETAILMSG(1,(TEXT("------------------------------\r\n")));
00040 e59f01cc ldr r0, [pc, #0x1CC]
00044 eb000000 bl NKDbgPrintfW
; 438 :
; 439 : //IdeHardReset();
; 440 : //GetIdeInfo();
; 441 :
; 442 :
; 443 : //
; 444 : // Create only one instance of the port class.
; 445 : //
; 446 : if(!g_pPort)
00048 e5963098 ldr r3, [r6, #0x98]
0004c e3530000 cmp r3, #0
00050 1a00001a bne |$L33490|
; 447 : {
; 448 : BOOL bRet;
; 449 : g_pPort = new CEP931xPort();
00054 e3a00054 mov r0, #0x54
00058 eb000000 bl |??2@YAPAXI@Z|
0005c e1b04000 movs r4, r0
00060 0a000009 beq |$L33463|
00064 e3a0320b mov r3, #0xB, 4
00068 e3833c01 orr r3, r3, #1, 24
0006c e3a02000 mov r2, #0
00070 e2840010 add r0, r4, #0x10
00074 e584300c str r3, [r4, #0xC]
00078 e5842000 str r2, [r4]
0007c e5842004 str r2, [r4, #4]
00080 e5842024 str r2, [r4, #0x24]
00084 eb000000 bl InitializeCriticalSection
00088 ea000000 b |$L33501|
0008c |$L33463|
0008c e3a04000 mov r4, #0
00090 |$L33501|
00090 e5864098 str r4, [r6, #0x98]
; 450 :
; 451 : //
; 452 : // Initialize the port data structure.
; 453 : //
; 454 : if(g_pPort)
00094 e3540000 cmp r4, #0
00098 0a000003 beq |$L33492|
; 455 : {
; 456 : bRet = g_pPort->Init();
0009c e1a00004 mov r0, r4
000a0 eb000000 bl |?Init@CEP931xPort@@QAAHXZ|
000a4 e5964098 ldr r4, [r6, #0x98]
000a8 ea000000 b |$L33060|
000ac |$L33492|
000ac e59d0008 ldr r0, [sp, #8]
000b0 |$L33060|
; 457 : }
; 458 :
; 459 : //
; 460 : // Make sure that the port classs Initialized correctly
; 461 : //
; 462 : if(!bRet && g_pPort)
000b0 e3500000 cmp r0, #0
000b4 1a000001 bne |$L33490|
000b8 e3540000 cmp r4, #0
; 463 : {
; 464 : dwError = ERROR_NOT_ENOUGH_MEMORY;
; 465 : }
; 466 : }
; 467 :
; 468 :
; 469 :
; 470 : if(ERROR_SUCCESS == dwError)
000bc 1a000042 bne |$L33065|
000c0 |$L33490|
; 471 : {
; 472 : //RETAILMSG(1,(TEXT("IDE 22-----\r\n")));
; 473 : dwError = RegOpenKeyEx( HKEY_LOCAL_MACHINE, szActiveKey, 0, 0, &hActiveKey);
000c0 e28d3004 add r3, sp, #4
000c4 e58d3000 str r3, [sp]
000c8 e3a03000 mov r3, #0
000cc e3a02000 mov r2, #0
000d0 e1a01007 mov r1, r7
000d4 e3a0010a mov r0, #0xA, 2
000d8 eb000000 bl RegOpenKeyExW
000dc e3500000 cmp r0, #0
; 474 : }
; 475 :
; 476 : if (ERROR_SUCCESS == dwError)
000e0 1a000039 bne |$L33065|
; 477 : {
; 478 : PTSTR szDevKey = NULL;
; 479 : HKEY hDevKey;
; 480 : DUMPREGKEY( ZONE_INIT, szActiveKey, hActiveKey);
; 481 :
; 482 : //RETAILMSG(1,(TEXT("IDE 1-----\r\n")));
; 483 :
; 484 : if (hDevKey = AtaLoadRegKey( hActiveKey, &szDevKey))
000e4 e59d0004 ldr r0, [sp, #4]
000e8 e3a03000 mov r3, #0
000ec e28d1008 add r1, sp, #8
000f0 e58d3008 str r3, [sp, #8]
000f4 eb000000 bl |?AtaLoadRegKey@@YAPAUHKEY__@@PAU1@PAPAG@Z|
000f8 e59d4008 ldr r4, [sp, #8]
000fc e1b08000 movs r8, r0
00100 0a00002c beq |$L33078|
; 485 : {
; 486 : DWORD dwLen = sizeof(DWORD);
; 487 : DUMPREGKEY( ZONE_INIT, szDevKey, hDevKey);
; 488 : TCHAR *szObject=NULL;
; 489 : POBJECTFUNCTION pObject = NULL;
; 490 : pDisk = new CEP931xDisk( g_pPort, hDevKey);
00104 e3a00e72 mov r0, #0x72, 28
00108 e3800008 orr r0, r0, #8
0010c eb000000 bl |??2@YAPAXI@Z|
00110 e3500000 cmp r0, #0
00114 0a000004 beq |$L33466|
00118 e5961098 ldr r1, [r6, #0x98]
0011c e1a02008 mov r2, r8
00120 eb000000 bl |??0CEP931xDisk@@QAA@PAVCEP931xPort@@PAUHKEY__@@@Z|
00124 e1a05000 mov r5, r0
00128 ea000000 b |$L33467|
0012c |$L33466|
0012c e3a05000 mov r5, #0
00130 |$L33467|
; 491 :
; 492 : //
; 493 : // Just check again that this is ok.
; 494 : //
; 495 : if (pDisk && szActiveKey && szDevKey)
00130 e3550000 cmp r5, #0
00134 0a00001f beq |$L33078|
00138 e3570000 cmp r7, #0
0013c 0a00001d beq |$L33078|
00140 e3540000 cmp r4, #0
00144 0a00001e beq |$L33082|
; 496 : {
; 497 : pDisk->SetActiveKey(szActiveKey);
00148 e1a01007 mov r1, r7
0014c e2850034 add r0, r5, #0x34
00150 eb000000 bl wcscpy
; 498 : pDisk->SetDeviceKey(szDevKey);
00154 e1a01004 mov r1, r4
00158 e2850f8f add r0, r5, #0x8F, 30
0015c eb000000 bl wcscpy
; 499 :
; 500 : //
; 501 : // Go head and setup the chain so in case AtaIsValidDisk is accessed
; 502 : //
; 503 : pDisk->m_pNextDisk = g_pDiskRoot;
00160 e596309c ldr r3, [r6, #0x9C]
; 504 : g_pDiskRoot = pDisk;
; 505 : if (pDisk->Init( hActiveKey))
00164 e1a00005 mov r0, r5
00168 e585300c str r3, [r5, #0xC]
0016c e586509c str r5, [r6, #0x9C]
00170 e5953000 ldr r3, [r5]
00174 e59d1004 ldr r1, [sp, #4]
00178 e5933004 ldr r3, [r3, #4]
0017c e1a0e00f mov lr, pc
00180 e12fff13 bx r3
00184 e3500000 cmp r0, #0
00188 1a00000a bne |$L33078|
; 506 : {
; 507 : //RETAILMSG(1,(TEXT("pDisk->Init>>> \r\n")));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -