/*++ 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