windows-nt/Source/XPSP1/NT/net/tapi/skywalker/termmgr/ptutil.h

158 lines
3.6 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
/*
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