summaryrefslogtreecommitdiff
path: root/network/wlan/ihvsample/profile.cpp
diff options
context:
space:
mode:
authorAdam Shapiro <[email protected]>2016-02-04 12:57:08 -0800
committerAdam Shapiro <[email protected]>2016-02-04 12:57:08 -0800
commit921231effe018f3939f5b67fc7e44560aa6f3998 (patch)
tree8b9b459a02222a9ce98a89bd6956eb8beb2757d9 /network/wlan/ihvsample/profile.cpp
parentc4ba9c629505328d040d318a6193b966d7dbc800 (diff)
Moved Native WIFI IHV Service Sample
Moves sample to unique folder, in order to add another WIFI sample GitHub repository
Diffstat (limited to 'network/wlan/ihvsample/profile.cpp')
-rw-r--r--network/wlan/ihvsample/profile.cpp1222
1 files changed, 0 insertions, 1222 deletions
diff --git a/network/wlan/ihvsample/profile.cpp b/network/wlan/ihvsample/profile.cpp
deleted file mode 100644
index c6988990..00000000
--- a/network/wlan/ihvsample/profile.cpp
+++ /dev/null
@@ -1,1222 +0,0 @@
-//
-// Copyright (C) Microsoft Corporation 2005
-// IHV UI Extension sample
-//
-
-#include "precomp.h"
-
-
-
-
-//
-// Free BSTR
-//
-#define SYS_FREE_STRING( _s ) \
- if ( _s ) \
- { \
- SysFreeString( _s ); \
- (_s) = NULL; \
- } \
-
-
-//
-// Release interface.
-//
-#define RELEASE_INTERFACE( _p ) \
- if ( _p ) \
- { \
- (_p)->Release( ); \
- (_p) = NULL; \
- } \
-
-
-// XPath strings for parsing xml blobs,
-
-#define CON_PARAM1_XPATH L"/IhvConnectivity/IHVConnectivityParam1"
-#define CON_PARAM2_XPATH L"/IhvConnectivity/IHVConnectivityParam2"
-
-
-#define SEC_FSFLAG_XPATH L"/IhvSecurity/IHVUsesFullSecurity"
-#define SEC_ATYPE_XPATH L"/IhvSecurity/IHVAuthentication"
-#define SEC_ETYPE_XPATH L"/IhvSecurity/IHVEncryption"
-#define SEC_PARAM1_XPATH L"/IhvSecurity/IHVSecurityParam1"
-#define SEC_PARAM2_XPATH L"/IhvSecurity/IHVSecurityParam2"
-
-
-// Strings to match the profile with internal data types.
-LPCWSTR
-gppszIhvAuthTypes[] =
-{
- L"IHVAuthV1",
- L"IHVAuthV2",
- L"IHVAuthV3"
-};
-
-
-LPCWSTR
-gppszIhvCipherTypes[] =
-{
- L"None",
- L"IHVCipher1",
- L"IHVCipher2",
- L"IHVCipher3"
-};
-
-
-//
-// Base class for profile APIs.
-//
-class CIhvProfileBase
-{
-public:
-
- // Constructor
- CIhvProfileBase( )
- {
- m_pRootNode = NULL;
- }
-
- // Destructor
- ~CIhvProfileBase( )
- {
- RELEASE_INTERFACE( m_pRootNode );
- }
-
- HRESULT
- LoadXml
- (
- IN BSTR bstrIhvProfile
- );
-
-
- // Caller needs to know what type to
- // cast the pointer to depending upon
- // the type of the derived class.
- // Caller needs to free memory recursively
- // by using the free( ) function.
- virtual
- HRESULT
- GetNativeData
- (
- LPVOID* ppvData
- )
- = 0;
-
-protected:
-
- HRESULT
- GetTextFromNode
- (
- IN LPCWSTR pszQuery,
- OUT BSTR* pbstrText
- );
-
-
- IXMLDOMElement* m_pRootNode;
-
-};
-
-
-
-
-
-//
-// Derived class for connectivity profiles.
-//
-class CIhvConnectivityProfile : public CIhvProfileBase
-{
-
-public:
-
- // Constructor Destructor
- CIhvConnectivityProfile( ) { }
- ~CIhvConnectivityProfile( ) { }
-
- // Caller needs to know what type to
- // cast the pointer to depending upon
- // the type of the derived class.
- // Caller needs to free memory recursively
- // by using the PrivateMemoryFree( ) function.
- HRESULT
- GetNativeData
- (
- LPVOID* ppvData
- );
-
-
- // Accessor dwParam1
- HRESULT
- GetParam1
- (
- DWORD* pdwParam1
- );
-
-
- // Accessor for pszParam2
- HRESULT
- GetParam2
- (
- BSTR* pbstrValue
- );
-
-
-};
-
-
-
-
-
-
-//
-// Derived class for security profiles.
-//
-
-class CIhvSecurityProfile
- : public CIhvProfileBase
-{
-
-public:
-
- // Constructor Destructor
- CIhvSecurityProfile( ) { }
- ~CIhvSecurityProfile( ) { }
-
- // Caller needs to know what type to
- // cast the pointer to depending upon
- // the type of the derived class.
- // Caller needs to free memory recursively
- // by using the PrivateMemoryFree( ) function.
- HRESULT
- GetNativeData
- (
- LPVOID* ppvData
- );
-
-
- // Accessor and Modifier for bUseFullSecurity
- HRESULT
- GetFullSecurityFlag
- (
- BOOL* pbUseFullSecurity
- );
-
-
- // Accessor for AuthType
- HRESULT
- GetAuthType
- (
- PIHV_AUTH_TYPE pAuthType
- );
-
- // Accessor for CipherType
- HRESULT
- GetCipherType
- (
- PIHV_CIPHER_TYPE pCipherType
- );
-
- // Accessor for dwParam1
- HRESULT
- GetParam1
- (
- DWORD* pdwParam1
- );
-
- // Accessor for pszParam2
- HRESULT
- GetParam2
- (
- BSTR* pbstrValue
- );
-
-};
-
-
-// Convert unicode string to BSTR. NULL safe.
-HRESULT
-Wstr2Bstr
-(
- _In_ LPCWSTR pszSrc,
- _Outptr_ BSTR* pbstrDest
-)
-{
- HRESULT hr = S_OK;
-
- if ( !pbstrDest )
- {
- hr = E_INVALIDARG;
- BAIL_ON_FAILURE( hr );
- }
-
- (*pbstrDest) = NULL;
- if ( !pszSrc )
- {
- BAIL( );
- }
-
- (*pbstrDest) = SysAllocString( pszSrc );
- if ( !(*pbstrDest) )
- {
- hr = E_OUTOFMEMORY;
- BAIL_ON_FAILURE( hr );
- }
-
-error:
- return hr;
-}
-
-
-
-
-// Convert unicode string to unicode string. NULL safe.
-// string allocated by malloc and freed by free.
-HRESULT
-Wstr2Wstr
-(
- _In_ LPCWSTR pszSrc,
- _Outptr_ LPWSTR* ppszDest
-)
-{
- HRESULT hr = S_OK;
- size_t len = 0;
-
- if ( !ppszDest )
- {
- hr = E_INVALIDARG;
- BAIL_ON_FAILURE( hr );
- }
-
- (*ppszDest) = NULL;
- if ( !pszSrc )
- {
- BAIL( );
- }
-
- len = 1 + wcslen( pszSrc );
- len *= sizeof( WCHAR );
-
- (*ppszDest) = (LPWSTR) PrivateMemoryAlloc( len );
- if ( !(*ppszDest) )
- {
- hr = E_OUTOFMEMORY;
- BAIL_ON_FAILURE( hr );
- }
-
- CopyMemory( (*ppszDest), pszSrc, len );
-
-error:
- return hr;
-}
-
-
-
-//
-// convert unicode string to DWORD
-//
-HRESULT
-Wstr2Dword
-(
- _In_ LPCWSTR pszSrc,
- _Out_ DWORD* pdwDest
-)
-{
- HRESULT hr = S_OK;
-
- if ( (!pdwDest) || (!pszSrc) )
- {
- hr = E_INVALIDARG;
- BAIL_ON_FAILURE( hr );
- }
-
- (*pdwDest) = (DWORD) _wtol( pszSrc );
-
-error:
- return hr;
-}
-
-
-
-
-//
-// convert unicode string to BOOL
-//
-HRESULT
-Wstr2Bool
-(
- _In_ LPCWSTR pszSrc,
- _Out_ BOOL* pbDest
-)
-{
- HRESULT hr = S_OK;
-
- if ( (!pbDest) || (!pszSrc) )
- {
- hr = E_INVALIDARG;
- BAIL_ON_FAILURE( hr );
- }
-
- if ( 0 == wcscmp( L"TRUE", pszSrc ) )
- {
- (*pbDest) = TRUE;
- }
- else if ( 0 == wcscmp( L"FALSE", pszSrc ) )
- {
- (*pbDest) = FALSE;
- }
- else
- {
- hr = E_INVALIDARG;
- BAIL_ON_FAILURE( hr );
- }
-
-error:
- return hr;
-}
-
-
-
-
-
-
-
-//
-// convert unicode string to auth type
-//
-HRESULT
-Wstr2AuthType
-(
- _In_ LPCWSTR pszSrc,
- _Out_ PIHV_AUTH_TYPE pAuthType
-)
-{
- HRESULT hr = S_OK;
- DWORD dwIndex = 0;
-
- if ( (!pAuthType) || (!pszSrc) )
- {
- hr = E_INVALIDARG;
- BAIL_ON_FAILURE( hr );
- }
-
- for ( dwIndex = 0; dwIndex < MAX_AUTH_TYPES; dwIndex++ )
- {
- if ( 0 == wcscmp( gppszIhvAuthTypes[dwIndex], pszSrc ) )
- {
- (*pAuthType) = (IHV_AUTH_TYPE) dwIndex;
- BAIL( );
- }
- }
-
- // String not found.
- hr = E_INVALIDARG;
- BAIL_ON_FAILURE( hr );
-
-
-error:
- return hr;
-}
-
-
-
-
-
-
-
-//
-// convert unicode string to cipher type
-//
-HRESULT
-Wstr2CipherType
-(
- _In_ LPCWSTR pszSrc,
- _Out_ PIHV_CIPHER_TYPE pCipherType
-)
-{
- HRESULT hr = S_OK;
- DWORD dwIndex = 0;
-
- if ( (!pCipherType) || (!pszSrc) )
- {
- hr = E_INVALIDARG;
- BAIL_ON_FAILURE( hr );
- }
-
- for ( dwIndex = 0; dwIndex < MAX_CIPHER_TYPES; dwIndex++ )
- {
- if ( 0 == wcscmp( gppszIhvCipherTypes[dwIndex], pszSrc ) )
- {
- (*pCipherType) = (IHV_CIPHER_TYPE) dwIndex;
- BAIL( );
- }
- }
-
- // String not found.
- hr = E_INVALIDARG;
- BAIL_ON_FAILURE( hr );
-
-
-error:
- return hr;
-}
-
-
-
-
-// base function to obtain text from
-// node described by XPATH.
-HRESULT
-CIhvProfileBase::GetTextFromNode
-(
- IN LPCWSTR pszQuery,
- OUT BSTR* pbstrText
-)
-{
- HRESULT hr = S_OK;
- BSTR bstrQuery = NULL;
- IXMLDOMNode* pQueryNode = NULL;
-
- ASSERT( pszQuery );
- ASSERT( pbstrText );
-
- // if node is NULL, return empty string.
- if ( !m_pRootNode )
- {
- hr =
- Wstr2Bstr
- (
- L"",
- pbstrText
- );
- BAIL( );
- }
-
- hr =
- Wstr2Bstr
- (
- pszQuery,
- &bstrQuery
- );
- BAIL_ON_FAILURE( hr );
-
- hr = m_pRootNode->selectSingleNode( bstrQuery, &pQueryNode );
- BAIL_ON_FAILURE( hr );
-
- if (!pQueryNode)
- {
- hr = E_UNEXPECTED;
- BAIL_ON_FAILURE( hr );
- }
-
- hr = pQueryNode->get_text( pbstrText );
- BAIL_ON_FAILURE( hr );
-
- if ( !(*pbstrText) )
- {
- hr = E_UNEXPECTED;
- BAIL_ON_FAILURE( hr );
- }
-
-error:
- RELEASE_INTERFACE( pQueryNode );
- SYS_FREE_STRING( bstrQuery );
- return hr;
-}
-
-
-
-// Load node from xml string. If xml string is null this
-// function is a NO_OP.
-HRESULT
-CIhvProfileBase::LoadXml
-(
- IN BSTR bstrIhvProfile
-)
-{
- HRESULT hr = S_OK;
- IXMLDOMDocument* pDOMDoc = NULL;
- IXMLDOMElement* pDocElem = NULL;
- VARIANT_BOOL vfSuccess;
-
- if ( m_pRootNode )
- {
- hr = E_UNEXPECTED;
- BAIL_ON_FAILURE( hr );
- }
-
- if ( !bstrIhvProfile )
- {
- BAIL( );
- }
-
- hr =
- CoCreateInstance
- (
- CLSID_DOMDocument,
- NULL,
- CLSCTX_ALL,
- IID_IXMLDOMDocument,
- (LPVOID *) &pDOMDoc
- );
- BAIL_ON_FAILURE( hr );
-
- hr =
- pDOMDoc->loadXML
- (
- bstrIhvProfile,
- &vfSuccess
- );
- BAIL_ON_FAILURE( hr );
-
- if ( VARIANT_TRUE != vfSuccess )
- {
- hr = E_UNEXPECTED;
- BAIL_ON_FAILURE( hr );
- }
-
- hr =
- pDOMDoc->get_documentElement
- (
- &pDocElem
- );
- BAIL_ON_FAILURE( hr );
-
- // Caching the pointer to the document element
- // in a member variable.
- m_pRootNode = pDocElem;
- pDocElem = NULL;
-
-
-error:
- RELEASE_INTERFACE( pDOMDoc );
- RELEASE_INTERFACE( pDocElem );
- return hr;
-}
-
-
-
-
-
-// Accessor.
-HRESULT
-CIhvConnectivityProfile::GetParam1
-(
- DWORD* pdwParam1
-)
-{
- HRESULT hr = S_OK;
- BSTR bstrData = NULL;
-
- hr =
- GetTextFromNode
- (
- CON_PARAM1_XPATH,
- &bstrData
- );
- BAIL_ON_FAILURE( hr );
-
- if ( NULL == bstrData )
- {
- hr = E_POINTER;
- BAIL_ON_FAILURE( hr );
- }
-
- hr =
- Wstr2Dword
- (
- bstrData,
- pdwParam1
- );
- BAIL_ON_FAILURE( hr );
-
-error:
- SYS_FREE_STRING( bstrData );
- return hr;
-}
-
-
-
-// Accessor.
-HRESULT
-CIhvConnectivityProfile::GetParam2
-(
- BSTR* pbstrValue
-)
-{
- HRESULT hr = S_OK;
-
- hr =
- GetTextFromNode
- (
- CON_PARAM2_XPATH,
- pbstrValue
- );
- BAIL_ON_FAILURE( hr );
-
-
-error:
- return hr;
-}
-
-
-
-
-//
-// Calls the accessors to build native data.
-//
-HRESULT
-CIhvConnectivityProfile::GetNativeData
-(
- LPVOID* ppvData
-)
-{
- HRESULT hr = S_OK;
- PIHV_CONNECTIVITY_PROFILE pIhvProfile = NULL;
- BSTR bstrParam2 = NULL;
-
- if ( !ppvData )
- {
- hr = E_INVALIDARG;
- BAIL_ON_FAILURE( hr );
- }
-
- pIhvProfile = (PIHV_CONNECTIVITY_PROFILE) PrivateMemoryAlloc( sizeof( IHV_CONNECTIVITY_PROFILE ) );
- if ( !pIhvProfile )
- {
- hr = E_OUTOFMEMORY;
- BAIL_ON_FAILURE( hr );
- }
-
- // Ignoring errors since structure is already
- // populated with defaults.
-
- hr =
- GetParam2
- (
- &bstrParam2
- );
- BAIL_ON_FAILURE( hr );
-
- if ( NULL == bstrParam2 )
- {
- hr = E_POINTER;
- BAIL_ON_FAILURE( hr );
- }
-
- hr =
- Wstr2Wstr
- (
- bstrParam2,
- &(pIhvProfile->pszParam2)
- );
- BAIL_ON_FAILURE( hr );
-
- hr =
- GetParam1
- (
- &(pIhvProfile->dwParam1)
- );
-
- // Consuming earlier failures.
- hr = S_OK;
-
- // Transfering local cache to OUT parameter.
- (*ppvData) = pIhvProfile;
- pIhvProfile = NULL;
-
-error:
- if ( pIhvProfile )
- {
- PrivateMemoryFree( pIhvProfile->pszParam2 ); // NULL Safe.
- PrivateMemoryFree( pIhvProfile );
- }
- SYS_FREE_STRING( bstrParam2 );
- return hr;
-}
-
-
-
-
-
-// Accessor.
-HRESULT
-CIhvSecurityProfile::GetFullSecurityFlag
-(
- BOOL* pbUseFullSecurity
-)
-{
- HRESULT hr = S_OK;
- BSTR bstrData = NULL;
-
- hr =
- GetTextFromNode
- (
- SEC_FSFLAG_XPATH,
- &bstrData
- );
- BAIL_ON_FAILURE( hr );
-
- if ( NULL == bstrData )
- {
- hr = E_POINTER;
- BAIL_ON_FAILURE( hr );
- }
-
- hr =
- Wstr2Bool
- (
- bstrData,
- pbUseFullSecurity
- );
- BAIL_ON_FAILURE( hr );
-
-error:
- SYS_FREE_STRING( bstrData );
- return hr;
-}
-
-
-
-
-
-// Accessor.
-HRESULT
-CIhvSecurityProfile::GetAuthType
-(
- PIHV_AUTH_TYPE pAuthType
-)
-{
- HRESULT hr = S_OK;
- BSTR bstrData = NULL;
-
- hr =
- GetTextFromNode
- (
- SEC_ATYPE_XPATH,
- &bstrData
- );
- BAIL_ON_FAILURE( hr );
-
- if ( NULL == bstrData )
- {
- hr = E_POINTER;
- BAIL_ON_FAILURE( hr );
- }
-
- hr =
- Wstr2AuthType
- (
- bstrData,
- pAuthType
- );
- BAIL_ON_FAILURE( hr );
-
-error:
- SYS_FREE_STRING( bstrData );
- return hr;
-}
-
-
-
-
-// Accessor.
-HRESULT
-CIhvSecurityProfile::GetCipherType
-(
- PIHV_CIPHER_TYPE pCipherType
-)
-{
- HRESULT hr = S_OK;
- BSTR bstrData = NULL;
-
- hr =
- GetTextFromNode
- (
- SEC_ETYPE_XPATH,
- &bstrData
- );
- BAIL_ON_FAILURE( hr );
-
- if ( NULL == bstrData )
- {
- hr = E_POINTER;
- BAIL_ON_FAILURE( hr );
- }
-
- hr =
- Wstr2CipherType
- (
- bstrData,
- pCipherType
- );
- BAIL_ON_FAILURE( hr );
-
-error:
- SYS_FREE_STRING( bstrData );
- return hr;
-}
-
-
-
-
-
-// Accessor.
-HRESULT
-CIhvSecurityProfile::GetParam1
-(
- DWORD* pdwParam1
-)
-{
- HRESULT hr = S_OK;
- BSTR bstrData = NULL;
-
- hr =
- GetTextFromNode
- (
- SEC_PARAM1_XPATH,
- &bstrData
- );
- BAIL_ON_FAILURE( hr );
-
- if ( NULL == bstrData )
- {
- hr = E_POINTER;
- BAIL_ON_FAILURE( hr );
- }
-
- hr =
- Wstr2Dword
- (
- bstrData,
- pdwParam1
- );
- BAIL_ON_FAILURE( hr );
-
-error:
- SYS_FREE_STRING( bstrData );
- return hr;
-}
-
-
-
-
-
-
-// Accessor.
-HRESULT
-CIhvSecurityProfile::GetParam2
-(
- BSTR* pbstrValue
-)
-{
- HRESULT hr = S_OK;
-
- hr =
- GetTextFromNode
- (
- SEC_PARAM2_XPATH,
- pbstrValue
- );
- BAIL_ON_FAILURE( hr );
-
-
-error:
- return hr;
-}
-
-
-//
-// Calls the accessors to build native data.
-//
-HRESULT
-CIhvSecurityProfile::GetNativeData
-(
- LPVOID* ppvData
-)
-{
- HRESULT hr = S_OK;
- PIHV_SECURITY_PROFILE pIhvProfile = NULL;
- BSTR bstrParam2 = NULL;
-
- if ( !ppvData )
- {
- hr = E_INVALIDARG;
- BAIL_ON_FAILURE( hr );
- }
-
- pIhvProfile = (PIHV_SECURITY_PROFILE) PrivateMemoryAlloc( sizeof( IHV_SECURITY_PROFILE ) );
- if ( !pIhvProfile )
- {
- hr = E_OUTOFMEMORY;
- BAIL_ON_FAILURE( hr );
- }
-
- pIhvProfile->bUseIhvConnectivityOnly = ( m_pRootNode == NULL );
-
- // Ignoring errors since structure is already
- // populated with defaults.
- hr =
- GetFullSecurityFlag
- (
- &(pIhvProfile->bUseFullSecurity)
- );
-
- hr =
- GetAuthType
- (
- &(pIhvProfile->AuthType)
- );
-
- hr =
- GetCipherType
- (
- &(pIhvProfile->CipherType)
- );
-
- hr =
- GetParam1
- (
- &(pIhvProfile->dwParam1)
- );
-
- hr =
- GetParam2
- (
- &bstrParam2
- );
- BAIL_ON_FAILURE( hr );
-
- if ( NULL == bstrParam2 )
- {
- hr = E_POINTER;
- BAIL_ON_FAILURE( hr );
- }
-
- hr =
- Wstr2Wstr
- (
- bstrParam2,
- &(pIhvProfile->pszParam2)
- );
-
- // Consuming earlier failures.
- hr = S_OK;
-
- // Transfering local cache to OUT parameter.
- (*ppvData) = pIhvProfile;
- pIhvProfile = NULL;
-
-error:
- if ( pIhvProfile )
- {
- PrivateMemoryFree( pIhvProfile->pszParam2 ); // NULL Safe.
- PrivateMemoryFree( pIhvProfile );
- }
- SYS_FREE_STRING( bstrParam2 );
- return hr;
-}
-
-
-// Converts string to connectivity profile.
-DWORD
-GetIhvConnectivityProfile
-(
- PDOT11EXT_IHV_CONNECTIVITY_PROFILE pDot11ExtIhvConnProfile,
- PIHV_CONNECTIVITY_PROFILE* ppConnectivityProfile
-)
-{
- HRESULT hr = S_OK;
- BOOL bComInitialized = FALSE;
- BSTR bstrIhvProfile = NULL;
- PIHV_CONNECTIVITY_PROFILE pConnectivityProfile = NULL;
-
- CIhvConnectivityProfile* pIhvProfile = NULL;
-
- ASSERT( pDot11ExtIhvConnProfile );
- ASSERT( ppConnectivityProfile );
-
-
- // Data structure is multi-thread safe because
- // it is both allocated and freed by current
- // function.
- hr =
- CoInitializeEx
- (
- NULL,
- COINIT_MULTITHREADED
- );
- BAIL_ON_FAILURE( hr );
- bComInitialized = TRUE;
-
-
- pIhvProfile = new(std::nothrow) CIhvConnectivityProfile;
- if (!pIhvProfile)
- {
- hr = E_OUTOFMEMORY;
- BAIL_ON_FAILURE( hr );
- }
-
- hr =
- Wstr2Bstr
- (
- pDot11ExtIhvConnProfile->pszXmlFragmentIhvConnectivity,
- &bstrIhvProfile
- );
- BAIL_ON_FAILURE( hr );
-
- hr =
- pIhvProfile->LoadXml
- (
- bstrIhvProfile
- );
- BAIL_ON_FAILURE( hr );
-
- hr =
- pIhvProfile->GetNativeData
- (
- (LPVOID*) &pConnectivityProfile
- );
- BAIL_ON_FAILURE( hr );
-
-
- (*ppConnectivityProfile) = pConnectivityProfile;
- pConnectivityProfile = NULL;
-
-
-error:
- SYS_FREE_STRING( bstrIhvProfile );
-
- FreeIhvConnectivityProfile ( &pConnectivityProfile );
-
- delete pIhvProfile;
-
- if ( bComInitialized )
- {
- CoUninitialize( );
- }
- return WIN32_FROM_HRESULT( hr );
-}
-
-
-
-
-// free connectivity profile.
-
-VOID
-FreeIhvConnectivityProfile
-(
- PIHV_CONNECTIVITY_PROFILE* ppConnectivityProfile
-)
-{
- if ( ppConnectivityProfile && (*ppConnectivityProfile) )
- {
- PrivateMemoryFree( (*ppConnectivityProfile)->pszParam2 );
- PrivateMemoryFree( (*ppConnectivityProfile) );
- (*ppConnectivityProfile) = NULL;
- }
-}
-
-
-// Converts string to security profile.
-DWORD
-GetIhvSecurityProfile
-(
- PDOT11EXT_IHV_SECURITY_PROFILE pDot11ExtIhvSecProfile,
- PIHV_SECURITY_PROFILE* ppSecurityProfile
-)
-{
- HRESULT hr = S_OK;
- BOOL bComInitialized = FALSE;
- BSTR bstrIhvProfile = NULL;
- PIHV_SECURITY_PROFILE pSecurityProfile = NULL;
-
- CIhvSecurityProfile* pIhvProfile = NULL;
-
- ASSERT( pDot11ExtIhvSecProfile );
- ASSERT( ppSecurityProfile );
-
-
- // Data structure is multi-thread safe because
- // it is both allocated and freed by current
- // function.
- hr =
- CoInitializeEx
- (
- NULL,
- COINIT_MULTITHREADED
- );
- BAIL_ON_FAILURE( hr );
- bComInitialized = TRUE;
-
-
-
- pIhvProfile = new(std::nothrow) CIhvSecurityProfile;
- if (!pIhvProfile)
- {
- hr = E_OUTOFMEMORY;
- BAIL_ON_FAILURE( hr );
- }
-
- hr =
- Wstr2Bstr
- (
- pDot11ExtIhvSecProfile->pszXmlFragmentIhvSecurity,
- &bstrIhvProfile
- );
- BAIL_ON_FAILURE( hr );
-
- hr =
- pIhvProfile->LoadXml
- (
- bstrIhvProfile
- );
- BAIL_ON_FAILURE( hr );
-
- hr =
- pIhvProfile->GetNativeData
- (
- (LPVOID*) &pSecurityProfile
- );
- BAIL_ON_FAILURE( hr );
-
- if ( pDot11ExtIhvSecProfile->bUseMSOnex && pSecurityProfile->bUseFullSecurity )
- {
- hr = E_UNEXPECTED;
- BAIL_ON_FAILURE( hr );
- }
-
- (*ppSecurityProfile) = pSecurityProfile;
- pSecurityProfile = NULL;
-
-
-error:
- SYS_FREE_STRING( bstrIhvProfile );
-
- FreeIhvSecurityProfile ( &pSecurityProfile );
-
- delete pIhvProfile;
-
- if ( bComInitialized )
- {
- CoUninitialize( );
- }
- return WIN32_FROM_HRESULT( hr );
-}
-
-
-
-
-
-// free security profile.
-VOID
-FreeIhvSecurityProfile
-(
- PIHV_SECURITY_PROFILE* ppSecurityProfile
-)
-{
- if ( ppSecurityProfile && (*ppSecurityProfile) )
- {
- PrivateMemoryFree( (*ppSecurityProfile)->pszParam2 );
- PrivateMemoryFree( (*ppSecurityProfile) );
- (*ppSecurityProfile) = NULL;
- }
-}