📄 oemioctl.cod
字号:
00168 0a000263 beq |$L14784|
0016c e59f19a0 ldr r1, [pc, #0x9A0]
00170 e3a00057 mov r0, #0x57
00174 e1a0e00f mov lr, pc
00178 e12fff11 bx r1
0017c e3a00000 mov r0, #0
00180 ea00025d b |$L14784|
00184 |$L14845|
; 191 : {
; 192 : SetLastError(ERROR_INVALID_PARAMETER);
00184 e59f1988 ldr r1, [pc, #0x988]
00188 e3a00057 mov r0, #0x57
0018c e1a0e00f mov lr, pc
00190 e12fff11 bx r1
; 620 : return(FALSE);
00194 e3a00000 mov r0, #0
00198 ea000257 b |$L14784|
0019c |$L14858|
; 203 : return TRUE;
; 204 : }
; 205 : else if (*(DWORD *)lpInBuf == IOCTL_HAL_GETBUSDATA)
; 206 : {
; 207 : ((PBUSDATA_PARMS)lpInBuf)->ReturnCode = 0;
; 208 : return TRUE;
; 209 : }
; 210 : else
; 211 : {
; 212 : //
; 213 : // Oops, parameter list isn't what we expected.
; 214 : //
; 215 : SetLastError(ERROR_INVALID_PARAMETER);
; 216 : return FALSE;
; 217 : }
; 218 :
; 219 : break;
; 220 :
; 221 : #if 0
; 222 : //
; 223 : // This will get handled by the default case since we don't
; 224 : // have a pci device.
; 225 : //
; 226 : case IOCTL_HAL_GETPCIDEVICEINFO:
; 227 : //
; 228 : // Oops, parameter list isn't what we expected.
; 229 : //
; 230 : SetLastError(ERROR_INVALID_PARAMETER);
; 231 : return FALSE;
; 232 :
; 233 : case IOCTL_HAL_SETPCIDEVICEINFO:
; 234 : //
; 235 : // Oops, parameter list isn't what we expected.
; 236 : //
; 237 : SetLastError(ERROR_INVALID_PARAMETER);
; 238 : return FALSE;
; 239 : #endif // 0
; 240 :
; 241 : case IOCTL_HAL_GET_IP_ADDR:
; 242 : if ((lpOutBuf == NULL) || (NULL == lpBytesReturned) ||
; 243 : (nOutBufSize < sizeof(IP_INFO))) {
0019c e3580000 cmp r8, #0
001a0 0a000024 beq |$L14863|
001a4 e59d4054 ldr r4, [sp, #0x54]
001a8 e3540000 cmp r4, #0
001ac 0a000021 beq |$L14863|
001b0 e59d0050 ldr r0, [sp, #0x50]
001b4 e350000c cmp r0, #0xC
001b8 3a00001e bcc |$L14863|
; 245 : return(FALSE);
; 246 : }
; 247 :
; 248 : // Default address to download is IPINFO_DOWNLOAD
; 249 : len = IPINFO_DOWNLOAD;
; 250 :
; 251 : if ((NULL != lpInBuf) && (nInBufSize == sizeof(len)))
001bc e3590000 cmp r9, #0
001c0 0a00000a beq |$L15071|
001c4 e3550004 cmp r5, #4
001c8 1a000008 bne |$L15071|
; 252 : len = *((DWORD *)lpInBuf);
001cc e5990000 ldr r0, [r9]
001d0 e3500000 cmp r0, #0
; 253 :
; 254 : switch (len) {
001d4 0a00000d beq |$L14873|
001d8 e3500002 cmp r0, #2
001dc 0a000009 beq |$L14875|
001e0 e3500003 cmp r0, #3
001e4 0a000005 beq |$L14877|
001e8 e3500004 cmp r0, #4
001ec 0a000001 beq |$L14879|
001f0 |$L15071|
; 270 :
; 271 : case IPINFO_DOWNLOAD:
; 272 : default:
; 273 : pEdbgAddr = &(pDriverGlobals->eth.EshellHostAddr);
001f0 e59f19cc ldr r1, [pc, #0x9CC]
001f4 ea000006 b |$L14870|
001f8 |$L14879|
; 266 :
; 267 : case IPINFO_ESHELL:
; 268 : pEdbgAddr = &(pDriverGlobals->eth.PpshHostAddr);
001f8 e59f19c0 ldr r1, [pc, #0x9C0]
; 269 : break;
001fc ea000004 b |$L14870|
00200 |$L14877|
; 262 :
; 263 : case IPINFO_KDEBUG:
; 264 : pEdbgAddr = &(pDriverGlobals->eth.KdbgHostAddr);
00200 e59f19b4 ldr r1, [pc, #0x9B4]
; 265 : break;
00204 ea000002 b |$L14870|
00208 |$L14875|
; 257 : break;
; 258 :
; 259 : case IPINFO_DEBUGMSG:
; 260 : pEdbgAddr = &(pDriverGlobals->eth.DbgHostAddr);
00208 e59f19a8 ldr r1, [pc, #0x9A8]
; 261 : break;
0020c ea000000 b |$L14870|
00210 |$L14873|
; 255 : case IPINFO_ODO:
; 256 : pEdbgAddr = &(pDriverGlobals->eth.EdbgAddr);
00210 e59f196c ldr r1, [pc, #0x96C]
00214 |$L14870|
; 274 : }
; 275 :
; 276 : pIPInfo = (PIP_INFO)lpOutBuf;
; 277 : pIPInfo->dwIP = pEdbgAddr->dwIP;
00214 e4910004 ldr r0, [r1], #4
; 278 : memcpy(pIPInfo->MAC, (char *)pEdbgAddr->wMAC, sizeof(pIPInfo->MAC));
00218 e3a02006 mov r2, #6
0021c e4880004 str r0, [r8], #4
00220 e1a00008 mov r0, r8
00224 eb000000 bl memcpy
; 279 : *lpBytesReturned = sizeof(IP_INFO);
00228 e3a0300c mov r3, #0xC
0022c e5843000 str r3, [r4]
; 631 : }
; 632 :
; 633 : return(TRUE);
00230 e1a00007 mov r0, r7
00234 ea000230 b |$L14784|
00238 |$L14863|
; 244 : SetLastError(ERROR_INVALID_PARAMETER);
00238 e59f18d4 ldr r1, [pc, #0x8D4]
0023c e3a00057 mov r0, #0x57
00240 e1a0e00f mov lr, pc
00244 e12fff11 bx r1
; 620 : return(FALSE);
00248 e3a00000 mov r0, #0
0024c ea00022a b |$L14784|
00250 |$L14794|
; 127 :
; 128 : case IOCTL_HAL_GET_DEVICE_INFO:
; 129 : if (!lpOutBuf || !lpBytesReturned)
00250 e3580000 cmp r8, #0
00254 0a000033 beq |$L14796|
00258 e59d5054 ldr r5, [sp, #0x54]
0025c e3550000 cmp r5, #0
00260 0a000030 beq |$L14796|
; 132 : return(FALSE);
; 133 : }
; 134 :
; 135 : switch (*(LPDWORD)lpInBuf) {
00264 e3a01c01 mov r1, #1, 24
00268 e5990000 ldr r0, [r9]
0026c e3811001 orr r1, r1, #1
00270 e1500001 cmp r0, r1
00274 0a000017 beq |$L14804|
00278 e3a01c01 mov r1, #1, 24
0027c e3811002 orr r1, r1, #2
00280 e1500001 cmp r0, r1
00284 0a000005 beq |$L14810|
; 152 : break;
; 153 :
; 154 : default:
; 155 : SetLastError(ERROR_INVALID_PARAMETER);
00288 e59f1884 ldr r1, [pc, #0x884]
0028c e3a00057 mov r0, #0x57
00290 e1a0e00f mov lr, pc
00294 e12fff11 bx r1
; 631 : }
; 632 :
; 633 : return(TRUE);
00298 e1a00007 mov r0, r7
0029c ea000216 b |$L14784|
002a0 |$L14810|
; 143 : break;
; 144 :
; 145 : case SPI_GETOEMINFO:
; 146 : len = (strlenW(HALOEMStr)+1)*sizeof(WCHAR);
002a0 e59f08e4 ldr r0, [pc, #0x8E4]
002a4 eb000000 bl strlenW
002a8 e2801001 add r1, r0, #1
; 147 : if (nOutBufSize >= len) {
002ac e59d0050 ldr r0, [sp, #0x50]
002b0 e1a04081 mov r4, r1, lsl #1
002b4 e1500004 cmp r0, r4
; 148 : memcpy(lpOutBuf,HALOEMStr,len);
002b8 259f18cc ldrcs r1, [pc, #0x8CC]
002bc 2a00000d bcs |$L15098|
; 149 : *lpBytesReturned = len;
; 150 : } else
; 151 : SetLastError(ERROR_INSUFFICIENT_BUFFER);
002c0 e59f184c ldr r1, [pc, #0x84C]
002c4 e3a0007a mov r0, #0x7A
002c8 e1a0e00f mov lr, pc
002cc e12fff11 bx r1
; 631 : }
; 632 :
; 633 : return(TRUE);
002d0 e1a00007 mov r0, r7
002d4 ea000208 b |$L14784|
002d8 |$L14804|
; 136 : case SPI_GETPLATFORMTYPE:
; 137 : len = (strlenW(HALPlatformStr)+1)*sizeof(WCHAR);
002d8 e59f08d4 ldr r0, [pc, #0x8D4]
002dc eb000000 bl strlenW
002e0 e2801001 add r1, r0, #1
; 138 : if (nOutBufSize >= len) {
002e4 e59d0050 ldr r0, [sp, #0x50]
002e8 e1a04081 mov r4, r1, lsl #1
002ec e1500004 cmp r0, r4
002f0 3a000006 bcc |$L14806|
; 139 : memcpy(lpOutBuf,HALPlatformStr,len);
002f4 e59f18b8 ldr r1, [pc, #0x8B8]
002f8 |$L15098|
002f8 e1a02004 mov r2, r4
002fc e1a00008 mov r0, r8
00300 eb000000 bl memcpy
; 140 : *lpBytesReturned = len;
00304 e5854000 str r4, [r5]
; 631 : }
; 632 :
; 633 : return(TRUE);
00308 e1a00007 mov r0, r7
0030c ea0001fa b |$L14784|
00310 |$L14806|
; 141 : } else
; 142 : SetLastError(ERROR_INSUFFICIENT_BUFFER);
00310 e59f17fc ldr r1, [pc, #0x7FC]
00314 e3a0007a mov r0, #0x7A
00318 e1a0e00f mov lr, pc
0031c e12fff11 bx r1
; 631 : }
; 632 :
; 633 : return(TRUE);
00320 e1a00007 mov r0, r7
00324 ea0001f4 b |$L14784|
00328 |$L14796|
; 130 : {
; 131 : SetLastError(ERROR_INVALID_PARAMETER);
00328 e59f17e4 ldr r1, [pc, #0x7E4]
0032c e3a00057 mov r0, #0x57
00330 e1a0e00f mov lr, pc
00334 e12fff11 bx r1
; 620 : return(FALSE);
00338 e3a00000 mov r0, #0
0033c ea0001ee b |$L14784|
00340 |$L15064|
; 118 : DWORD len;
; 119 : PIP_INFO pIPInfo;
; 120 : EDBG_ADDR *pEdbgAddr;
; 121 : ULONG ulTemp;
; 122 :
; 123 :
; 124 : DEBUGMSG(0, (TEXT("+OEMIoControl %X\r\n"), dwIoControlCode));
; 125 :
; 126 : switch (dwIoControlCode) {
00340 e59f0868 ldr r0, [pc, #0x868]
00344 e1560000 cmp r6, r0
00348 0a0000a5 beq |$L14950|
0034c e59f0858 ldr r0, [pc, #0x858]
00350 e1560000 cmp r6, r0
00354 0a000070 beq |$L14927|
00358 e59f0848 ldr r0, [pc, #0x848]
0035c e1560000 cmp r6, r0
00360 0a00005c beq |$L14916|
00364 e59f0838 ldr r0, [pc, #0x838]
00368 e1560000 cmp r6, r0
0036c 0a000016 beq |$L14819|
00370 e59f0828 ldr r0, [pc, #0x828]
00374 e1560000 cmp r6, r0
00378 0a000007 beq |$L14976|
0037c e59f0818 ldr r0, [pc, #0x818]
00380 e1560000 cmp r6, r0
00384 1a000163 bne |$L15041|
; 451 : return FALSE;
; 452 :
; 453 : case IOCTL_VBRIDGE_GET_TX_PACKET_COMPLETE:
; 454 : VBridgeUGetOneTxPacketComplete((PUCHAR)lpInBuf, nInBufSize);
00388 e1a01005 mov r1, r5
0038c e1a00009 mov r0, r9
00390 eb000000 bl VBridgeUGetOneTxPacketComplete
; 629 :
; 630 : return TRUE;
00394 e3a00001 mov r0, #1
00398 ea0001d7 b |$L14784|
0039c |$L14976|
; 436 : return FALSE;
; 437 : }
; 438 : }
; 439 : break;
; 440 :
; 441 : #if IMGSHAREETH
; 442 :
; 443 : ////////////////////////////////////////////////////////////////////////
; 444 : // The support for VMini..
; 445 : //
; 446 : case IOCTL_VBRIDGE_GET_TX_PACKET:
; 447 : if (lpOutBuf)
0039c e3580000 cmp r8, #0
003a0 0a000003 beq |$L14977|
; 448 : return VBridgeUGetOneTxPacket((PUCHAR *)lpOutBuf, nInBufSize);
003a4 e1a01005 mov r1, r5
003a8 e1a00008 mov r0, r8
003ac eb000000 bl VBridgeUGetOneTxPacket
003b0 ea0001d1 b |$L14784|
003b4 |$L14977|
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -