📄 rilmain.cpp
字号:
RILSERIALPORTSTATS* pResult = (RILSERIALPORTSTATS*)pBufOut;
if (pBufOut && dwLenOut >= sizeof(RILSERIALPORTSTATS) &&
SUCCEEDED(RILDrv_GetSerialPortStatistics(dwOpenData, pResult)))
{
dwOutUsed = sizeof(RILSERIALPORTSTATS);
fRet = TRUE;
}
break;
}
// RIL_GetDriverVersion()
case IOCTL_RIL_GETDRIVERVERSION:
{
DWORD *pResult = (DWORD *)pBufOut;
if (pBufOut && dwLenOut >= sizeof(DWORD))
{
// For now, versioning is going to be done manually on an as needed basis
*pResult = 0x00020002;
dwOutUsed = sizeof(DWORD);
fRet = TRUE;
}
break;
}
case IOCTL_RIL_GETDRIVERVERSIONEX:
{
DEFRILVERSIONEX( RilDriverVersionEx );
const LPRILVERSIONEX pRilDriverVersionExBuf = (LPRILVERSIONEX)pBufOut;
if ( !pRilDriverVersionExBuf || (dwLenOut < sizeof(RilDriverVersionEx)) )
{
DEBUGMSG( ZONE_ERROR, (_T("RILDrv : E : RIL_IOControl : IOCTL_RIL_GETDRIVERVERSIONEX : NULL pointer to output buffer or output buffer with insuffcient size [%lu bytes]\r\n"), dwLenOut) );
break;
}
fRet = CeSafeCopyMemory( pRilDriverVersionExBuf, &RilDriverVersionEx, sizeof(RilDriverVersionEx) );
if ( fRet )
{
dwOutUsed = sizeof(RilDriverVersionEx);
}
break;
}
#ifdef RIL_LAST_ERROR
case IOCTL_RIL_GETLASTERROR:
{
DWORD *pResult = (DWORD *)pBufOut;
if (pBufOut && dwLenOut >= sizeof(DWORD))
{
// Give them back the error
*pResult = g_dwLastError;
dwOutUsed = sizeof(DWORD);
fRet = TRUE;
}
break;
}
break;
#endif
case IOCTL_PSL_NOTIFY:
{
pHandle->CancelNotifications();
fRet = TRUE;
break;
}
case IOCTL_RIL_GETSERIALPORTHANDLEFROMCONTEXTID:
{
if ( pBufIn && (dwLenIn == sizeof(DWORD)) )
{
RETAILMSG(1,(TEXT("[TI][IOControl]:IOCTL_RIL_GETSERIALPORTHANDLEFROMCONTEXTID")));
if ( SUCCEEDED(RILDrv_GetSerialPortHandleFromContextID(*((DWORD*)pBufIn), (TCHAR*) pBufOut, dwLenOut, &dwOutUsed)))
{
fRet = TRUE;
}
}
break;
}
case IOCTL_RIL_GETVTSERIALPORTHANDLE:
{
//Dual-card:merge from crowsbow, it should be open when the function is ready
//if ( SUCCEEDED(RILDrv_GetVTSerialPortHandle((TCHAR*) pBufOut, dwLenOut, &dwOutUsed)))
{
fRet = TRUE;
}
break;
}
// add by yingmingbo-20080222
// RIL_GetContactNameInfoEx()
case IOCTL_RILEXT_GETCONTACTNAMEINFO:
{
RETAILMSG(1,(TEXT("[TI][IOControl]:IOCTL_RILExt_GETCONTACTNAMEINFO BufLen=%08x"),dwLenIn));
if ( pBufIn && pBufOut && (dwLenOut == sizeof(CONTACT_NAME_INFO)) )
{
RETAILMSG(1,(TEXT("[TI][IOControl]:IOCTL_RILExt_GETCONTACTNAMEINFO")));
if ( SUCCEEDED(RILDrv_GetContactNameInfo(dwOpenData, (WCHAR*)pBufIn, (CONTACT_NAME_INFO*) pBufOut)))
{
dwOutUsed = sizeof(CONTACT_NAME_INFO);
fRet = TRUE;
RETAILMSG(1,(TEXT("[TI][IOControl]:IOCTL_RILExt_GETCONTACTNAMEINFO return TRUE")));
}
}
break;
}
// end add by yingmingbo
// Other RIL_ APIs
default:
{
HRESULT* phr = (HRESULT*)pBufOut;
if (!pBufOut || dwLenOut < sizeof(HRESULT))
{
goto Error;
}
switch (dwCode)
{
#ifdef OEM1_DRIVER_PM
// RIL saving power management io control
case IOCTL_RIL_POWERSUSPEND:
CALLDRVAPI(RILDrv_EnablePowerSavings);
break;
// RIL disable saving power management io control
case IOCTL_RIL_POWERRESUME:
CALLDRVAPI(RILDrv_DisablePowerSavings);
break;
#endif // OEM1_DRIVER_PM
// RIL_GetSubscriberNumbers()
case IOCTL_RIL_GETSUBSCRIBERNUMBERS:
CALLDRVAPI(RILDrv_GetSubscriberNumbers);
break;
// RIL_GetOperatorList()
case IOCTL_RIL_GETOPERATORLIST:
CALLDRVAPI(RILDrv_GetOperatorList);
break;
// RIL_GetPreferredOperatorList()
case IOCTL_RIL_GETPREFERREDOPERATORLIST:
CALLDRVAPI_PARAMS(DWORD, RILDrv_GetPreferredOperatorList(dwOpenData, *pParams));
break;
// RIL_AddPreferredOperator()
case IOCTL_RIL_ADDPREFERREDOPERATOR:
CALLDRVAPI_PARAMS(ADDPREFERREDOPERATOR_PARAMS, RILDrv_AddPreferredOperator(dwOpenData, \
pParams->dwIndex, &pParams->ronOperatorNames));
break;
// RIL_RemovePreferredOperator()
case IOCTL_RIL_REMOVEPREFERREDOPERATOR:
CALLDRVAPI_PARAMS(DWORD, RILDrv_RemovePreferredOperator(dwOpenData, *pParams));
break;
// RIL_GetCurrentOperator()
case IOCTL_RIL_GETCURRENTOPERATOR:
CALLDRVAPI_PARAMS(DWORD, RILDrv_GetCurrentOperator(dwOpenData, *pParams));
break;
// RIL_GetAllOperatorsList()
case IOCTL_RIL_GETALLOPERATORSLIST:
CALLDRVAPI(RILDrv_GetAllOperatorsList);
break;
// RIL_RegisterOnNetwork()
case IOCTL_RIL_REGISTERONNETWORK:
CALLDRVAPI_PARAMS(REGISTERONNETWORK_PARAMS, RILDrv_RegisterOnNetwork(dwOpenData, pParams->dwMode, \
&pParams->ronOperatorNames));
break;
// RIL_UnregisterFromNetwork()
case IOCTL_RIL_UNREGISTERFROMNETWORK:
CALLDRVAPI(RILDrv_UnregisterFromNetwork);
break;
// RIL_GetRegistrationStatus()
case IOCTL_RIL_GETREGISTRATIONSTATUS:
CALLDRVAPI(RILDrv_GetRegistrationStatus);
break;
// RIL_GetCallerIdSettings()
case IOCTL_RIL_GETCALLERIDSETTINGS:
CALLDRVAPI(RILDrv_GetCallerIdSettings);
break;
// RIL_SetCallerIdStatus()
case IOCTL_RIL_SETCALLERIDSTATUS:
CALLDRVAPI_PARAMS(DWORD, RILDrv_SetCallerIdStatus(dwOpenData, *pParams));
break;
// RIL_GetHideIdSettings()
case IOCTL_RIL_GETHIDEIDSETTINGS:
CALLDRVAPI(RILDrv_GetHideIdSettings);
break;
// RIL_SetHideIdStatus()
case IOCTL_RIL_SETHIDEIDSTATUS:
CALLDRVAPI_PARAMS(DWORD, RILDrv_SetHideIdStatus(dwOpenData, *pParams));
break;
// RIL_GetDialedIdSettings()
case IOCTL_RIL_GETDIALEDIDSETTINGS:
CALLDRVAPI(RILDrv_GetDialedIdSettings);
break;
// RIL_SetDialedIdStatus()
case IOCTL_RIL_SETDIALEDIDSTATUS:
CALLDRVAPI_PARAMS(DWORD, RILDrv_SetDialedIdStatus(dwOpenData, *pParams));
break;
// RIL_GetHideConnectedIdSettings()
case IOCTL_RIL_GETHIDECONNECTEDIDSETTINGS:
CALLDRVAPI(RILDrv_GetHideConnectedIdSettings);
break;
// RIL_SetHideConnectedIdStatus()
case IOCTL_RIL_SETHIDECONNECTEDIDSTATUS:
CALLDRVAPI_PARAMS(DWORD, RILDrv_SetHideConnectedIdStatus(dwOpenData, *pParams));
break;
// RIL_GetClosedGroupSettings()
case IOCTL_RIL_GETCLOSEDGROUPSETTINGS:
CALLDRVAPI(RILDrv_GetClosedGroupSettings);
break;
// RIL_SetClosedGroupSettings()
case IOCTL_RIL_SETCLOSEDGROUPSETTINGS:
CALLDRVAPI_PARAMS(RILCLOSEDGROUPSETTINGS, RILDrv_SetClosedGroupSettings(dwOpenData, pParams));
break;
// RIL_GetCallForwardingSettings()
case IOCTL_RIL_GETCALLFORWARDINGSETTINGS:
CALLDRVAPI_PARAMS(GETCALLFORWARDING_PARAMS, RILDrv_GetCallForwardingSettings(dwOpenData, pParams->dwReason, pParams->dwInfoClasses));
break;
// RIL_AddCallForwarding()
case IOCTL_RIL_ADDCALLFORWARDING:
CALLDRVAPI_PARAMS(ADDCALLFORWARDING_PARAMS, RILDrv_AddCallForwarding(dwOpenData, pParams->dwReason, \
&pParams->rcfsSettings));
break;
// RIL_RemoveCallForwarding()
case IOCTL_RIL_REMOVECALLFORWARDING:
CALLDRVAPI_PARAMS(REMOVECALLFORWARDING_PARAMS, RILDrv_RemoveCallForwarding(dwOpenData, \
pParams->dwReason, pParams->dwInfoClasses));
break;
// RIL_SetCallForwardingStatus()
case IOCTL_RIL_SETCALLFORWARDINGSTATUS:
CALLDRVAPI_PARAMS(SETCALLFORWARDINGSTATUS_PARAMS, RILDrv_SetCallForwardingStatus(dwOpenData, \
pParams->dwReason, \
pParams->dwInfoClasses, \
pParams->dwStatus));
break;
// RIL_GetCallWaitingSettings()
case IOCTL_RIL_GETCALLWAITINGSETTINGS:
CALLDRVAPI_PARAMS(GETCALLWAITINGSTATUS_PARAMS, RILDrv_GetCallWaitingSettings(dwOpenData, pParams->dwInfoClasses));
break;
// RIL_SetCallWaitingStatus()
case IOCTL_RIL_SETCALLWAITINGSTATUS:
CALLDRVAPI_PARAMS(SETCALLWAITINGSTATUS_PARAMS, RILDrv_SetCallWaitingStatus(dwOpenData, \
pParams->dwInfoClasses, pParams->dwStatus));
break;
// RIL_SendSupServiceData()
case IOCTL_RIL_SENDSUPSERVICEDATA:
CALLDRVAPI_ARRAY(BYTE, RILDrv_SendSupServiceData(dwOpenData, pParams, dwLenIn));
break;
// RIL_CancelSupServiceDataSession()
case IOCTL_RIL_CANCELSUPSERVICEDATASESSION:
CALLDRVAPI(RILDrv_CancelSupServiceDataSession);
break;
// RIL_GetCurrentAddressId()
case IOCTL_RIL_GETCURRENTADDRESSID:
CALLDRVAPI(RILDrv_GetCurrentAddressId);
break;
// RIL_SetCurrentAddressId()
case IOCTL_RIL_SETCURRENTADDRESSID:
CALLDRVAPI_PARAMS(DWORD, RILDrv_SetCurrentAddressId(dwOpenData, *pParams));
break;
// RIL_Dial()
case IOCTL_RIL_DIAL:
CALLDRVAPI_PARAMS(DIAL_PARAMS, RILDrv_Dial(dwOpenData, pParams->szAddress, pParams->dwType, \
pParams->dwOptions));
break;
// RIL_Asnwer()
case IOCTL_RIL_ANSWER:
CALLDRVAPI(RILDrv_Answer);
break;
// RIL_Hangup()
case IOCTL_RIL_HANGUP:
CALLDRVAPI(RILDrv_Hangup);
break;
// RIL_SendDTMF()
case IOCTL_RIL_SENDDTMF:
CALLDRVAPI_ARRAY(SENDDTMF_PARAMS, RILDrv_SendDTMF(dwOpenData, pParams->szDTMF, pParams->dwDuration));
break;
// RIL_SetDTMFMonitoring()
case IOCTL_RIL_SETDTMFMONITORING:
CALLDRVAPI_PARAMS(BOOL, RILDrv_SetDTMFMonitoring(dwOpenData, *pParams));
break;
// RIL_GetCallList()
case IOCTL_RIL_GETCALLLIST:
CALLDRVAPI(RILDrv_GetCallList);
break;
case IOCTL_RIL_SPECIALCLCC:
CALLDRVAPI(RILDrv_GetSpecialCallList);
break;
// RIL_ManageCalls()
case IOCTL_RIL_MANAGECALLS:
CALLDRVAPI_PARAMS(MANAGECALLS_PARAMS, RILDrv_ManageCalls(dwOpenData, pParams->dwCommand, pParams->dwID));
break;
// RIL_TransferCall()
case IOCTL_RIL_TRANSFERCALL:
CALLDRVAPI_PARAMS(TRANSFERCALL_PARAMS, RILDrv_TransferCall(dwOpenData, &pParams->raAddress, \
(pParams->fSubAddress ? &pParams->rsaSubAddress : NULL)));
break;
// RIL_GetLineStatus()
case IOCTL_RIL_GETLINESTATUS:
CALLDRVAPI(RILDrv_GetLineStatus);
break;
// RIL_GetAudioGain()
case IOCTL_RIL_GETAUDIOGAIN:
CALLDRVAPI(RILDrv_GetAudioGain);
break;
// RIL_SetAudioGain()
case IOCTL_RIL_SETAUDIOGAIN:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -