windows-nt/Source/XPSP1/NT/printscan/ui/printui/prndata.hxx
2020-09-26 16:20:57 +08:00

345 lines
6.2 KiB
C++

/*++
Copyright (C) Microsoft Corporation, 1998 - 1998
All rights reserved.
Module Name:
prndata.cxx
Abstract:
Type safe printer data class
Author:
Steve Kiraly (SteveKi) 24-Aug-1998
Revision History:
--*/
#ifndef _PRNDATA_HXX
#define _PRNDATA_HXX
class TPrinterDataAccess
{
public:
enum EResourceType
{
kResourceServer,
kResourcePrinter,
kResourceUnknown,
};
enum EAccessType
{
kAccessFull,
kAccessRead,
kAccessUnknown,
};
TPrinterDataAccess::
TPrinterDataAccess(
IN LPCTSTR pszPrinter,
IN EResourceType eResourceType,
IN EAccessType eAccessType
);
TPrinterDataAccess::
TPrinterDataAccess(
IN HANDLE hPrinter
);
TPrinterDataAccess::
~TPrinterDataAccess(
VOID
);
BOOL
TPrinterDataAccess::
Init(
VOID
) const;
HRESULT
TPrinterDataAccess::
Get(
IN LPCTSTR pszValue,
IN OUT BOOL &bData
);
HRESULT
TPrinterDataAccess::
Get(
IN LPCTSTR pszValue,
IN OUT DWORD &dwData
);
HRESULT
TPrinterDataAccess::
Get(
IN LPCTSTR pszValue,
IN OUT TString &strString
);
HRESULT
TPrinterDataAccess::
Get(
IN LPCTSTR pszValue,
IN OUT TString **pstrString,
IN OUT UINT &nItemCount
);
HRESULT
TPrinterDataAccess::
Get(
IN LPCTSTR pszValue,
IN OUT PVOID pData,
IN UINT nSize
);
HRESULT
TPrinterDataAccess::
Get(
IN LPCTSTR pszKey,
IN LPCTSTR pszValue,
IN OUT BOOL &bData
);
HRESULT
TPrinterDataAccess::
Get(
IN LPCTSTR pszKey,
IN LPCTSTR pszValue,
IN OUT DWORD &dwData
);
HRESULT
TPrinterDataAccess::
Get(
IN LPCTSTR pszKey,
IN LPCTSTR pszValue,
IN OUT TString &strString
);
HRESULT
TPrinterDataAccess::
Get(
IN LPCTSTR pszKey,
IN LPCTSTR pszValue,
IN OUT PVOID pData,
IN UINT nSize
);
HRESULT
TPrinterDataAccess::
Get(
IN LPCTSTR pszKey,
IN LPCTSTR pszValue,
IN OUT TString **pstrString,
IN OUT UINT &nItemCount
);
HRESULT
TPrinterDataAccess::
Set(
IN LPCTSTR pszValue,
IN BOOL bData
);
HRESULT
TPrinterDataAccess::
Set(
IN LPCTSTR pszValue,
IN DWORD dwData
);
HRESULT
TPrinterDataAccess::
Set(
IN LPCTSTR pszValue,
IN TString &strString
);
HRESULT
TPrinterDataAccess::
Set(
IN LPCTSTR pszValue,
IN OUT PVOID pData,
IN UINT nSize
);
HRESULT
TPrinterDataAccess::
Set(
IN LPCTSTR pszKey,
IN LPCTSTR pszValue,
IN BOOL bData
);
HRESULT
TPrinterDataAccess::
Set(
IN LPCTSTR pszKey,
IN LPCTSTR pszValue,
IN DWORD dwData
);
HRESULT
TPrinterDataAccess::
Set(
IN LPCTSTR pszKey,
IN LPCTSTR pszValue,
IN TString &strString
);
HRESULT
TPrinterDataAccess::
Set(
IN LPCTSTR pszKey,
IN LPCTSTR pszValue,
IN OUT PVOID pData,
IN UINT nSize
);
HRESULT
TPrinterDataAccess::
Delete(
IN LPCTSTR pszValue
);
HRESULT
TPrinterDataAccess::
Delete(
IN LPCTSTR pszKey,
IN LPCTSTR pszValue
);
HRESULT
TPrinterDataAccess::
GetDataSize(
IN LPCTSTR pszValue,
IN DWORD dwType,
IN DWORD &nSize
);
VOID
TPrinterDataAccess::
RelaxReturnTypeCheck(
IN BOOL bCheckState
);
private:
enum EDataType
{
kDataTypeBool,
kDataTypeDword,
kDataTypeString,
kDataTypeStruct,
kDataTypeMultiString,
kDataTypeUnknown,
};
struct ClassTypeMap
{
DWORD Reg;
EDataType Class;
};
ACCESS_MASK
TPrinterDataAccess::
PrinterAccessFlags(
IN EResourceType eResourceType,
IN EAccessType eAccessType
) const;
DWORD
TPrinterDataAccess::
ClassTypeToRegType(
IN EDataType eDataType
) const;
TPrinterDataAccess::EDataType
TPrinterDataAccess::
RegTypeToClassType(
IN DWORD dwDataType
) const;
VOID
TPrinterDataAccess::
InitializeClassVariables(
VOID
);
HRESULT
TPrinterDataAccess::
GetDataSizeHelper(
IN LPCTSTR pszKey,
IN LPCTSTR pszValue,
IN DWORD dwType,
IN LPDWORD dwNeeded
);
HRESULT
TPrinterDataAccess::
GetDataHelper(
IN LPCTSTR pszKey,
IN LPCTSTR pszValue,
IN EDataType eDataType,
IN PVOID pData,
IN UINT nSize,
IN LPDWORD pdwNeeded
);
HRESULT
TPrinterDataAccess::
SetDataHelper(
IN LPCTSTR pszKey,
IN LPCTSTR pszValue,
IN EDataType eDataType,
IN PVOID pData,
IN UINT nSize
);
HRESULT
TPrinterDataAccess::
DeleteDataHelper(
IN LPCTSTR pszKey,
IN LPCTSTR pszValue
);
HRESULT
TPrinterDataAccess::
GetDataStringHelper(
IN LPCTSTR pszKey,
IN LPCTSTR pszValue,
IN OUT TString &strString
);
HRESULT
TPrinterDataAccess::
GetDataMuliSzStringHelper(
IN LPCTSTR pszKey,
IN LPCTSTR pszValue,
IN OUT TString **pstrString,
IN UINT &nItemCount
);
HANDLE m_hPrinter;
EAccessType m_eAccessType;
BOOL m_bAcceptedHandle;
BOOL m_bRelaxReturnedTypeCheck;
};
#endif