📄 drv.cod
字号:
; 232 : {
; 233 : switch( dwCode )
001a4 e59f3334 ldr r3, [pc, #0x334]
001a8 e1510003 cmp r1, r3
001ac 0a000021 beq |$L36365|
001b0 e59f3324 ldr r3, [pc, #0x324]
001b4 e1510003 cmp r1, r3
001b8 0a000012 beq |$L36373|
001bc e59f3314 ldr r3, [pc, #0x314]
001c0 e1510003 cmp r1, r3
001c4 1a00007e bne |$L36427|
; 306 : case IOCTL_GETINVOL:
; 307 : if( pBufIn != NULL && dwLenIn == sizeof(DWORD) && pdwBufOut != NULL && dwLenOut == sizeof(DWORD))
001c8 e3550000 cmp r5, #0
001cc 0a000092 beq |$L37416|
001d0 e3570004 cmp r7, #4
001d4 1a000090 bne |$L37416|
001d8 e59b2010 ldr r2, [r11, #0x10]
001dc e3520000 cmp r2, #0
001e0 0a00008d beq |$L37416|
001e4 e59b3014 ldr r3, [r11, #0x14]
001e8 e3530004 cmp r3, #4
001ec 1a00008a bne |$L37416|
; 308 : {
; 309 : ASSERT( ((DWORD)pBufIn & 3) == 0 );
; 310 : DEBUGMSG(I2S_ZONE_IOCTL, (TEXT(" IOCTL_SETINMUTE : %d\r\n"), *(DWORD *)pBufIn ));
; 311 : result = pDeviceI2S->GetInVolume( *((DWORD *)pBufIn), (U16*)pdwBufOut);
001f0 e5953000 ldr r3, [r5]
001f4 e1a00006 mov r0, r6
001f8 e1a01803 mov r1, r3, lsl #16
001fc e1a01821 mov r1, r1, lsr #16
00200 eb000000 bl |?GetInVolume@BASEI2S@@QAAHGPAG@Z|
; 312 : if( pdwActualOut ) *pdwActualOut = 0;
; 313 : }
; 314 :
; 315 : break;
00204 ea00004e b |$L37452|
00208 |$L36373|
; 295 : case IOCTL_SETOUTMUTE:
; 296 : RETAILMSG(1, (TEXT("Andrew!! IOCTL_SETOUTMUTE\n")));
00208 e59f02c4 ldr r0, [pc, #0x2C4]
0020c eb000000 bl NKDbgPrintfW
; 297 : if( pBufIn != NULL && dwLenIn == sizeof(DWORD) )
00210 e3550000 cmp r5, #0
00214 0a000080 beq |$L37416|
00218 e3570004 cmp r7, #4
0021c 1a00007e bne |$L37416|
; 298 : {
; 299 : RETAILMSG(1, (TEXT("Andrew!! IOCTL_SETOUTMUTE 2\n")));
00220 e59f02a8 ldr r0, [pc, #0x2A8]
00224 eb000000 bl NKDbgPrintfW
; 300 : ASSERT( ((DWORD)pBufIn & 3) == 0 );
; 301 : DEBUGMSG(I2S_ZONE_IOCTL, (TEXT(" IOCTL_SETINMUTE : %d\r\n"), *(DWORD *)pBufIn ));
; 302 : result = pDeviceI2S->SetOutMute( *((DWORD *)pBufIn));
00228 e5951000 ldr r1, [r5]
0022c e1a00006 mov r0, r6
00230 eb000000 bl |?SetOutMute@BASEI2S@@QAAHH@Z|
; 303 : if( pdwActualOut ) *pdwActualOut = 0;
; 304 : }
; 305 : break;
00234 ea000042 b |$L37452|
00238 |$L36365|
; 284 : case IOCTL_SETINMUTE:
; 285 : RETAILMSG(1, (TEXT("Andrew!! IOCTL_SETINMUTE\t\n")));
00238 e59f028c ldr r0, [pc, #0x28C]
0023c eb000000 bl NKDbgPrintfW
; 286 : if( pBufIn != NULL && dwLenIn == sizeof(DWORD) )
00240 e3550000 cmp r5, #0
00244 0a000074 beq |$L37416|
00248 e3570004 cmp r7, #4
0024c 1a000072 bne |$L37416|
; 287 : {
; 288 : RETAILMSG(1, (TEXT("Andrew!! IOCTL_SETINMUTE\t\n")));
00250 e59f0274 ldr r0, [pc, #0x274]
00254 eb000000 bl NKDbgPrintfW
; 289 : ASSERT( ((DWORD)pBufIn & 3) == 0 );
; 290 : DEBUGMSG(I2S_ZONE_IOCTL, (TEXT(" IOCTL_SETINMUTE : %d\r\n"), *(DWORD *)pBufIn ));
; 291 : result = pDeviceI2S->SetInMute( *((DWORD *)pBufIn));
00258 e5951000 ldr r1, [r5]
0025c e1a00006 mov r0, r6
00260 eb000000 bl |?SetInMute@BASEI2S@@QAAHH@Z|
; 292 : if( pdwActualOut ) *pdwActualOut = 0;
; 293 : }
; 294 : break;
00264 ea000036 b |$L37452|
00268 |$L36391|
; 316 : case IOCTL_GETOUTVOL:
; 317 : if( pBufIn != NULL && dwLenIn == sizeof(DWORD) && pdwBufOut != NULL && dwLenOut == sizeof(DWORD))
00268 e3550000 cmp r5, #0
0026c 0a00006a beq |$L37416|
00270 e3570004 cmp r7, #4
00274 1a000068 bne |$L37416|
00278 e59b2010 ldr r2, [r11, #0x10]
0027c e3520000 cmp r2, #0
00280 0a000065 beq |$L37416|
00284 e59b3014 ldr r3, [r11, #0x14]
00288 e3530004 cmp r3, #4
0028c 1a000062 bne |$L37416|
; 318 : {
; 319 : ASSERT( ((DWORD)pBufIn & 3) == 0 );
; 320 : DEBUGMSG(I2S_ZONE_IOCTL, (TEXT(" IOCTL_SETINMUTE : %d\r\n"), *(DWORD *)pBufIn ));
; 321 : result = pDeviceI2S->GetOutVolume( *((DWORD *)pBufIn), (U16*)pdwBufOut);
00290 e5953000 ldr r3, [r5]
00294 e1a00006 mov r0, r6
00298 e1a01803 mov r1, r3, lsl #16
0029c e1a01821 mov r1, r1, lsr #16
002a0 eb000000 bl |?GetOutVolume@BASEI2S@@QAAHGPAG@Z|
; 322 : if( pdwActualOut ) *pdwActualOut = 0;
; 323 : }
; 324 : break;
002a4 ea000026 b |$L37452|
002a8 |$L37405|
; 228 :
; 229 : DEBUGMSG(I2S_ZONE_IOCTL, (TEXT("+I2S_IOCntrol : 0x%08lx\r\n"), pOHandle));
; 230 :
; 231 : __try
; 232 : {
; 233 : switch( dwCode )
002a8 e59f3218 ldr r3, [pc, #0x218]
002ac e1510003 cmp r1, r3
002b0 8a000039 bhi |$L37407|
002b4 0a000035 beq |$L36421|
002b8 e59f3204 ldr r3, [pc, #0x204]
002bc e1510003 cmp r1, r3
002c0 0a000022 beq |$L36400|
002c4 e59f31f4 ldr r3, [pc, #0x1F4]
002c8 e1510003 cmp r1, r3
002cc 0a00000d beq |$L36409|
002d0 e59f31e4 ldr r3, [pc, #0x1E4]
002d4 e1510003 cmp r1, r3
002d8 0a000007 beq |$L36418|
002dc e59f31d4 ldr r3, [pc, #0x1D4]
002e0 e1510003 cmp r1, r3
002e4 1a000036 bne |$L36427|
; 347 : case IOCTL_POWERUP:
; 348 : RETAILMSG(1, (TEXT("Andrew!! IOCTL_POWERUP:\t\n")));
002e8 e59f01c4 ldr r0, [pc, #0x1C4]
002ec eb000000 bl NKDbgPrintfW
; 349 : pDeviceI2S->PowerUp();
002f0 e1a00006 mov r0, r6
002f4 eb000000 bl |?PowerUp@BASEI2S@@QAAHXZ|
; 350 : break;
002f8 ea000047 b |$L37416|
002fc |$L36418|
; 344 : case IOCTL_POWERDOWN:
; 345 : pDeviceI2S->PowerDown();
002fc e1a00006 mov r0, r6
00300 eb000000 bl |?PowerDown@BASEI2S@@QAAHXZ|
; 346 : break;
00304 ea000044 b |$L37416|
00308 |$L36409|
; 335 : case IOCTL_GETOUTMUTE:
; 336 : if( pBufIn != NULL && dwLenIn == sizeof(DWORD) && pdwBufOut != NULL && dwLenOut == sizeof(DWORD))
00308 e3550000 cmp r5, #0
0030c 0a000042 beq |$L37416|
00310 e3570004 cmp r7, #4
00314 1a000040 bne |$L37416|
00318 e59b2010 ldr r2, [r11, #0x10]
0031c e3520000 cmp r2, #0
00320 0a00003d beq |$L37416|
00324 e59b3014 ldr r3, [r11, #0x14]
00328 e3530004 cmp r3, #4
0032c 1a00003a bne |$L37416|
; 337 : {
; 338 : ASSERT( ((DWORD)pBufIn & 3) == 0 );
; 339 : DEBUGMSG(I2S_ZONE_IOCTL, (TEXT(" IOCTL_SETINMUTE : %d\r\n"), *(DWORD *)pBufIn ));
; 340 : result = pDeviceI2S->GetOutMute( *((DWORD *)pBufIn), (U16*)pdwBufOut);
00330 e5953000 ldr r3, [r5]
00334 e1a00006 mov r0, r6
00338 e1a01803 mov r1, r3, lsl #16
0033c e1a01821 mov r1, r1, lsr #16
00340 eb000000 bl |?GetOutMute@BASEI2S@@QAAHGPAG@Z|
00344 |$L37452|
; 341 : if( pdwActualOut ) *pdwActualOut = 0;
00344 e1a04000 mov r4, r0
00348 e50b4028 str r4, [r11, #-0x28]
; 342 : }
; 343 : break;
0034c eaffff81 b |$L37450|
00350 |$L36400|
; 325 : case IOCTL_GETINMUTE:
; 326 : if( pBufIn != NULL && dwLenIn == sizeof(DWORD) && pdwBufOut != NULL && dwLenOut == sizeof(DWORD))
00350 e3550000 cmp r5, #0
00354 0a000030 beq |$L37416|
00358 e3570004 cmp r7, #4
0035c 1a00002e bne |$L37416|
00360 e59b2010 ldr r2, [r11, #0x10]
00364 e3520000 cmp r2, #0
00368 0a00002b beq |$L37416|
0036c e59b3014 ldr r3, [r11, #0x14]
00370 e3530004 cmp r3, #4
00374 1a000028 bne |$L37416|
; 327 : {
; 328 : ASSERT( ((DWORD)pBufIn & 3) == 0 );
; 329 : DEBUGMSG(I2S_ZONE_IOCTL, (TEXT(" IOCTL_SETINMUTE : %d\r\n"), *(DWORD *)pBufIn ));
; 330 : result = pDeviceI2S->GetInMute( *((DWORD *)pBufIn), (U16*)pdwBufOut);
00378 e5953000 ldr r3, [r5]
0037c e1a00006 mov r0, r6
00380 e1a01803 mov r1, r3, lsl #16
00384 e1a01821 mov r1, r1, lsr #16
00388 eb000000 bl |?GetInMute@BASEI2S@@QAAHGPAG@Z|
; 331 : if( pdwActualOut ) *pdwActualOut = 0;
; 332 : }
; 333 :
; 334 : break;
0038c eaffffec b |$L37452|
00390 |$L36421|
; 351 :
; 352 : case IOCTL_STARTOUTDMA:
; 353 : // RETAILMSG(1, (TEXT("Andrew!! IOCTL_STARTOUTDMA:\t\n")));
; 354 : pDeviceI2S->StartOutDMA();
00390 e1a00006 mov r0, r6
00394 eb000000 bl |?StartOutDMA@BASEI2S@@QAAXXZ|
; 355 : result = TRUE;
; 356 : break;
00398 ea00001d b |$L37448|
0039c |$L37407|
; 228 :
; 229 : DEBUGMSG(I2S_ZONE_IOCTL, (TEXT("+I2S_IOCntrol : 0x%08lx\r\n"), pOHandle));
; 230 :
; 231 : __try
; 232 : {
; 233 : switch( dwCode )
0039c e3a0320f mov r3, #0xF, 4
003a0 e3833d81 orr r3, r3, #0x81, 26
003a4 e1510003 cmp r1, r3
003a8 0a000015 beq |$L36422|
003ac e59f30fc ldr r3, [pc, #0xFC]
003b0 e1510003 cmp r1, r3
003b4 0a00000f beq |$L36424|
003b8 e59f30ec ldr r3, [pc, #0xEC]
003bc e1510003 cmp r1, r3
003c0 0a000007 beq |$L36425|
003c4 |$L36427|
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -