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

294 lines
4.6 KiB
C++

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