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
호출하여 원치 않는 프린터 상태 정보를 감시하는 별도의 스레드를 만들고, ReadPort
함수는 포트 모니터의 ReadPort
함수를 호출합니다. 포트 모니터가 데이터를 언어 모니터로 반환하면 언어 모니터는 수신된 데이터를 구문 분석하고 SetPort (Windows SDK 설명서에 설명됨) 호출하여 상태 정보를 스풀러로 보냅니다.
함수는 pcbRead 가리키는 위치에 숫자를 배치하여 성공적으로 읽은 바이트 수를 반환해야. 호출자는 반환된 바이트 수가 아닌 ReadPort's
반환 값을 확인하여 쓰기 작업의 성공 또는 실패를 결정합니다. 따라서 반환된 바이트 수 0은 함수가 FALSE 반환하지 않는 한 실패한 읽기를 나타내지 않습니다.
일종의 시스템 구현 또는 모니터 구현 제한 시간 메커니즘은 스풀러가 중단되지 않도록 ReadPort
함수가 적절한 시간 내에 반환되도록 해야 합니다.
언어 모니터가 StartDocPort/EndDocPort 쌍 외부에서 포트 모니터의 ReadPort
루틴을 호출하는 것이 허용됩니다. (이러한 호출은 스레드에서 원치 않는 상태를 확인하여 생성될 수 있습니다.) 그러나 일부 포트 모니터는 이러한 호출에 실패할 수 있으므로 이 오류를 처리하려면 언어 모니터를 작성해야 합니다.
요구 사항
요구 | 값 |
---|---|
대상 플랫폼 | 바탕 화면 |
헤더 | winsplp.h(Winsplp.h 포함) |
라이브러리 | NtosKrnl.exe |