ReadPort 함수(winsplp.h)

포트 모니터의 함수는 ReadPort 프린터 포트에서 데이터를 읽습니다.

구문

BOOL ReadPort(
  _In_  HANDLE  hPort,
  _Out_ LPBYTE  pBuffer,
        DWORD   cbBuffer,
  _Out_ LPDWORD pcbRead
);

매개 변수

[in] hPort

호출자가 제공한 포트 핸들입니다.

[out] pBuffer

포트에서 읽은 데이터를 수신하는 버퍼에 대한 호출자 제공 포인터입니다.

cbBuffer

호출자가 제공한 pBuffer 크기(바이트)입니다.

[out] pcbRead

포트에서 성공적으로 읽은 바이트 수를 수신할 위치에 대한 호출자 제공 포인터입니다.

반환 값

작업이 성공하면 함수는 TRUE를 반환해야 합니다. 그렇지 않으면 FALSE를 반환해야 합니다.

설명

언어 모니터 및 포트 모니터 서버 DLL은 함수를 ReadPort 정의하고 함수의 주소를 MONITOR2 구조에 포함해야 합니다.

함수의 hPort 인수로 받은 핸들은 모니터의 OpenPort 또는 OpenPortEx 함수가 제공한 포트 핸들입니다.

일반적으로 언어 모니터의 ReadPort 함수는 연결된 포트 모니터의 ReadPort 함수를 호출하고 가져온 버퍼 콘텐츠를 호출자에게 반환합니다.

또한 언어 모니터는 포트 모니터의 ReadPort 함수를 호출하여 원치 않는 상태 정보를 검사 별도의 스레드를 만들 수 있습니다. 이러한 읽기 작업이 성공하면 setPort(Microsoft Windows SDK 설명서에 설명됨)를 호출하여 상태 정보를 스풀러에 반환해야 합니다.

일반적으로 포트 모니터 서버 DLL의 ReadPort 함수는 ReadFile(Windows SDK 설명서에 설명됨)을 호출하여 커널 모드 포트 드라이버에서 데이터를 가져옵니다. 함수는 호출자에게 데이터를 반환합니다.

언어 모니터와 포트 모니터 모두 함수를 정의 ReadPort 하고 주소를 MONITOR2 구조에 배치해야 하지만, 언어 모니터의 ReadPort 함수는 스풀러나 애플리케이션에서 실제로 호출되지 않습니다. 함수는 전적으로 언어 모니터 자체의 내부 사용을 위한 것입니다.

예를 들어 pjlmon.dll 샘플 언어 모니터는 자체적으로 를 호출 ReadPort 하여 원치 않는 프린터 상태 정보를 watch 별도의 스레드를 만들고 함수 ReadPort 는 포트 모니터의 ReadPort 함수를 호출합니다. 포트 모니터가 데이터를 언어 모니터로 반환하면 언어 모니터는 수신된 데이터를 구문 분석하고 SetPort(Windows SDK 설명서에 설명됨)를 호출하여 스풀러에 상태 정보를 보냅니다.

함수는 pcbRead가 가리키는 위치에 숫자를 배치하여 성공적으로 읽은 바이트 수를 반환해야 합니다. 호출자는 반환된 바이트 수가 아닌 반환 값을 확인하여 ReadPort's 쓰기 작업의 성공 또는 실패를 결정합니다. 따라서 반환된 바이트 수 0은 함수가 FALSE를 반환하지 않는 한 실패한 읽기를 나타내지 않습니다.

일종의 시스템 구현 또는 모니터 구현 시간 제한 메커니즘은 스풀러가 지연되지 않도록 함수가 ReadPort 적절한 시간 내에 반환되도록 해야 합니다.

언어 모니터가 StartDocPort EndDocPort/ 쌍 외부에서 포트 모니터의ReadPort 루틴을 호출할 수 있습니다. (이러한 호출은 원치 않는 상태 확인하는 스레드에 의해 생성될 수 있습니다.) 그러나 일부 포트 모니터는 이러한 호출에 실패할 수 있으므로 이 오류를 처리하려면 언어 모니터를 작성해야 합니다.

요구 사항

요구 사항
대상 플랫폼 데스크톱
머리글 winsplp.h(Winsplp.h 포함)
라이브러리 NtosKrnl.exe

추가 정보

GetPrinterDataFromPort

StartDocPort

OpenPortEx

OpenPort

EndDocPort