📄 oemioctl.cod
字号:
000d8 e3a00000 mov r0, #0
000dc |$L16625|
; 853 : }
000dc e28dd034 add sp, sp, #0x34
000e0 e8bd40f0 ldmia sp!, {r4 - r7, lr}
000e4 e12fff1e bx lr
000e8 |$L16685|
; 246 : {
; 247 : SetLastError(ERROR_INVALID_PARAMETER);
000e8 e59f3c24 ldr r3, [pc, #0xC24]
000ec e3a00057 mov r0, #0x57
000f0 e1a0e00f mov lr, pc
000f4 e12fff13 bx r3
; 248 : return(FALSE);
000f8 eafffff6 b |$L16908|
000fc |$L16698|
; 271 : return FALSE;
; 272 : }
; 273 :
; 274 : break;
; 275 :
; 276 : #if 0
; 277 : //
; 278 : // This will get handled by the default case since we don't
; 279 : // have a pci device.
; 280 : //
; 281 : case IOCTL_HAL_GETPCIDEVICEINFO:
; 282 : //
; 283 : // Oops, parameter list isn't what we expected.
; 284 : //
; 285 : SetLastError(ERROR_INVALID_PARAMETER);
; 286 : return FALSE;
; 287 :
; 288 : case IOCTL_HAL_SETPCIDEVICEINFO:
; 289 : //
; 290 : // Oops, parameter list isn't what we expected.
; 291 : //
; 292 : SetLastError(ERROR_INVALID_PARAMETER);
; 293 : return FALSE;
; 294 : #endif // 0
; 295 :
; 296 : case IOCTL_HAL_GET_IP_ADDR:
; 297 : if ((lpOutBuf == NULL) || (NULL == lpBytesReturned) ||
; 298 : (nOutBufSize < sizeof(IP_INFO)))
000fc e3560000 cmp r6, #0
00100 0a000024 beq |$L16703|
00104 e59d404c ldr r4, [sp, #0x4C]
00108 e3540000 cmp r4, #0
0010c 0a000021 beq |$L16703|
00110 e59d3048 ldr r3, [sp, #0x48]
00114 e353000c cmp r3, #0xC
00118 3a00001e bcc |$L16703|
; 302 : }
; 303 :
; 304 : // Default address to download is IPINFO_DOWNLOAD
; 305 : len = IPINFO_DOWNLOAD;
; 306 :
; 307 : if ((NULL != lpInBuf) && (nInBufSize == sizeof(len)))
0011c e3550000 cmp r5, #0
00120 0a00000a beq |$L16972|
00124 e35e0004 cmp lr, #4
00128 1a000008 bne |$L16972|
; 308 : len = *((DWORD *)lpInBuf);
0012c e5953000 ldr r3, [r5]
00130 e3530000 cmp r3, #0
; 309 :
; 310 : switch (len)
00134 0a00000d beq |$L16713|
00138 e3530002 cmp r3, #2
0013c 0a000009 beq |$L16715|
00140 e3530003 cmp r3, #3
00144 0a000005 beq |$L16717|
00148 e3530004 cmp r3, #4
0014c 0a000001 beq |$L16719|
00150 |$L16972|
; 327 :
; 328 : case IPINFO_DOWNLOAD:
; 329 : default:
; 330 : pEdbgAddr = &(pDriverGlobals->eth.EshellHostAddr);
00150 e59f1ca8 ldr r1, [pc, #0xCA8]
00154 ea000006 b |$L16710|
00158 |$L16719|
; 323 :
; 324 : case IPINFO_ESHELL:
; 325 : pEdbgAddr = &(pDriverGlobals->eth.PpshHostAddr);
00158 e59f1c9c ldr r1, [pc, #0xC9C]
; 326 : break;
0015c ea000004 b |$L16710|
00160 |$L16717|
; 319 :
; 320 : case IPINFO_KDEBUG:
; 321 : pEdbgAddr = &(pDriverGlobals->eth.KdbgHostAddr);
00160 e59f1c90 ldr r1, [pc, #0xC90]
; 322 : break;
00164 ea000002 b |$L16710|
00168 |$L16715|
; 314 : break;
; 315 :
; 316 : case IPINFO_DEBUGMSG:
; 317 : pEdbgAddr = &(pDriverGlobals->eth.DbgHostAddr);
00168 e59f1c84 ldr r1, [pc, #0xC84]
; 318 : break;
0016c ea000000 b |$L16710|
00170 |$L16713|
; 311 : {
; 312 : case IPINFO_ODO:
; 313 : pEdbgAddr = &(pDriverGlobals->eth.EdbgAddr);
00170 e59f1c78 ldr r1, [pc, #0xC78]
00174 |$L16710|
; 331 : }
; 332 :
; 333 : pIPInfo = (PIP_INFO)lpOutBuf;
; 334 : pIPInfo->dwIP = pEdbgAddr->dwIP;
; 335 : memcpy(pIPInfo->MAC, (char *)pEdbgAddr->wMAC, sizeof(pIPInfo->MAC));
00174 e4913004 ldr r3, [r1], #4
00178 e3a02006 mov r2, #6
0017c e4863004 str r3, [r6], #4
00180 e1a00006 mov r0, r6
00184 eb000000 bl memcpy
; 336 : *lpBytesReturned = sizeof(IP_INFO);
00188 e3a0300c mov r3, #0xC
0018c e5843000 str r3, [r4]
; 828 : }
; 829 : }
; 830 :
; 831 : break;
; 832 :
; 833 :
; 834 : #ifdef EP93XX_SIMULAT_PS2_KBD
; 835 :
; 836 : case IOCTL_HAL_PS2_SEND:
; 837 : return SendDataToPS2( lpInBuf ,nInBufSize );
; 838 : break;
; 839 : case IOCTL_HAL_PS2_GET:
; 840 : return ReadPS2Data(lpOutBuf, nOutBufSize, lpBytesReturned );
; 841 : break;
; 842 : #endif
; 843 :
; 844 : #ifdef EDB9315A_CIR
; 845 : case IOCTL_HAL_PIO_CIR:
; 846 : return GetKeyName( lpOutBuf, nOutBufSize, lpBytesReturned );
; 847 : break;
; 848 : #endif
; 849 :
; 850 : }
; 851 :
; 852 : return(TRUE);
00190 e3a00001 mov r0, #1
00194 eaffffd0 b |$L16625|
00198 |$L16703|
; 299 : {
; 300 : SetLastError(ERROR_INVALID_PARAMETER);
00198 e59f3b74 ldr r3, [pc, #0xB74]
0019c e3a00057 mov r0, #0x57
001a0 e1a0e00f mov lr, pc
001a4 e12fff13 bx r3
; 301 : return(FALSE);
001a8 eaffffca b |$L16908|
001ac |$L16634|
; 182 :
; 183 : case IOCTL_HAL_GET_DEVICE_INFO:
; 184 : if (!lpOutBuf || !lpBytesReturned)
001ac e3560000 cmp r6, #0
001b0 0a000034 beq |$L16636|
001b4 e59d404c ldr r4, [sp, #0x4C]
001b8 e3540000 cmp r4, #0
001bc 0a000031 beq |$L16636|
; 188 : }
; 189 :
; 190 : switch (*(LPDWORD)lpInBuf) {
001c0 e5952000 ldr r2, [r5]
001c4 e3a03c01 mov r3, #1, 24
001c8 e3833001 orr r3, r3, #1
001cc e1520003 cmp r2, r3
001d0 0a000017 beq |$L16644|
001d4 e3a03c01 mov r3, #1, 24
001d8 e3833002 orr r3, r3, #2
001dc e1520003 cmp r2, r3
001e0 0a000005 beq |$L16650|
; 207 : break;
; 208 :
; 209 : default:
; 210 : SetLastError(ERROR_INVALID_PARAMETER);
001e4 e59f3b28 ldr r3, [pc, #0xB28]
001e8 e3a00057 mov r0, #0x57
001ec e1a0e00f mov lr, pc
001f0 e12fff13 bx r3
; 828 : }
; 829 : }
; 830 :
; 831 : break;
; 832 :
; 833 :
; 834 : #ifdef EP93XX_SIMULAT_PS2_KBD
; 835 :
; 836 : case IOCTL_HAL_PS2_SEND:
; 837 : return SendDataToPS2( lpInBuf ,nInBufSize );
; 838 : break;
; 839 : case IOCTL_HAL_PS2_GET:
; 840 : return ReadPS2Data(lpOutBuf, nOutBufSize, lpBytesReturned );
; 841 : break;
; 842 : #endif
; 843 :
; 844 : #ifdef EDB9315A_CIR
; 845 : case IOCTL_HAL_PIO_CIR:
; 846 : return GetKeyName( lpOutBuf, nOutBufSize, lpBytesReturned );
; 847 : break;
; 848 : #endif
; 849 :
; 850 : }
; 851 :
; 852 : return(TRUE);
001f4 e3a00001 mov r0, #1
001f8 eaffffb7 b |$L16625|
001fc |$L16650|
; 198 : break;
; 199 :
; 200 : case SPI_GETOEMINFO:
; 201 : len = (strlenW(HALOEMStr)+1)*sizeof(WCHAR);
001fc e59f0ba0 ldr r0, [pc, #0xBA0]
00200 eb000000 bl strlenW
; 202 : if (nOutBufSize >= len) {
00204 e59d2048 ldr r2, [sp, #0x48]
00208 e2803001 add r3, r0, #1
0020c e1a05083 mov r5, r3, lsl #1
00210 e1520005 cmp r2, r5
; 203 : memcpy(lpOutBuf,HALOEMStr,len);
00214 259f1b88 ldrcs r1, [pc, #0xB88]
00218 2a00000e bcs |$L17003|
; 204 : *lpBytesReturned = len;
; 205 : } else
; 206 : SetLastError(ERROR_INSUFFICIENT_BUFFER);
0021c e59f3af0 ldr r3, [pc, #0xAF0]
00220 e3a0007a mov r0, #0x7A
00224 e1a0e00f mov lr, pc
00228 e12fff13 bx r3
; 828 : }
; 829 : }
; 830 :
; 831 : break;
; 832 :
; 833 :
; 834 : #ifdef EP93XX_SIMULAT_PS2_KBD
; 835 :
; 836 : case IOCTL_HAL_PS2_SEND:
; 837 : return SendDataToPS2( lpInBuf ,nInBufSize );
; 838 : break;
; 839 : case IOCTL_HAL_PS2_GET:
; 840 : return ReadPS2Data(lpOutBuf, nOutBufSize, lpBytesReturned );
; 841 : break;
; 842 : #endif
; 843 :
; 844 : #ifdef EDB9315A_CIR
; 845 : case IOCTL_HAL_PIO_CIR:
; 846 : return GetKeyName( lpOutBuf, nOutBufSize, lpBytesReturned );
; 847 : break;
; 848 : #endif
; 849 :
; 850 : }
; 851 :
; 852 : return(TRUE);
0022c e3a00001 mov r0, #1
00230 eaffffa9 b |$L16625|
00234 |$L16644|
; 191 : case SPI_GETPLATFORMTYPE:
; 192 : len = (strlenW(HALPlatformStr)+1)*sizeof(WCHAR);
00234 e59f7b68 ldr r7, [pc, #0xB68]
00238 e287002c add r0, r7, #0x2C
0023c eb000000 bl strlenW
; 193 : if (nOutBufSize >= len) {
00240 e59d2048 ldr r2, [sp, #0x48]
00244 e2803001 add r3, r0, #1
00248 e1a05083 mov r5, r3, lsl #1
0024c e1520005 cmp r2, r5
00250 3a000006 bcc |$L16646|
; 194 : memcpy(lpOutBuf,HALPlatformStr,len);
00254 e287102c add r1, r7, #0x2C
00258 |$L17003|
00258 e1a02005 mov r2, r5
0025c e1a00006 mov r0, r6
00260 eb000000 bl memcpy
; 195 : *lpBytesReturned = len;
00264 e5845000 str r5, [r4]
; 828 : }
; 829 : }
; 830 :
; 831 : break;
; 832 :
; 833 :
; 834 : #ifdef EP93XX_SIMULAT_PS2_KBD
; 835 :
; 836 : case IOCTL_HAL_PS2_SEND:
; 837 : return SendDataToPS2( lpInBuf ,nInBufSize );
; 838 : break;
; 839 : case IOCTL_HAL_PS2_GET:
; 840 : return ReadPS2Data(lpOutBuf, nOutBufSize, lpBytesReturned );
; 841 : break;
; 842 : #endif
; 843 :
; 844 : #ifdef EDB9315A_CIR
; 845 : case IOCTL_HAL_PIO_CIR:
; 846 : return GetKeyName( lpOutBuf, nOutBufSize, lpBytesReturned );
; 847 : break;
; 848 : #endif
; 849 :
; 850 : }
; 851 :
; 852 : return(TRUE);
00268 e3a00001 mov r0, #1
0026c eaffff9a b |$L16625|
00270 |$L16646|
; 196 : } else
; 197 : SetLastError(ERROR_INSUFFICIENT_BUFFER);
00270 e59f3a9c ldr r3, [pc, #0xA9C]
00274 e3a0007a mov r0, #0x7A
00278 e1a0e00f mov lr, pc
0027c e12fff13 bx r3
; 828 : }
; 829 : }
; 830 :
; 831 : break;
; 832 :
; 833 :
; 834 : #ifdef EP93XX_SIMULAT_PS2_KBD
; 835 :
; 836 : case IOCTL_HAL_PS2_SEND:
; 837 : return SendDataToPS2( lpInBuf ,nInBufSize );
; 838 : break;
; 839 : case IOCTL_HAL_PS2_GET:
; 840 : return ReadPS2Data(lpOutBuf, nOutBufSize, lpBytesReturned );
; 841 : break;
; 842 : #endif
; 843 :
; 844 : #ifdef EDB9315A_CIR
; 845 : case IOCTL_HAL_PIO_CIR:
; 846 : return GetKeyName( lpOutBuf, nOutBufSize, lpBytesReturned );
; 847 : break;
; 848 : #endif
; 849 :
; 850 : }
; 851 :
; 852 : return(TRUE);
00280 e3a00001 mov r0, #1
00284 eaffff94 b |$L16625|
00288 |$L16636|
; 185 : {
; 186 : SetLastError(ERROR_INVALID_PARAMETER);
00288 e59f3a84 ldr r3, [pc, #0xA84]
0028c e3a00057 mov r0, #0x57
00290 e1a0e00f mov lr, pc
00294 e12fff13 bx r3
; 187 : return(FALSE);
00298 eaffff8e b |$L16908|
0029c |$L16931|
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -