You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
165 lines
5.2 KiB
165 lines
5.2 KiB
/*==========================================================================
|
|
*
|
|
* Copyright (C) 1998-2000 Microsoft Corporation. All Rights Reserved.
|
|
*
|
|
* File: Utils.h
|
|
* Content: serial service provider utilitiy functions
|
|
*
|
|
* History:
|
|
* Date By Reason
|
|
* ==== == ======
|
|
* 11/25/98 jtk Created
|
|
***************************************************************************/
|
|
|
|
#ifndef __UTILS_H__
|
|
#define __UTILS_H__
|
|
|
|
#undef DPF_SUBCOMP
|
|
#define DPF_SUBCOMP DN_SUBCOMP_MODEM
|
|
|
|
|
|
//**********************************************************************
|
|
// Constant definitions
|
|
//**********************************************************************
|
|
|
|
//
|
|
// type definition for values in StringToValue and ValueToString
|
|
//
|
|
#define VALUE_ENUM_TYPE DWORD
|
|
|
|
//**********************************************************************
|
|
// Macro definitions
|
|
//**********************************************************************
|
|
|
|
//**********************************************************************
|
|
// Structure definitions
|
|
//**********************************************************************
|
|
|
|
//
|
|
// forward strucutre references
|
|
//
|
|
class CModemSPData;
|
|
typedef struct _BUFFERDESC BUFFERDESC;
|
|
typedef struct _MESSAGE_HEADER MESSAGE_HEADER;
|
|
|
|
//
|
|
// structure for relating a string to an enum value
|
|
//
|
|
typedef struct _STRING_BLOCK
|
|
{
|
|
DWORD dwEnumValue;
|
|
const WCHAR *pWCHARKey;
|
|
DWORD dwWCHARKeyLength;
|
|
const char *pASCIIKey;
|
|
DWORD dwASCIIKeyLength;
|
|
TCHAR szLocalizedKey[256];
|
|
} STRING_BLOCK;
|
|
|
|
//
|
|
// structure to generate list of modems
|
|
//
|
|
typedef struct _MODEM_NAME_DATA
|
|
{
|
|
DWORD dwModemID; // modem ID
|
|
DWORD dwModemNameSize; // size of name (including NULL)
|
|
const TCHAR *pModemName; // modem name
|
|
} MODEM_NAME_DATA;
|
|
|
|
//**********************************************************************
|
|
// Variable definitions
|
|
//**********************************************************************
|
|
|
|
//**********************************************************************
|
|
// Function prototypes
|
|
//**********************************************************************
|
|
|
|
BOOL ModemInitProcessGlobals( void );
|
|
void ModemDeinitProcessGlobals( void );
|
|
|
|
HRESULT InitializeInterfaceGlobals( CModemSPData *const pSPData );
|
|
void DeinitializeInterfaceGlobals( CModemSPData *const pSPData );
|
|
|
|
HRESULT LoadTAPILibrary( void );
|
|
void UnloadTAPILibrary( void );
|
|
|
|
BOOL IsSerialGUID( const GUID *const pGuid );
|
|
|
|
BOOL StringToValue( const WCHAR *const pString,
|
|
const DWORD dwStringLength,
|
|
VALUE_ENUM_TYPE *const pEnum,
|
|
const STRING_BLOCK *const pPairs,
|
|
const DWORD dwPairCount );
|
|
|
|
BOOL ValueToString( const WCHAR **const ppString,
|
|
DWORD *const pdwStringLength,
|
|
const DWORD Enum,
|
|
const STRING_BLOCK *const pPairs,
|
|
const DWORD dwPairCount );
|
|
|
|
void DeviceIDToGuid( GUID *const pGuid, const UINT_PTR DeviceID, const GUID *const pEncryptionGuid );
|
|
DWORD GuidToDeviceID( const GUID *const pGuid, const GUID *const pEncryptionGuid );
|
|
|
|
void ComDeviceIDToString( TCHAR *const pString, const UINT_PTR DeviceID );
|
|
|
|
HRESULT WideToAnsi( const WCHAR *const pWCHARString,
|
|
const DWORD dwWCHARStringLength,
|
|
char *const pString,
|
|
DWORD *const pdwStringLength );
|
|
|
|
HRESULT AnsiToWide( const char *const pString,
|
|
const DWORD dwStringLength,
|
|
WCHAR *const pWCHARString,
|
|
DWORD *const pdwWCHARStringLength );
|
|
|
|
HRESULT CreateSPData( CModemSPData **const ppSPData,
|
|
const SP_TYPE SPType,
|
|
IDP8ServiceProviderVtbl *const pVtbl );
|
|
|
|
HRESULT InitializeInterfaceGlobals( CModemSPData *const pSPData );
|
|
void DeinitializeInterfaceGlobals( CModemSPData *const pSPData );
|
|
|
|
HRESULT GenerateAvailableComPortList( BOOL *const pfPortAvailable,
|
|
const UINT_PTR uMaxDeviceIndex,
|
|
DWORD *const pdwPortCount );
|
|
|
|
HRESULT GenerateAvailableModemList( const TAPI_INFO *const pTAPIInfo,
|
|
DWORD *const pdwModemCount,
|
|
MODEM_NAME_DATA *const pModemNameData,
|
|
DWORD *const pdwModemNameDataSize );
|
|
|
|
_inline DWORD ModemIDFromTAPIID( const DWORD dwTAPIID ) { return ( dwTAPIID + 1 ); }
|
|
|
|
#undef DPF_MODNAME
|
|
#define DPF_MODNAME "TAPIIDFromModemID"
|
|
_inline DWORD TAPIIDFromModemID( const DWORD dwModemID )
|
|
{
|
|
DNASSERT( dwModemID != 0 );
|
|
return ( dwModemID - 1 );
|
|
}
|
|
|
|
#undef DPF_MODNAME
|
|
|
|
|
|
#ifndef UNICODE
|
|
HRESULT PhoneNumberToWCHAR( const char *const pPhoneNumber,
|
|
WCHAR *const pWCHARPhoneNumber,
|
|
DWORD *const pdwWCHARPhoneNumberSize );
|
|
|
|
HRESULT PhoneNumberFromWCHAR( const WCHAR *const pWCHARPhoneNumber,
|
|
char *const pPhoneNumber,
|
|
DWORD *const pdwPhoneNumberSize );
|
|
#endif
|
|
//
|
|
// GUID encryption/decription code. Note that it's presently an XOR function
|
|
// so map the decryption code to the encryption function.
|
|
//
|
|
void ModemEncryptGuid( const GUID *const pSourceGuid,
|
|
GUID *const pDestinationGuid,
|
|
const GUID *const pEncrpytionKey );
|
|
|
|
inline void ModemDecryptGuid( const GUID *const pSourceGuid,
|
|
GUID *const pDestinationGuid,
|
|
const GUID *const pEncryptionKey ) { ModemEncryptGuid( pSourceGuid, pDestinationGuid, pEncryptionKey ); }
|
|
|
|
|
|
#endif // __UTILS_H__
|