|
|
/*++
Copyright (c) 2000 Microsoft Corporation All Rights Reserved
Module Name: BasePort.h
Abstract: Interface for the CBasePort class.
Author: M. Fenelon
Revision History:
--*/
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_BASEPORT_H__9B0AE97A_9ADB_4B48_846F_29D41B1263C9__INCLUDED_)
#define AFX_BASEPORT_H__9B0AE97A_9ADB_4B48_846F_29D41B1263C9__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class CBasePort { public: CBasePort(); CBasePort( BOOL bActive, LPTSTR pszPortName, LPTSTR pszDevicePath, LPTSTR pszPortDesc ); virtual ~CBasePort(); BOOL startDoc( LPTSTR pPrinterName, DWORD dwJobId, DWORD dwLevel, LPBYTE pDocInfo ); BOOL endDoc(); BOOL write( LPBYTE pBuffer, DWORD cbBuffer, LPDWORD pcbWritten ); BOOL read( LPBYTE pBuffer, DWORD cbBuffer, LPDWORD pcbRead ); virtual BOOL getPrinterDataFromPort( DWORD dwControlID, LPTSTR pValueName, LPWSTR lpInBuffer, DWORD cbInBuffer, LPWSTR lpOutBuffer, DWORD cbOutBuffer, LPDWORD lpcbReturned ); virtual BOOL setPortTimeOuts( LPCOMMTIMEOUTS lpCTO ); void ClearCS(); void InitCS(); virtual PORTTYPE getPortType( void ); LPTSTR getPortDesc(); virtual void setPortDesc( LPTSTR pszPortDesc ); // DWORD getDeviceFlags( void );
// void setDeviceFlags(DWORD dwFlags, DWORD dwType = SET_FLAGS);
// BOOL compDeviceFlags( DWORD dwFlags );
BOOL isActive( void ); void setActive( BOOL bValue ); BOOL compActiveState( BOOL bValue ); LPTSTR getDevicePath( void ); void setDevicePath( LPTSTR pszDevicePath ); INT compDevicePath( LPTSTR pszDevicePath ); LPTSTR getPortName( void ); void setPortName( LPTSTR pszPortName ); INT compPortName( LPTSTR pszPortName ); DWORD getEnumInfoSize( DWORD Level ); LPBYTE copyEnumInfo( DWORD dwLevel, LPBYTE pPort, LPBYTE pEnd ); void setMaxBuffer(DWORD dwMaxBufferSize);
protected: DWORD m_cRef; DWORD m_dwFlags; BOOL m_bActive; // Is this port currently Active
DWORD m_dwJobId; DWORD m_dwMaxBufferSize; HANDLE m_hDeviceHandle; HANDLE m_hPrinter; LPBYTE m_pWriteBuffer; DWORD m_dwBufferSize, // dwBufferSize : size of buffer
m_dwDataSize, // dwDataSize : size of data in buffer
// (could be smaller than dwBufferSize)
m_dwDataCompleted, // dwDataCompleted : size of data sent and acknowledged
m_dwDataScheduled; // dwScheduledData : size of data we have scheduled using WriteFile
OVERLAPPED m_Ov; CRITICAL_SECTION m_CritSec; DWORD m_dwReadTimeoutMultiplier; DWORD m_dwReadTimeoutConstant; DWORD m_dwWriteTimeoutMultiplier; DWORD m_dwWriteTimeoutConstant; TCHAR m_szPortName[MAX_PORT_LEN]; TCHAR m_szPortDescription[MAX_PORT_DESC_LEN]; TCHAR m_szDevicePath[MAX_PATH];
virtual BOOL checkPnP(); BOOL getLPTStatus(HANDLE hDeviceHandle,BYTE *Status ); DWORD getTimeLeft( DWORD dwStartTime,DWORD dwTimeout ); void freeWriteBuffer(); BOOL needToResubmitJob( DWORD dwError ); DWORD getWriteStatus( DWORD dwTimeOut ); BOOL abortThisJob(); virtual DWORD adjustWriteSize( DWORD dwBytesToWrite ); void invalidatePortHandle(); DWORD sendQueuedData(); DWORD writeData(); BOOL close(); void closePrinter(); BOOL open(); BOOL openPrinter( LPTSTR pPrinterName ); void setJobStatus( DWORD dwJobStatus ); DWORD getJobID(); void setJobID( DWORD dwJobID ); BOOL notInWrite( void );
private:
};
#endif // !defined(AFX_BASEPORT_H__9B0AE97A_9ADB_4B48_846F_29D41B1263C9__INCLUDED_)
|