⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 oemioctl.cod

📁 EP9315的BSP包(WINCE下的BSP,内有各种驱动的详细的代码)
💻 COD
📖 第 1 页 / 共 5 页
字号:
; 449  : 
; 450  :         SetLastError(ERROR_INVALID_PARAMETER);

  003b4	e59f1758	 ldr       r1, [pc, #0x758]
  003b8	e3a00057	 mov       r0, #0x57
  003bc	e1a0e00f	 mov       lr, pc
  003c0	e12fff11	 bx        r1

; 620  :         return(FALSE);

  003c4	e3a00000	 mov       r0, #0
  003c8	ea0001cb	 b         |$L14784|
  003cc		 |$L14819|

; 156  :         }
; 157  : 
; 158  :         break;
; 159  : 
; 160  :     case IOCTL_PROCESSOR_INFORMATION:
; 161  :         if (!lpOutBuf) {

  003cc	e3580000	 cmp       r8, #0
  003d0	1a000005	 bne       |$L14820|

; 162  :             SetLastError(ERROR_INVALID_PARAMETER);

  003d4	e59f1738	 ldr       r1, [pc, #0x738]
  003d8	e3a00057	 mov       r0, #0x57
  003dc	e1a0e00f	 mov       lr, pc
  003e0	e12fff11	 bx        r1

; 620  :         return(FALSE);

  003e4	e3a00000	 mov       r0, #0
  003e8	ea0001c3	 b         |$L14784|
  003ec		 |$L14820|

; 163  :             return FALSE;
; 164  :         }
; 165  : 
; 166  :         if (sizeof(PROCESSOR_INFO) > nOutBufSize) {

  003ec	e59d0050	 ldr       r0, [sp, #0x50]
  003f0	e3500d09	 cmp       r0, #9, 26
  003f4	2a000005	 bcs       |$L14824|

; 167  :             SetLastError(ERROR_INSUFFICIENT_BUFFER);

  003f8	e59f1714	 ldr       r1, [pc, #0x714]
  003fc	e3a0007a	 mov       r0, #0x7A
  00400	e1a0e00f	 mov       lr, pc
  00404	e12fff11	 bx        r1

; 620  :         return(FALSE);

  00408	e3a00000	 mov       r0, #0
  0040c	ea0001ba	 b         |$L14784|
  00410		 |$L14824|

; 168  :             return FALSE;
; 169  :         } else {
; 170  :             const WCHAR OEMProcCore[] = L"ARM";

  00410	e59f1780	 ldr       r1, [pc, #0x780]

; 171  :             const WCHAR OEMProcName[] = L"ARM920T";

  00414	e3a02010	 mov       r2, #0x10
  00418	e5910000	 ldr       r0, [r1]
  0041c	e5911004	 ldr       r1, [r1, #4]
  00420	e58d0004	 str       r0, [sp, #4]
  00424	e28d000c	 add       r0, sp, #0xC
  00428	e58d1008	 str       r1, [sp, #8]
  0042c	e59f1760	 ldr       r1, [pc, #0x760]
  00430	eb000000	 bl        memcpy

; 172  :             const WCHAR OEMProcVendor[] = L"ARM Ltd.";

  00434	e59f1754	 ldr       r1, [pc, #0x754]
  00438	e28d001c	 add       r0, sp, #0x1C
  0043c	e3a02012	 mov       r2, #0x12
  00440	eb000000	 bl        memcpy

; 173  :             PPROCESSOR_INFO pProcInfo = (PPROCESSOR_INFO)lpOutBuf;
; 174  : 
; 175  :             if (lpBytesReturned) *lpBytesReturned = sizeof(PROCESSOR_INFO);

  00444	e59d3054	 ldr       r3, [sp, #0x54]

; 176  :             memset(pProcInfo, 0, *lpBytesReturned);

  00448	e3a01000	 mov       r1, #0
  0044c	e3530000	 cmp       r3, #0
  00450	13a00d09	 movne     r0, #9, 26
  00454	15830000	 strne     r0, [r3]
  00458	e1a00008	 mov       r0, r8
  0045c	e5932000	 ldr       r2, [r3]
  00460	eb000000	 bl        memset

; 177  : 
; 178  :             pProcInfo->wVersion = 1;

  00464	e3a07001	 mov       r7, #1

; 179  : 
; 180  :             memcpy(pProcInfo->szProcessCore, OEMProcCore, (strlenW(OEMProcCore) + 1) * sizeof(WCHAR));

  00468	e1a04008	 mov       r4, r8
  0046c	e28d0004	 add       r0, sp, #4
  00470	e0c470b2	 strh      r7, [r4], #2
  00474	eb000000	 bl        strlenW
  00478	e2801001	 add       r1, r0, #1
  0047c	e1a02081	 mov       r2, r1, lsl #1
  00480	e28d1004	 add       r1, sp, #4
  00484	e1a00004	 mov       r0, r4
  00488	eb000000	 bl        memcpy

; 181  :             memcpy(pProcInfo->szProcessorName, OEMProcName, (strlenW(OEMProcName) + 1) * sizeof(WCHAR));

  0048c	e28d000c	 add       r0, sp, #0xC
  00490	eb000000	 bl        strlenW
  00494	e2801001	 add       r1, r0, #1
  00498	e1a02081	 mov       r2, r1, lsl #1
  0049c	e28d100c	 add       r1, sp, #0xC
  004a0	e2880054	 add       r0, r8, #0x54
  004a4	eb000000	 bl        memcpy

; 182  :             memcpy(pProcInfo->szVendor, OEMProcVendor, (strlenW(OEMProcVendor) + 1 ) * sizeof(WCHAR));

  004a8	e28d001c	 add       r0, sp, #0x1C
  004ac	eb000000	 bl        strlenW
  004b0	e2801001	 add       r1, r0, #1
  004b4	e2880c01	 add       r0, r8, #1, 24
  004b8	e1a02081	 mov       r2, r1, lsl #1
  004bc	e28d101c	 add       r1, sp, #0x1C
  004c0	e280006e	 add       r0, r0, #0x6E
  004c4	eb000000	 bl        memcpy

; 183  : 
; 184  :             pProcInfo->dwInstructionSet = PROCESSOR_16BITINSTRUCTION;

  004c8	e3a03004	 mov       r3, #4
  004cc	e5883238	 str       r3, [r8, #0x238]

; 631  :     }
; 632  : 
; 633  :     return(TRUE);

  004d0	e1a00007	 mov       r0, r7
  004d4	ea000188	 b         |$L14784|
  004d8		 |$L14916|

; 330  :         
; 331  :         return FALSE;
; 332  :         break;
; 333  : 
; 334  :     case IOCTL_QUERY_PHYSICALMEM:
; 335  :         if (!lpOutBuf || nOutBufSize < sizeof(PHYSICAL_BASIC_INFORMATION))

  004d8	e3580000	 cmp       r8, #0
  004dc	0a000008	 beq       |$L14919|
  004e0	e59d0050	 ldr       r0, [sp, #0x50]
  004e4	e350000c	 cmp       r0, #0xC

; 338  :             return(FALSE);
; 339  :         }
; 340  : 
; 341  :         // Return information about physical memory
; 342  :         ((PPHYSICAL_BASIC_INFORMATION)lpOutBuf)->lpBaseAddress = (LPVOID)0;

  004e8	23a00000	 movcs     r0, #0

; 343  :         ((PPHYSICAL_BASIC_INFORMATION)lpOutBuf)->dwRegionSize = 0x00000000;
; 344  :         ((PPHYSICAL_BASIC_INFORMATION)lpOutBuf)->dwType = PHYSICAL_UNKNOWN;

  004ec	23a01008	 movcs     r1, #8
  004f0	25880000	 strcs     r0, [r8]
  004f4	25880004	 strcs     r0, [r8, #4]

; 631  :     }
; 632  : 
; 633  :     return(TRUE);

  004f8	21a00007	 movcs     r0, r7
  004fc	25881008	 strcs     r1, [r8, #8]
  00500	2a00017d	 bcs       |$L14784|
  00504		 |$L14919|

; 336  :         {
; 337  :             SetLastError(ERROR_INVALID_PARAMETER);

  00504	e59f1608	 ldr       r1, [pc, #0x608]
  00508	e3a00057	 mov       r0, #0x57
  0050c	e1a0e00f	 mov       lr, pc
  00510	e12fff11	 bx        r1

; 620  :         return(FALSE);

  00514	e3a00000	 mov       r0, #0
  00518	ea000177	 b         |$L14784|
  0051c		 |$L14927|

; 345  : 
; 346  :         break;
; 347  : 
; 348  :     case IOCTL_HAL_GET_DEVICEID :
; 349  :         if (!lpOutBuf || !lpBytesReturned || (nOutBufSize < sizeof(DEVICE_ID))) {

  0051c	e3580000	 cmp       r8, #0
  00520	0a000029	 beq       |$L14930|
  00524	e59d4054	 ldr       r4, [sp, #0x54]
  00528	e3540000	 cmp       r4, #0
  0052c	0a000026	 beq       |$L14930|
  00530	e59d0050	 ldr       r0, [sp, #0x50]
  00534	e3500014	 cmp       r0, #0x14
  00538	3a000023	 bcc       |$L14930|

; 351  :             return(FALSE);
; 352  :         }
; 353  : 
; 354  :         {
; 355  :             PDEVICE_ID  pDeviceID = (PDEVICE_ID)lpOutBuf;
; 356  : 
; 357  : #define ROUNDUP(len)        ((len+3)&0xFFFFFFFC)
; 358  : #define REQ_SIZE            (ROUNDUP(sizeof(DEVICE_ID)) + ROUNDUP(sizeof(HALOEMStr)) + ROUNDUP(KITL_MAX_DEV_NAMELEN))
; 359  : 
; 360  :             if (pDeviceID->dwSize >= REQ_SIZE) {

  0053c	e5980000	 ldr       r0, [r8]
  00540	e3500034	 cmp       r0, #0x34
  00544	3a000018	 bcc       |$L14936|

; 361  :                 // Tell them how much we actually used.
; 362  :                 pDeviceID->dwSize = REQ_SIZE;
; 363  : 
; 364  :                 pDeviceID->dwPresetIDOffset = ROUNDUP(sizeof(DEVICE_ID));
; 365  :                 pDeviceID->dwPresetIDBytes = sizeof(HALOEMStr);

  00548	e3a0100e	 mov       r1, #0xE
  0054c	e3a00014	 mov       r0, #0x14
  00550	e5881008	 str       r1, [r8, #8]
  00554	e5880004	 str       r0, [r8, #4]
  00558	e3a05034	 mov       r5, #0x34

; 366  :                 memcpy ((PBYTE)lpOutBuf + pDeviceID->dwPresetIDOffset, (PBYTE)HALOEMStr, sizeof(HALOEMStr));

  0055c	e59f1628	 ldr       r1, [pc, #0x628]
  00560	e2880014	 add       r0, r8, #0x14
  00564	e3a0200e	 mov       r2, #0xE
  00568	e5885000	 str       r5, [r8]
  0056c	eb000000	 bl        memcpy

; 367  : 
; 368  :                 pDeviceID->dwPlatformIDOffset = pDeviceID->dwPresetIDOffset + ROUNDUP(pDeviceID->dwPresetIDBytes);

  00570	e5980008	 ldr       r0, [r8, #8]
  00574	e5983004	 ldr       r3, [r8, #4]
  00578	e2801003	 add       r1, r0, #3
  0057c	e3c12003	 bic       r2, r1, #3

; 369  :                 pDeviceID->dwPlatformIDBytes = KITL_MAX_DEV_NAMELEN;

  00580	e3a01010	 mov       r1, #0x10
  00584	e0820003	 add       r0, r2, r3
  00588	e5881010	 str       r1, [r8, #0x10]
  0058c	e588000c	 str       r0, [r8, #0xC]

; 370  :                 CreateDeviceName(&pDriverGlobals->eth.EdbgAddr, (PBYTE)lpOutBuf + pDeviceID->dwPlatformIDOffset, "ARMINT");

  00590	e0801008	 add       r1, r0, r8
  00594	e59f25ec	 ldr       r2, [pc, #0x5EC]
  00598	e59f05e4	 ldr       r0, [pc, #0x5E4]
  0059c	eb000000	 bl        CreateDeviceName

; 371  :                 if (lpBytesReturned) {
; 372  :                     *lpBytesReturned = REQ_SIZE;

  005a0	e5845000	 str       r5, [r4]

; 631  :     }
; 632  : 
; 633  :     return(TRUE);

  005a4	e1a00007	 mov       r0, r7
  005a8	ea000153	 b         |$L14784|
  005ac		 |$L14936|

; 373  :                 }
; 374  : 
; 375  :             } else {
; 376  :                 // Tell them how much we actually need.
; 377  :                 pDeviceID->dwSize = REQ_SIZE;

  005ac	e3a00034	 mov       r0, #0x34

; 378  :                 SetLastError (ERROR_INSUFFICIENT_BUFFER);

  005b0	e59f155c	 ldr       r1, [pc, #0x55C]
  005b4	e5880000	 str       r0, [r8]
  005b8	e3a0007a	 mov       r0, #0x7A
  005bc	e1a0e00f	 mov       lr, pc
  005c0	e12fff11	 bx        r1

; 620  :         return(FALSE);

  005c4	e3a00000	 mov       r0, #0
  005c8	ea00014b	 b         |$L14784|
  005cc		 |$L14930|

; 350  :             SetLastError (ERROR_INVALID_PARAMETER);

  005cc	e59f1540	 ldr       r1, [pc, #0x540]
  005d0	e3a00057	 mov       r0, #0x57
  005d4	e1a0e00f	 mov       lr, pc
  005d8	e12fff11	 bx        r1

; 620  :         return(FALSE);

  005dc	e3a00000	 mov       r0, #0
  005e0	ea000145	 b         |$L14784|
  005e4		 |$L14950|

; 379  :                 return(FALSE);
; 380  :             }
; 381  :         }
; 382  :         break;
; 383  :         
; 384  :     case IOCTL_HAL_ILTIMING:
; 385  :         {
; 386  :             PILTIMING_MESSAGE pITM = (PILTIMING_MESSAGE) lpInBuf;
; 387  : 
; 388  :             extern DWORD PerfCountSinceTick();
; 389  :             extern DWORD PerfCountFreq();
; 390  : 
; 391  :             if ((nInBufSize != sizeof(ILTIMING_MESSAGE)) || !lpInBuf) {

  005e4	e3550018	 cmp       r5, #0x18
  005e8	1a000045	 bne       |$L14957|
  005ec	e3590000	 cmp       r9, #0
  005f0	0a000043	 beq       |$L14957|

; 393  :                 return(FALSE);
; 394  :             }
; 395  : 
; 396  :             switch (pITM->wMsg) {

  005f4	e1d900b0	 ldrh      r0, [r9]
  005f8	e1a01800	 mov       r1, r0, lsl #16
  005fc	e1a02821	 mov       r2, r1, lsr #16
  00600	e3520001	 cmp       r2, #1
  00604	0a00002c	 beq       |$L14964|
  00608	e3520002	 cmp       r2, #2
  0060c	0a000023	 beq       |$L14966|
  00610	e3520003	 cmp       r2, #3
  00614	0a00000f	 beq       |$L14968|
  00618	e3520004	 cmp       r2, #4
  0061c	0a000007	 beq       |$L14969|

; 431  :                 break;
; 432  : 
; 433  :             default:
; 434  :                 RETAILMSG(1, (TEXT("IOCTL_HAL_ILTIMING: BAD MESSAGE!\r\n")));

  00620	e59f0558	 ldr       r0, [pc, #0x558]
  00624	eb000000	 bl        NKDbgPrintfW

; 435  :                 SetLastError(ERROR_INVALID_PARAMETER);

  00628	e59f14e4	 ldr       r1, [pc, #0x4E4]
  0062c	e3a00057	 mov       r0, #0x57
  00630	e1a0e00f	 mov       lr, pc
  00634	e12fff11	 bx        r1

; 620  :         return(FALSE);

  00638	e3a00000	 mov       r0, #0
  0063c	ea00012e	 b         |$L14784|
  00640		 |$L14969|

; 421  : #if 0
; 422  :                 RETAILMSG(1, (TEXT("ILTiming GetTime @ 0x%08X:%08X\r\n"),
; 423  :                               pITM->dwParam1, pITM->dwParam2));
; 424  : #endif /* 0/1 */
; 425  : 
; 426  :                 break;
; 427  : 
; 428  :             case ILTIMING_MSG_GET_PFN:
; 429  :                 pITM->pfnPerfCountSinceTick = (PVOID)PerfCountSinceTick;

  00640	e59f0534	 ldr       r0, [pc, #0x534]
  00644	e5890014	 str       r0, [r9, #0x14]

; 430  :                 RETAILMSG (1, (TEXT("ILTiming GetPFN\r\n")));

  00648	e59f0528	 ldr       r0, [pc, #0x528]
  0064c	eb000000	 bl        NKDbgPrintfW

; 631  :     }
; 632  : 
; 633  :     return(TRUE);

  00650	e1a00007	 mov       r0, r7
  00654	ea000128	 b         |$L14784|
  00658		 |$L14968|

; 412  :                 break;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -