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
傳輸佇列大小上限。 序列控制器驅動程式內部輸出緩衝區的大小上限,以位元組為單位。 值為零表示序列提供者不會強加任何最大值。
MaxRxQueue
接收佇列大小上限。 序列控制器驅動程式內部輸入緩衝區的大小上限,以位元組為單位。 值為零表示序列提供者不會強加任何最大值。
MaxBaud
可接受的最大包速率。 擴充式序列控制器驅動程式 將此成員設定為以每秒位表示的包速率(bps)。 例如,如果序列控制器支援最大傳輸速率為 115,200 bps,則驅動程式會將 MaxBaud = 115200。
不過,Serial.sys 和許多較舊的序列控制器驅動程式 MaxBaud 設定為 Ntddser.h 頭檔中定義的其中一個 SERIAL_BAUD_XXX 旗標位。 這個成員定義了下列值。
價值 | 描述 |
---|---|
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 | 未指定 |
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 Telnet® 通訊協定 |
SERIAL_SP_X25 | X.25 標準 |
ProvCapabilities
提供者所提供的功能。 這個成員設定為零或設定為下列一或多個旗標位的位 OR。
價值 | 描述 |
---|---|
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。
價值 | 描述 |
---|---|
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 設為零或位 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。
價值 | 描述 |
---|---|
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。
價值 | 描述 |
---|---|
SERIAL_STOPBITS_10 | 一個停止位。 |
SERIAL_STOPBITS_15 | 一個半停止位。 |
SERIAL_STOPBITS_20 | 兩個停止位。 |
SERIAL_PARITY_NONE | 不使用同位位。 |
SERIAL_PARITY_ODD | 奇數同位。 如果字元值中的 1 數目偶數偶數,則同位位為 1。 否則,同位位為0。 |
SERIAL_PARITY_EVEN | 甚至同位。 如果字元值中的 1 數目是奇數,則同位位為 1。 否則,同位位為0。 |
SERIAL_PARITY_MARK | 同位一律設定為1。 |
SERIAL_PARITY_SPACE | 同位一律設定為 0。 |
CurrentTxQueue
傳輸佇列大小。 這個成員會指定序列控制器驅動程式內部輸出緩衝區的大小,以位元組為單位。 值為零表示緩衝區大小無法使用。
針對 SerCx2 和 SerCx,相關聯的序列控制器驅動程式通常會將此成員設定為零。 Serial.sys 將此成員設定為表示輸出緩衝區大小的非零值。
CurrentRxQueue
接收佇列大小。 這個成員會指定序列控制器驅動程式內部輸入緩衝區的大小,以位元組為單位。 值為零表示緩衝區大小無法使用。
針對 SerCx2 和 SerCx,這個成員是由相關聯的序列控制器驅動程式所設定。 針對 SerCx2,驅動程式通常會將此成員設定為零。 針對 SerCx,驅動程式通常會將此成員設定為 SerCx 用來緩衝接收數據的環形緩衝區大小。 此驅動程式可以呼叫 SerCxGetRingBufferUtilization 方法,從 SerCx 取得通道緩衝區大小。
Serial.sys 將此成員設定為表示輸入緩衝區大小的非零值。
ProvSpec1
提供者特定數據。 除非提供序列埠所需之數據格式的提供者特定數據,否則應用程式應該忽略這個成員。
ProvSpec2
提供者特定數據。 除非提供序列埠所需之數據格式的提供者特定數據,否則應用程式應該忽略這個成員。
ProvChar[1]
提供者特定數據。 除非提供序列埠所需之數據格式的提供者特定數據,否則應用程式應該忽略這個成員。 這個成員是一或多個元素之寬字元數位中的第一個專案。 任何額外的元素會緊接在此成員之後。 PacketLength 成員會指定 SERIAL_COMMPROP 結構的大小加上任何其他 ProvChar 此結構的數位元素。
言論
IOCTL_SERIAL_GET_PROPERTIES 要求會使用此結構。
要求
要求 | 價值 |
---|---|
標頭 | ntddser.h |