/*++ Copyright (C) Microsoft Corporation, 1996 - 1997 All rights reserved. Module Name: prtshare.hxx Abstract: Printer Share header Author: Steve Kiraly (SteveKi) 17-Mar-1996 Revision History: --*/ #ifndef _PRTSHARE_HXX #define _PRTSHARE_HXX /******************************************************************** Printer Printer class ********************************************************************/ class TPrtPrinter { SIGNATURE( 'ptpr' ) SAFE_NEW public: TPrtPrinter:: TPrtPrinter( IN LPCTSTR pszServerName ); TPrtPrinter:: ~TPrtPrinter( VOID ); BOOL TPrtPrinter:: bValid( VOID ) const; BOOL TPrtPrinter:: bRefresh( VOID ); BOOL TPrtPrinter:: bIsValidShareNameForThisPrinter( IN LPCTSTR pszShareName, IN LPCTSTR pszPrinterName = NULL ) const; #if DBG VOID TPrtPrinter:: vPrint( VOID ) const; #endif private: // // Copying and assignment are not defined. // TPrtPrinter:: TPrtPrinter( const TPrtPrinter & ); TPrtPrinter & TPrtPrinter:: operator =( const TPrtPrinter & ); BOOL TPrtPrinter:: bGetEnumData( VOID ); BOOL _bValid; PRINTER_INFO_2 *_pPrinterInfo2; DWORD _cPrinterInfo2; TString _strServerName; }; /******************************************************************** Printer Share class ********************************************************************/ class TPrtShare { SIGNATURE( 'ptsh' ) SAFE_NEW public: enum tStatus { kSuccess, kInvalidLength, kInvalidDosFormat, kInvalidChar, }; TPrtShare:: TPrtShare( LPCTSTR pszServerName ); TPrtShare:: ~TPrtShare( VOID ); BOOL TPrtShare:: bValid( VOID ) const; BOOL TPrtShare:: bRefresh( VOID ); BOOL TPrtShare:: bNewShareName( IN TString &strShareName, IN const TString &strBaseShareName ) const; BOOL TPrtShare:: bIsValidShareNameForThisPrinter( IN LPCTSTR pszShareName, IN LPCTSTR pszPrinterName = NULL ) const; INT TPrtShare:: iIsValidDosShare( LPCTSTR pszShareName ) const; INT TPrtShare:: iIsValidNtShare( LPCTSTR pszShareName ) const; static BOOL TPrtShare:: bNetworkInstalled( VOID ); #if DBG VOID TPrtShare:: vPrint( VOID ) const; #endif private: // // Copying and assignment are not defined. // TPrtShare:: TPrtShare( const TPrtShare & ); TPrtShare & TPrtShare:: operator =( const TPrtShare & ); BOOL TPrtShare:: bIsShareNameUsedW( IN PCWSTR pszShareName ) const; BOOL TPrtShare:: bIsShareNameUsedA( IN PCSTR pszShareName ) const; BOOL TPrtShare:: bGetEnumData( VOID ); VOID TPrtShare:: vDestroy( VOID ); BOOL _bValid; LPBYTE _pNetResBuf; DWORD _dwNetResCount; TString _strServerName; TPrtPrinter _PrtPrinter; static LPCTSTR _gszIllegalDosChars; static LPCTSTR _gszIllegalNtChars; BOOL TPrtShare:: bLoad( VOID ); VOID TPrtShare:: vUnload( VOID ); typedef NET_API_STATUS (NET_API_FUNCTION *PF_NETSHAREENUM)( IN LPTSTR servername, IN DWORD level, OUT LPBYTE *bufptr, IN DWORD prefmaxlen, OUT LPDWORD entriesread, OUT LPDWORD totalentries, IN OUT LPDWORD resume_handle ); typedef NET_API_STATUS (NET_API_FUNCTION *PF_NETAPIBUFFERFREE)( IN LPVOID Buffer ); #define NETAPI32_LIB "netapi32.dll" #define NETSHAREENUM "NetShareEnum" #define NETAPIBUFFERFREE "NetApiBufferFree" TLibrary *_pLibrary; PF_NETSHAREENUM _pfNetShareEnum; PF_NETAPIBUFFERFREE _pfNetApiBufferFree; }; /******************************************************************** Global functions. ********************************************************************/ BOOL bCreateShareName( IN LPCTSTR pszServer, IN LPCTSTR pszPrinter, IN OUT LPTSTR pszBuffer, IN OUT PDWORD pcbSize ); #endif