158 lines
3.6 KiB
C
158 lines
3.6 KiB
C
|
/*
|
||
|
|
||
|
Copyright (c) 1998-1999 Microsoft Corporation
|
||
|
|
||
|
*/
|
||
|
|
||
|
#ifndef __PTUTIL__
|
||
|
#define __PTUTIL__
|
||
|
|
||
|
///////////////////////////////////////////
|
||
|
// Constants
|
||
|
//
|
||
|
#define PTKEY_TERMINALS TEXT("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Telephony\\Terminal Manager")
|
||
|
#define PTKEY_NAME TEXT("Name")
|
||
|
#define PTKEY_COMPANY TEXT("Company")
|
||
|
#define PTKEY_VERSION TEXT("Version")
|
||
|
#define PTKEY_DIRECTIONS TEXT("Directions")
|
||
|
#define PTKEY_MEDIATYPES TEXT("MediaTypes")
|
||
|
#define PTKEY_CLSIDCREATE TEXT("CLSID")
|
||
|
|
||
|
#define PTKEY_MAXSIZE 256
|
||
|
|
||
|
///////////////////////////////////////////
|
||
|
// CPTUtil
|
||
|
//
|
||
|
|
||
|
class CPTTerminal;
|
||
|
|
||
|
class CPTUtil
|
||
|
{
|
||
|
public:
|
||
|
|
||
|
private:
|
||
|
static HRESULT RecursiveDeleteKey(
|
||
|
IN HKEY hKey,
|
||
|
IN BSTR bstrKeyChild
|
||
|
);
|
||
|
|
||
|
static HRESULT ListTerminalSuperclasses(
|
||
|
OUT CLSID** ppCLSIDs,
|
||
|
OUT DWORD* pdwCount
|
||
|
);
|
||
|
|
||
|
static HRESULT SearchForTerminal(
|
||
|
IN IID iidTerminal,
|
||
|
IN DWORD dwMediaType,
|
||
|
IN TERMINAL_DIRECTION Direction,
|
||
|
OUT CPTTerminal* pTerminal
|
||
|
);
|
||
|
|
||
|
static HRESULT FindTerminal(
|
||
|
IN CLSID clsidSuperclass,
|
||
|
IN CLSID clsidTerminal,
|
||
|
IN DWORD dwMediaType,
|
||
|
IN TERMINAL_DIRECTION Direction,
|
||
|
IN BOOL bExact,
|
||
|
OUT CPTTerminal* pTerminal
|
||
|
);
|
||
|
|
||
|
static HRESULT ListTerminalClasses(
|
||
|
IN DWORD dwMediaTypes,
|
||
|
OUT CLSID** ppTerminalsClasses,
|
||
|
OUT DWORD* pdwCount
|
||
|
);
|
||
|
|
||
|
|
||
|
friend class CPTSuperclass;
|
||
|
friend class CPTTerminal;
|
||
|
friend class CPTRegControl;
|
||
|
friend class CTerminalManager;
|
||
|
};
|
||
|
|
||
|
///////////////////////////////////////////
|
||
|
// CPTTerminal
|
||
|
//
|
||
|
|
||
|
class CPTTerminal
|
||
|
{
|
||
|
public:
|
||
|
// Constructor/destructor
|
||
|
CPTTerminal();
|
||
|
~CPTTerminal();
|
||
|
|
||
|
public:
|
||
|
// Attributes
|
||
|
BSTR m_bstrName; // Terminal name
|
||
|
BSTR m_bstrCompany; // Company name
|
||
|
BSTR m_bstrVersion; // Terminal version
|
||
|
|
||
|
CLSID m_clsidTerminalClass; // Public terminal CLSID
|
||
|
CLSID m_clsidCOM; // Terminal CLSID used by CoCreate
|
||
|
|
||
|
DWORD m_dwDirections; // Terminal directions
|
||
|
DWORD m_dwMediaTypes; // Media types supported
|
||
|
|
||
|
public:
|
||
|
// Methods
|
||
|
HRESULT Add(
|
||
|
IN CLSID clsidSuperclass
|
||
|
);
|
||
|
|
||
|
HRESULT Delete(
|
||
|
IN CLSID clsidSuperclass
|
||
|
);
|
||
|
|
||
|
HRESULT Get(
|
||
|
IN CLSID clsidSuperclass
|
||
|
);
|
||
|
|
||
|
CPTTerminal& operator=(const CPTTerminal& term)
|
||
|
{
|
||
|
m_dwDirections = term.m_dwDirections;
|
||
|
m_dwMediaTypes = term.m_dwMediaTypes;
|
||
|
|
||
|
m_bstrName = SysAllocString( term.m_bstrName);
|
||
|
m_bstrCompany = SysAllocString( term.m_bstrCompany);
|
||
|
m_bstrVersion = SysAllocString( term.m_bstrVersion);
|
||
|
|
||
|
m_clsidTerminalClass = term.m_clsidTerminalClass;
|
||
|
m_clsidCOM = term.m_clsidCOM;
|
||
|
|
||
|
return *this;
|
||
|
}
|
||
|
};
|
||
|
|
||
|
///////////////////////////////////////////
|
||
|
// CPTTerminalClass
|
||
|
//
|
||
|
|
||
|
class CPTSuperclass
|
||
|
{
|
||
|
public:
|
||
|
// Constructor/Destructor
|
||
|
CPTSuperclass();
|
||
|
~CPTSuperclass();
|
||
|
|
||
|
public:
|
||
|
// Attributes
|
||
|
BSTR m_bstrName; // Terminal superclass name
|
||
|
CLSID m_clsidSuperclass; // Teminal superclass CLSID
|
||
|
|
||
|
public:
|
||
|
// Methods
|
||
|
HRESULT Add(); // Add/edit a terminal class
|
||
|
HRESULT Delete(); // Delete a terminal class
|
||
|
HRESULT Get(); // Get all the information
|
||
|
|
||
|
// Lists all child terminals
|
||
|
HRESULT ListTerminalClasses(
|
||
|
IN DWORD dwMediaTypes,
|
||
|
OUT CLSID** ppTerminals,
|
||
|
OUT DWORD* pdwCount
|
||
|
);
|
||
|
};
|
||
|
|
||
|
#endif
|
||
|
|
||
|
// eof
|