SERIAL_COMMPROP 구조체(ntddser.h)
SERIAL_COMMPROP 구조체는 직렬 포트의 속성을 지정합니다.
구문
typedef struct _SERIAL_COMMPROP {
USHORT PacketLength;
USHORT PacketVersion;
ULONG ServiceMask;
ULONG Reserved1;
ULONG MaxTxQueue;
ULONG MaxRxQueue;
ULONG MaxBaud;
ULONG ProvSubType;
ULONG ProvCapabilities;
ULONG SettableParams;
ULONG SettableBaud;
USHORT SettableData;
USHORT SettableStopParity;
ULONG CurrentTxQueue;
ULONG CurrentRxQueue;
ULONG ProvSpec1;
ULONG ProvSpec2;
WCHAR ProvChar[1];
} SERIAL_COMMPROP, *PSERIAL_COMMPROP;
멤버
PacketLength
이 구조체로 시작하고 요청된 속성 데이터를 포함하는 데이터 패킷의 크기(바이트)입니다. 이 크기에는 SERIAL_COMMPROP 구조체와 이 구조체를 따르는 추가 ProvChar 배열 요소가 포함됩니다.
PacketVersion
이 구조체의 버전입니다. 현재 버전 번호는 2입니다.
ServiceMask
이 통신 공급자가 구현하는 서비스를 나타내는 비트 마스크입니다. 이 멤버는 항상 모뎀 공급자를 포함한 직렬 통신 공급자에 의해 SERIAL_SP_SERIALCOMM 설정됩니다. ProvSubType 멤버는 구현되는 특정 유형의 직렬 통신(예: 모뎀)을 나타냅니다.
Reserved1
사용되지 않습니다.
MaxTxQueue
최대 전송 큐 크기입니다. 직렬 컨트롤러 드라이버의 내부 출력 버퍼의 최대 크기(바이트)입니다. 값이 0이면 직렬 공급자가 적용한 최대값이 없음을 나타냅니다.
MaxRxQueue
최대 수신 큐 크기입니다. 직렬 컨트롤러 드라이버의 내부 입력 버퍼의 최대 크기(바이트)입니다. 값이 0이면 직렬 공급자가 적용한 최대값이 없음을 나타냅니다.
MaxBaud
허용되는 최대 전송 속도입니다. 확장 기반 직렬 컨트롤러 드라이버는 이 멤버를 초당 비트(bps)로 표현된 전송 속도로 설정합니다. 예를 들어 직렬 컨트롤러가 최대 전송 속도 115,200bps를 지원하는 경우 드라이버는 MaxBaud = 115200을 설정합니다.
그러나 Serial.sys 이전 직렬 컨트롤러 드라이버는 MaxBaud 를 Ntddser.h 헤더 파일에 정의된 SERIAL_BAUD_XXX 플래그 비트 중 하나로 설정합니다. 이 멤버에 대해 다음 값이 정의됩니다.
값 | Description |
---|---|
SERIAL_BAUD_075 | 75 bps |
SERIAL_BAUD_110 | 110 bps |
SERIAL_BAUD_134_5 | 134.5 bps |
SERIAL_BAUD_150 | 150 bps |
SERIAL_BAUD_300 | 300 bps |
SERIAL_BAUD_600 | 600 bps |
SERIAL_BAUD_1200 | 1,200 bps |
SERIAL_BAUD_1800 | 1,800 bps |
SERIAL_BAUD_2400 | 2,400 bps |
SERIAL_BAUD_4800 | 4,800 bps |
SERIAL_BAUD_7200 | 7,200 bps |
SERIAL_BAUD_9600 | 9,600 bps |
SERIAL_BAUD_14400 | 14,400 bps |
SERIAL_BAUD_19200 | 19,200 bps |
SERIAL_BAUD_38400 | 38,400 bps |
SERIAL_BAUD_56K | 56,000 bps |
SERIAL_BAUD_57600 | 57,600 bps |
SERIAL_BAUD_115200 | 115,200 bps |
SERIAL_BAUD_128K | 128,000 bps |
SERIAL_BAUD_USER | 프로그래밍 가능한 전송 속도를 사용할 수 있습니다. |
ProvSubType
특정 통신 공급자 유형입니다. ServiceMask 멤버가 SERIAL_SP_SERIALCOMM 설정되면 ProvSubType은 다음 값 중 하나로 설정됩니다.
값 | 의미 |
---|---|
SERIAL_SP_UNSPECIFIED | Unspecified |
SERIAL_SP_RS232 | RS-232 직렬 포트 |
SERIAL_SP_PARALLEL | 병렬 포트 |
SERIAL_SP_RS422 | RS-422 직렬 포트 |
SERIAL_SP_RS423 | RS-423 직렬 포트 |
SERIAL_SP_RS449 | RS-449 직렬 포트 |
SERIAL_SP_MODEM | 모뎀 디바이스 |
SERIAL_SP_FAX | FAX 디바이스 |
SERIAL_SP_SCANNER | 스캐너 디바이스 |
SERIAL_SP_BRIDGE | 지정되지 않은 네트워크 브리지 |
SERIAL_SP_LAT | LAT 프로토콜 |
SERIAL_SP_TELNET | TCP/IP 텔넷® 프로토콜 |
SERIAL_SP_X25 | X.25 표준 |
ProvCapabilities
공급자가 제공하는 기능입니다. 이 멤버는 다음 플래그 비트 중 하나 이상의 비트 OR 또는 0으로 설정됩니다.
값 | Description |
---|---|
SERIAL_PCF_DTRDSR | DTR(데이터 터미널 준비) 및 DSR(데이터 세트 준비)이 지원됩니다. |
SERIAL_PCF_RTSCTS | RTS(보내기 요청) 및 CTS(전송할 수 없음)가 지원됩니다. |
SERIAL_PCF_CD | CD(통신 사업자 검색)가 지원됩니다. |
SERIAL_PCF_PARITY_CHECK | 패리티 검사가 지원됩니다. |
SERIAL_PCF_XONXOFF | XON(전송 켜기) 및 XOFF(전송 해제) 흐름 제어가 지원됩니다. |
SERIAL_PCF_SETXCHAR | XON 및 XOFF 문자는 설정할 수 있습니다. |
SERIAL_PCF_TOTALTIMEOUTS | 총 경과 시간 제한은 지원됩니다. |
SERIAL_PCF_INTTIMEOUTS | 간격 제한 시간이 지원됩니다. |
SERIAL_PCF_SPECIALCHARS | 특수 문자가 지원됩니다. |
SERIAL_PCF_16BITMODE | 특수 16비트 모드가 지원됩니다. |
SettableParams
변경할 수 있는 통신 매개 변수를 나타내는 비트 마스크입니다. 이 멤버는 다음 플래그 비트 중 하나 이상의 비트 OR 또는 0으로 설정됩니다.
값 | Description |
---|---|
SERIAL_SP_PARITY | 패리티 형식(짝수 또는 홀수) |
SERIAL_SP_BAUD | 전송 속도 |
SERIAL_SP_DATABITS | 데이터 비트 |
SERIAL_SP_STOPBITS | 정지 비트 |
SERIAL_SP_HANDSHAKING | 핸드셰이크(흐름 제어) |
SERIAL_SP_PARITY_CHECK | 패리티 검사 |
SERIAL_SP_CARRIER_DETECT | 이동 통신 사업자 검색 |
SettableBaud
사용할 수 있는 전송 속도를 나타내는 비트 마스크입니다. 이 멤버에 대해 정의된 SERIAL_BAUD_XXX 플래그 비트를 설명하는 테이블은 MaxBaud 멤버에 대한 설명을 참조하세요. SettableBaud 는 0으로 설정되거나 비트 OR 또는 이러한 플래그 비트 중 하나 이상으로 설정됩니다.
직렬 컨트롤러 드라이버는 SettableBaud 비트 마스크 값에서 SERIAL_BAUD_USER 플래그 비트를 설정하여 다른 SERIAL_BAUD_XXX 플래그 비트로 표현할 수 있는 것보다 더 높은 전송 속도를 지원함을 나타냅니다. 예를 들어 57600, 115200, 230400 및 460800 bps의 전송 속도를 지원하는 드라이버는 SettableBaud = (SERIAL_BAUD_57600 | SERIAL_BAUD_115200 | SERIAL_BAUD_USER).
SettableData
설정할 수 있는 데이터 비트 수입니다. 이 멤버는 다음 플래그 비트 중 하나 이상의 비트 OR 또는 0으로 설정됩니다.
값 | Description |
---|---|
SERIAL_DATABITS_5 | 5개의 데이터 비트 |
SERIAL_DATABITS_6 | 6개의 데이터 비트 |
SERIAL_DATABITS_7 | 7개 데이터 비트 |
SERIAL_DATABITS_8 | 8 데이터 비트 |
SERIAL_DATABITS_16 | 16개 데이터 비트 |
SERIAL_DATABITS_16X | 직렬 하드웨어 라인을 통한 특수 와이드 경로 |
SettableStopParity
선택할 수 있는 중지 비트 및 패리티 설정입니다. 이 멤버는 다음 플래그 비트 중 하나 이상의 비트 OR 또는 0으로 설정됩니다.
값 | Description |
---|---|
SERIAL_STOPBITS_10 | 1 정지 비트입니다. |
SERIAL_STOPBITS_15 | 하나 반 정지 비트. |
SERIAL_STOPBITS_20 | 2 정지 비트입니다. |
SERIAL_PARITY_NONE | 패리티 비트는 사용되지 않습니다. |
SERIAL_PARITY_ODD | 홀수 패리티. 문자 값의 1s 수가 짝수이면 패리티 비트는 1입니다. 그렇지 않으면 패리티 비트가 0입니다. |
SERIAL_PARITY_EVEN | 심지어 패리티. 문자 값의 1s 수가 홀수인 경우 패리티 비트는 1입니다. 그렇지 않으면 패리티 비트가 0입니다. |
SERIAL_PARITY_MARK | 패리티 비트는 항상 1로 설정됩니다. |
SERIAL_PARITY_SPACE | 패리티 비트는 항상 0으로 설정됩니다. |
CurrentTxQueue
전송 큐 크기입니다. 이 멤버는 직렬 컨트롤러 드라이버의 내부 출력 버퍼 크기를 바이트 단위로 지정합니다. 값이 0이면 버퍼 크기를 사용할 수 없음을 나타냅니다.
SerCx2 및 SerCx의 경우 연결된 직렬 컨트롤러 드라이버는 일반적으로 이 멤버를 0으로 설정합니다. Serial.sys 이 멤버를 출력 버퍼 크기를 나타내는 0이 아닌 값으로 설정합니다.
CurrentRxQueue
수신 큐 크기입니다. 이 멤버는 직렬 컨트롤러 드라이버의 내부 입력 버퍼 크기를 바이트 단위로 지정합니다. 값이 0이면 버퍼 크기를 사용할 수 없음을 나타냅니다.
SerCx2 및 SerCx의 경우 이 멤버는 연결된 직렬 컨트롤러 드라이버에 의해 설정됩니다. SerCx2의 경우 드라이버는 일반적으로 이 멤버를 0으로 설정합니다. SerCx의 경우 드라이버는 일반적으로 이 멤버를 SerCx가 수신된 데이터를 버퍼링하는 데 사용하는 링 버퍼의 크기로 설정합니다. 이 드라이버는 SerCxGetRingBufferUtilization 메서드를 호출하여 SerCx에서 링 버퍼 크기를 가져올 수 있습니다.
Serial.sys 이 멤버를 입력 버퍼 크기를 나타내는 0이 아닌 값으로 설정합니다.
ProvSpec1
공급자별 데이터입니다. 직렬 포트에 필요한 데이터 형식에 대한 공급자별 데이터를 사용할 수 없는 한 애플리케이션은 이 멤버를 무시해야 합니다.
ProvSpec2
공급자별 데이터입니다. 직렬 포트에 필요한 데이터 형식에 대한 공급자별 데이터를 사용할 수 없는 한 애플리케이션은 이 멤버를 무시해야 합니다.
ProvChar[1]
공급자별 데이터입니다. 직렬 포트에 필요한 데이터 형식에 대한 공급자별 데이터를 사용할 수 없는 한 애플리케이션은 이 멤버를 무시해야 합니다. 이 멤버는 하나 이상의 요소로 구성된 와이드 문자 배열의 첫 번째 요소입니다. 추가 요소는 즉시 이 멤버를 따릅니다. PacketLength 멤버는 SERIAL_COMMPROP 구조체의 크기와 이 구조체 뒤에 오는 추가 ProvChar 배열 요소를 지정합니다.
설명
이 구조체는 IOCTL_SERIAL_GET_PROPERTIES 요청에 사용됩니다.
요구 사항
요구 사항 | 값 |
---|---|
헤더 | ntddser.h |