MONITOR2 구조체(winsplp.h)

MONITOR2 구조체에는 인쇄 모니터에서 정의한 함수에 대한 포인터가 포함되어 있습니다.

구문

typedef struct _MONITOR2 {
  DWORD  cbSize;
  BOOL( )(HANDLE hMonitor,LPWSTR pName,DWORD Level,LPBYTE pPorts,DWORD cbBuf,LPDWORD pcbNeeded,LPDWORD pcReturned)  *pfnEnumPorts;
  BOOL( )(HANDLE hMonitor,LPWSTR pName,PHANDLE pHandle)  *pfnOpenPort;
  BOOL()(HANDLE hMonitor,HANDLE hMonitorPort,LPWSTR pPortName,LPWSTR pPrinterName,PHANDLE pHandle,_MONITOR2 *pMonitor2)  * pfnOpenPortEx;
  BOOL( )(HANDLE hPort,LPWSTR pPrinterName,DWORD JobId,DWORD Level,LPBYTE pDocInfo)  *pfnStartDocPort;
  BOOL( )(HANDLE hPort,LPBYTE pBuffer,DWORD cbBuf,LPDWORD pcbWritten)  *pfnWritePort;
  BOOL( )(HANDLE hPort,LPBYTE pBuffer,DWORD cbBuffer,LPDWORD pcbRead)  *pfnReadPort;
  BOOL( )(HANDLE hPort)  *pfnEndDocPort;
  BOOL( )(HANDLE hPort)  *pfnClosePort;
  BOOL( )(HANDLE hMonitor,LPWSTR pName,HWND hWnd,LPWSTR pMonitorName)  *pfnAddPort;
  BOOL( )(HANDLE hMonitor,LPWSTR pName,DWORD Level,LPBYTE lpBuffer,LPWSTR lpMonitorName)  *pfnAddPortEx;
  BOOL( )(HANDLE hMonitor,LPWSTR pName,HWND hWnd,LPWSTR pPortName)  *pfnConfigurePort;
  BOOL( )(HANDLE hMonitor,LPWSTR pName,HWND hWnd,LPWSTR pPortName)  *pfnDeletePort;
  BOOL( )(HANDLE hPort,DWORD ControlID,LPWSTR pValueName,LPWSTR lpInBuffer,DWORD cbInBuffer,LPWSTR lpOutBuffer,DWORD cbOutBuffer,LPDWORD lpcbReturned)  *pfnGetPrinterDataFromPort;
  BOOL( )(HANDLE hPort,LPCOMMTIMEOUTS lpCTO,DWORD reserved)  *pfnSetPortTimeOuts;
  BOOL( )(HANDLE hMonitor,LPCWSTR pszObject,ACCESS_MASK GrantedAccess,PHANDLE phXcv)  *pfnXcvOpenPort;
  DWORD( )(HANDLE hXcv,LPCWSTR pszDataName,PBYTE pInputData,DWORD cbInputData,PBYTE pOutputData,DWORD cbOutputData,PDWORD pcbOutputNeeded) *pfnXcvDataPort;
  BOOL( )(HANDLE hXcv)  *pfnXcvClosePort;
  VOID( )(HANDLE hMonitor)  *pfnShutdown;
  DWORD()(HANDLE hPort,DWORD dwAccessBit,LPCWSTR pAction,PBIDI_REQUEST_CONTAINER pReqData,PBIDI_RESPONSE_CONTAINER *ppResData) * pfnSendRecvBidiDataFromPort;
  DWORD()(HANDLE hMonitor,DWORD cPorts,PCWSTR *ppszPorts) * pfnNotifyUsedPorts;
  DWORD()(HANDLE hMonitor,DWORD cPorts,PCWSTR *ppszPorts) * pfnNotifyUnusedPorts;
  DWORD()(HANDLE hMonitor,DWORD event,POWERBROADCAST_SETTING *pSettings) * pfnPowerEvent;
} MONITOR2, *PMONITOR2, *LPMONITOR2;

멤버

cbSize

MONITOR2 구조체의 크기(바이트)를 지정합니다.

pfnEnumPorts

포트 모니터 서버 DLL의 EnumPorts 함수는 포트 모니터가 지원하는 포트를 열거합니다.

pfnOpenPort

인쇄 모니터의 OpenPort 함수에 대한 포인터입니다.

pfnOpenPortEx

언어 모니터의 OpenPortEx 함수는 프린터 포트를 엽니다.

pfnStartDocPort

인쇄 모니터의 StartDocPort 함수는 지정된 포트에서 인쇄 작업을 시작하는 데 필요한 작업을 수행합니다.

pfnWritePort

인쇄 모니터의 WritePort 함수에 대한 포인터입니다.

pfnReadPort

인쇄 모니터의 ReadPort 함수에 대한 포인터입니다.

pfnEndDocPort

인쇄 모니터의 EndDocPort 함수는 지정된 포트에서 인쇄 작업을 종료하는 데 필요한 작업을 수행합니다.

pfnClosePort

인쇄 모니터의 ClosePort 함수에 대한 포인터입니다.

pfnAddPort

주의

AddPort 함수는 더 이상 사용되지 않으므로 사용하면 안 됩니다.

AddPort 는 포트를 만들고 스풀러 환경의 지정된 모니터에서 현재 지원되는 포트 목록에 추가합니다.

pfnAddPortEx

(사용되지 않습니다. NULL이어야 합니다.) 인쇄 모니터의 AddPortEx 함수에 대한 포인터입니다. (포트 모니터만 해당)

pfnConfigurePort

주의

ConfigurePort 함수는 사용되지 않으므로 사용하면 안 됩니다. 대신 ConfigurePortUI 를 사용합니다.

ConfigurePort 는 지정된 포트를 구성하는 포트 관리 함수입니다.

pfnDeletePort

주의

DeletePort 함수는 사용되지 않으므로 사용하면 안 됩니다.

DeletePort 는 모니터 환경에서 포트를 삭제합니다.

pfnGetPrinterDataFromPort

인쇄 모니터의 GetPrinterDataFromPort 함수에 대한 포인터입니다.

pfnSetPortTimeOuts

포트 모니터 서버 DLL의 SetPortTimeOuts 함수는 열린 포트에 대한 포트 제한 시간 값을 설정합니다.

pfnXcvOpenPort

인쇄 모니터의 XcvOpenPort 함수에 대한 포인터입니다. (포트 모니터만 해당)

pfnXcvDataPort

인쇄 모니터의 XcvDataPort 함수에 대한 포인터입니다. (포트 모니터만 해당)

pfnXcvClosePort

인쇄 모니터의 XcvClosePort 함수에 대한 포인터입니다. (포트 모니터만 해당)

pfnShutdown

인쇄 모니터의 Shutdown 함수에 대한 포인터입니다.

pfnSendRecvBidiDataFromPort

인쇄 모니터의 SendRecvBidiDataFromPort 함수에 대한 포인터입니다.

pfnNotifyUsedPorts

인쇄 모니터의 NotifyUsedPorts 함수에 대한 포인터입니다.

pfnNotifyUnusedPorts

인쇄 모니터의 NotifyUnusedPorts 함수에 대한 포인터입니다 .

pfnPowerEvent

인쇄 모니터의 PowerEvent 함수에 대한 포인터입니다.

설명

각 언어 모니터와 각 포트 모니터 서버 DLL은 MONITOR2 구조를 제공해야 합니다. 모니터는 모든 구조체 멤버에 대한 값을 제공하고 구조체의 주소를 InitializePrintMonitor2 함수의 반환 값으로 지정해야 합니다.

함수가 정의되지 않은 경우 해당 포인터는 NULL이어야 합니다.

MONITOR2 구조는 Windows XP에서 Windows 2000보다 큽 수 있습니다. Windows XP DDK(드라이버 개발 키트)로 개발된 모니터가 Windows XP 및 Windows 2000에 설치되도록 하려면 모니터에서 다음을 수행해야 합니다.

  • 런타임 검사 수행하여 모니터가 실행 중인 운영 체제 버전을 확인합니다.
  • 모니터가 Windows 2000에서 실행되는 경우 MONITOR2 구조체의 cbSize 멤버를 이 구조체의 Windows 2000 버전에 적합한 크기인 MONITOR2_SIZE_WIN2K(Winsplp.h에 정의됨)로 설정해야 합니다.

다음 함수는 현재 운영 체제 버전이 Windows 2000인지 여부를 결정합니다.

BOOL  Is_Win2000()
{
  OSVERSIONINFOEX osvi;
  DWORDLONG dwlConditionMask = 0;

  // Initialize the OSVERSIONINFOEX structure.

  ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));
  osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
  osvi.dwMajorVersion = 5;
  osvi.dwMinorVersion = 0;

  // Initialize the condition mask.
  VER_SET_CONDITION( dwlConditionMask, VER_MAJORVERSION, VER_EQUAL );
  VER_SET_CONDITION( dwlConditionMask, VER_MINORVERSION, VER_EQUAL );

  // Perform the test.
  return VerifyVersionInfo(
      &osvi,
      VER_MAJORVERSION | VER_MINORVERSION,
      dwlConditionMask);
}

Windows 2000에서 로드하는 모니터의 경우 다음 코드는 MONITOR2 구조체의 cbSize 멤버를 적절하게 설정합니다.

if ( Is_Win2000( ) )
    Monitor2.cbSize = MONITOR2_SIZE_WIN2K;

요구 사항

요구 사항
헤더 winsplp.h(Winsplp.h 포함)

추가 정보

InitializePrintMonitor2

MONITORUI