// --------------------------------------------------------------------------- // CAccPolAudioUnitBase::GetAudioControlL // --------------------------------------------------------------------------- // EXPORT_C TBool CAccPolAudioUnitBase::GetAudioControlL( TTopologyConObjectType aObjectType, TUint32 aChannel, CAccPolAudioControlBase*& aAudioControl ) const { API_TRACE_2( "[AccFW: ACCPOLAUDIODEVICETOPOLOGY] CAccPolAudioUnitBase::GetAudioControlL() - Object type=%d, Channel number=%d", aObjectType, aChannel ); TBool bFound( EFalse ); aAudioControl = NULL; if( aObjectType == EAccPolAudioVolumeControlObject || aObjectType == EAccPolAudioMuteControlObject ) { TInt count = iAudioControls.Count(); for( TInt i = 0; i < count; i++ ) { if( iAudioControls.operator[]( i )->ObjectType() == aObjectType && iAudioControls.operator[]( i )->Channel() == aChannel ) { aAudioControl = iAudioControls.operator[]( i ); bFound = ETrue; break; } } } else { User::Leave( KErrGeneral ); } API_TRACE_1( "[AccFW: ACCPOLAUDIODEVICETOPOLOGY] CAccPolAudioUnitBase::GetAudioControlL() - Return=%d", bFound ); return bFound; }
static BOOL pGetAdapterPrimaryIpAddress( IN CONST DWORD cbAdapterAddress, IN CONST BYTE* pAdapterAddress, IN OUT LPDWORD pcbIpAddress, OUT LPBYTE pIpAddress) { XTLASSERT(!IsBadReadPtr(pAdapterAddress, cbAdapterAddress)); XTLASSERT(!IsBadWritePtr(pcbIpAddress, sizeof(DWORD))); XTLASSERT(!IsBadWritePtr(pIpAddress, *pcbIpAddress)); ULONG ulOutBufLen(0); DWORD dwResult = ::GetAdaptersInfo(NULL, &ulOutBufLen); if (dwResult != ERROR_BUFFER_OVERFLOW) { XTLTRACE2(NDASSVC_IX, TRACE_LEVEL_ERROR, "Getting adapter info size failed, result=0x%X, error=0x%X.\n", dwResult, GetLastError()); return FALSE; } PIP_ADAPTER_INFO pAdapterInfo = (IP_ADAPTER_INFO*) ::HeapAlloc( ::GetProcessHeap(), HEAP_ZERO_MEMORY, ulOutBufLen); if (NULL == pAdapterInfo) { XTLTRACE2(NDASSVC_IX, TRACE_LEVEL_ERROR, "HeapAlloc failed, bytes=%d\n", ulOutBufLen); return FALSE; } XTL::AutoProcessHeap autoAdapterInfo = pAdapterInfo; dwResult = ::GetAdaptersInfo(pAdapterInfo, &ulOutBufLen); if (dwResult != ERROR_SUCCESS) { XTLTRACE2(NDASSVC_IX, TRACE_LEVEL_ERROR, "Getting adapter info failed, result=0x%X, error=0x%X.\n", dwResult, GetLastError()); return FALSE; } PIP_ADAPTER_INFO pAdapter = pAdapterInfo; BOOL bFound(FALSE); while (NULL != pAdapter) { if (cbAdapterAddress == pAdapter->AddressLength && ::memcmp(pAdapterAddress, pAdapter->Address, cbAdapterAddress) == 0) { SOCKADDR_IN sockAddress; INT iSockAddressLength = sizeof(SOCKADDR); INT iResult = ::WSAStringToAddressA( pAdapter->IpAddressList.IpAddress.String, AF_INET, NULL, (PSOCKADDR)&sockAddress, &iSockAddressLength); if (0 != iResult) { XTLTRACE2(NDASSVC_IX, TRACE_LEVEL_ERROR, "WSAStringToAddress failed, error=0x%X.\n", GetLastError()); break; } if (*pcbIpAddress < sizeof(sockAddress.sin_addr)) { *pcbIpAddress = sizeof(sockAddress.sin_addr); ::SetLastError(ERROR_BUFFER_OVERFLOW); return FALSE; } *pcbIpAddress = sizeof(sockAddress.sin_addr); ::CopyMemory(pIpAddress, &sockAddress.sin_addr, *pcbIpAddress); TCHAR wszIpAddress[17] = {0}; ::MultiByteToWideChar( CP_ACP, 0, pAdapter->IpAddressList.IpAddress.String, 16, wszIpAddress, 17); XTLTRACE2(NDASSVC_IX, TRACE_LEVEL_INFORMATION, "IP address=%ls\n", wszIpAddress); bFound = TRUE; break; } pAdapter = pAdapter->Next; } if (!bFound) { XTLTRACE2(NDASSVC_IX, TRACE_LEVEL_WARNING, "No IP addresses are associated with the adapter\n"); } return TRUE; }
static BOOL pGetAdapterPrimaryIpAddress( IN CONST DWORD cbAdapterAddress, IN CONST BYTE* pAdapterAddress, IN OUT LPDWORD pcbIpAddress, OUT LPBYTE pIpAddress) { _ASSERTE(!IsBadReadPtr(pAdapterAddress, cbAdapterAddress)); _ASSERTE(!IsBadWritePtr(pcbIpAddress, sizeof(DWORD))); _ASSERTE(!IsBadWritePtr(pIpAddress, *pcbIpAddress)); ULONG ulOutBufLen(0); DWORD dwResult = ::GetAdaptersInfo(NULL, &ulOutBufLen); if (dwResult != ERROR_BUFFER_OVERFLOW) { DPErrorEx(_FT("Getting adapter info size failed: ")); return FALSE; } PIP_ADAPTER_INFO pAdapterInfo = (IP_ADAPTER_INFO*) ::HeapAlloc( ::GetProcessHeap(), HEAP_ZERO_MEMORY, ulOutBufLen); if (NULL == pAdapterInfo) { DPErrorEx(_FT("Out of memory: ")); return FALSE; } AutoProcessHeap autoAdapterInfo = pAdapterInfo; dwResult = ::GetAdaptersInfo(pAdapterInfo, &ulOutBufLen); if (dwResult != ERROR_SUCCESS) { DPErrorEx(_FT("Getting adapter info failed: ")); return FALSE; } PIP_ADAPTER_INFO pAdapter = pAdapterInfo; BOOL bFound(FALSE); while (NULL != pAdapter) { if (cbAdapterAddress == pAdapter->AddressLength && ::memcmp(pAdapterAddress, pAdapter->Address, cbAdapterAddress) == 0) { SOCKADDR_IN sockAddress; INT iSockAddressLength = sizeof(SOCKADDR); INT iResult = ::WSAStringToAddressA( pAdapter->IpAddressList.IpAddress.String, AF_INET, NULL, (PSOCKADDR)&sockAddress, &iSockAddressLength); if (0 != iResult) { DPErrorEx(_FT("WSAStringToAddress failed: ")); break; } if (*pcbIpAddress < sizeof(sockAddress.sin_addr)) { *pcbIpAddress = sizeof(sockAddress.sin_addr); ::SetLastError(ERROR_BUFFER_OVERFLOW); return FALSE; } *pcbIpAddress = sizeof(sockAddress.sin_addr); ::CopyMemory(pIpAddress, &sockAddress.sin_addr, *pcbIpAddress); TCHAR wszIpAddress[17] = {0}; ::MultiByteToWideChar( CP_ACP, 0, pAdapter->IpAddressList.IpAddress.String, 16, wszIpAddress, 17); DPInfo(_FT("IP Address: %s\n"), wszIpAddress); bFound = TRUE; break; } pAdapter = pAdapter->Next; } if (!bFound) { DPWarning(_FT("No IP addresses are associated with the adapter.\n")); } return TRUE; }