static BOOL DeviceIo_IFSMgr(DWORD dwIoControlCode, LPVOID lpvInBuffer, DWORD cbInBuffer, LPVOID lpvOutBuffer, DWORD cbOutBuffer, LPDWORD lpcbBytesReturned, LPOVERLAPPED lpOverlapped) { BOOL retv = TRUE; TRACE("(%ld,%p,%ld,%p,%ld,%p,%p): stub\n", dwIoControlCode, lpvInBuffer,cbInBuffer, lpvOutBuffer,cbOutBuffer, lpcbBytesReturned, lpOverlapped); switch (dwIoControlCode) { case IFS_IOCTL_21: case IFS_IOCTL_2F:{ CONTEXT86 cxt; struct win32apireq *pIn=(struct win32apireq *) lpvInBuffer; struct win32apireq *pOut=(struct win32apireq *) lpvOutBuffer; TRACE( "Control '%s': " "proid=0x%08lx, eax=0x%08lx, ebx=0x%08lx, ecx=0x%08lx, " "edx=0x%08lx, esi=0x%08lx, edi=0x%08lx, ebp=0x%08lx, " "error=0x%04x, pad=0x%04x\n", (dwIoControlCode==IFS_IOCTL_21)?"IFS_IOCTL_21":"IFS_IOCTL_2F", pIn->ar_proid, pIn->ar_eax, pIn->ar_ebx, pIn->ar_ecx, pIn->ar_edx, pIn->ar_esi, pIn->ar_edi, pIn->ar_ebp, pIn->ar_error, pIn->ar_pad ); win32apieq_2_CONTEXT(pIn,&cxt); if(dwIoControlCode==IFS_IOCTL_21) { DOS3Call(&cxt); /* Call int 21h */ } else { INT_Int2fHandler(&cxt); /* Call int 2Fh */ } CONTEXT_2_win32apieq(&cxt,pOut); retv = TRUE; } break; case IFS_IOCTL_GET_RES:{ FIXME( "Control 'IFS_IOCTL_GET_RES' not implemented\n"); retv = FALSE; } break; case IFS_IOCTL_GET_NETPRO_NAME_A:{ FIXME( "Control 'IFS_IOCTL_GET_NETPRO_NAME_A' not implemented\n"); retv = FALSE; } break; default: FIXME( "Control %ld not implemented\n", dwIoControlCode); retv = FALSE; } return retv; }
/*********************************************************************** * DeviceIoControl (IFSMGR.VXD.@) */ BOOL WINAPI IFSMGR_DeviceIoControl(DWORD dwIoControlCode, LPVOID lpvInBuffer, DWORD cbInBuffer, LPVOID lpvOutBuffer, DWORD cbOutBuffer, LPDWORD lpcbBytesReturned, LPOVERLAPPED lpOverlapped) { TRACE("(%ld,%p,%ld,%p,%ld,%p,%p): stub\n", dwIoControlCode, lpvInBuffer,cbInBuffer, lpvOutBuffer,cbOutBuffer, lpcbBytesReturned, lpOverlapped); switch (dwIoControlCode) { case IFS_IOCTL_21: case IFS_IOCTL_2F: { CONTEXT86 cxt; struct win32apireq *pIn=(struct win32apireq *) lpvInBuffer; struct win32apireq *pOut=(struct win32apireq *) lpvOutBuffer; TRACE( "Control '%s': " "proid=0x%08lx, eax=0x%08lx, ebx=0x%08lx, ecx=0x%08lx, " "edx=0x%08lx, esi=0x%08lx, edi=0x%08lx, ebp=0x%08lx, " "error=0x%04x, pad=0x%04x\n", (dwIoControlCode==IFS_IOCTL_21)?"IFS_IOCTL_21":"IFS_IOCTL_2F", pIn->ar_proid, pIn->ar_eax, pIn->ar_ebx, pIn->ar_ecx, pIn->ar_edx, pIn->ar_esi, pIn->ar_edi, pIn->ar_ebp, pIn->ar_error, pIn->ar_pad ); win32apieq_2_CONTEXT(pIn,&cxt); if(dwIoControlCode==IFS_IOCTL_21) CallBuiltinHandler( &cxt, 0x21 ); else CallBuiltinHandler( &cxt, 0x2f ); CONTEXT_2_win32apieq(&cxt,pOut); return TRUE; } case IFS_IOCTL_GET_RES: FIXME( "Control 'IFS_IOCTL_GET_RES' not implemented\n"); return FALSE; case IFS_IOCTL_GET_NETPRO_NAME_A: FIXME( "Control 'IFS_IOCTL_GET_NETPRO_NAME_A' not implemented\n"); return FALSE; default: FIXME( "Control %ld not implemented\n", dwIoControlCode); return FALSE; } }