Serial Port Console Redirection Table (SPCR)
This document defines the content of the Serial Port Console Redirection Table. This table is used to indicate whether a serial port or a non-legacy UART interface is available for use with MicrosoftВ® WindowsВ® Emergency Management Services (EMS).
The table provides information about the configuration and use of the serial port or non-legacy UART interface. On a system where the BIOS or system firmware uses the serial port for console input/output, this table should be used to convey information about the settings, to ensure a seamless transition between the firmware console output and Windows EMS output.
This table must be located in system memory with other ACPI tables, and it must be referenced in the ACPI RSDT table.
Patent Notice: Microsoft is making certain patent rights available for implementations of this specification under two options:
Field | Byte Length | Byte Offset | Description |
---|---|---|---|
Header | |||
Signature | 4 | 0 | ‘SPCR’. Signature for the Serial Port Console Redirection Table. |
Length | 4 | 4 | Length, in bytes, of the entire Serial Port Console Redirection Table. |
Revision | 1 | 8 | 2 |
Checksum | 1 | 9 | Entire table must sum to zero. |
OEMID | 6 | 10 | OEM ID. |
OEM Table ID | 8 | 16 | For the Serial Port Console Redirection Table, the table ID is the manufacturer model ID. |
OEM Revision | 4 | 24 | OEM revision of Serial Port Console Redirection Table for supplied OEM Table ID. |
Creator ID | 4 | 28 | Vendor ID of utility that created the table. For the DSDT, RSDT, SSDT, and PSDT tables, this is the ID for the ASL Compiler. |
Creator Revision | 4 | 32 | Revision of utility that created the table. For the DSDT, RSDT, SSDT, and PSDT tables, this is the revision for the ASL Compiler. |
Interface Type | 1 | 36 | Indicates the type of the register interface: |
- 0 = full 16550 interface
- 1 = full 16450 interface (must also accept writing to the 16550 FCR register)
- 2-255 = reserved
See the Serial Port Subtypes in Table 3 of the DBG2 Specification
The base address of the Serial Port register set described using the ACPI Generic Address Structure.
0 = console redirection disabled
Note:
COM1 (0x3F8) would be:
- Integer Form: 0x 01 08 00 00 00000000000003F8
- Viewed in Memory: 0x01080000F803000000000000
COM2 (0x2F8) would be:
- Integer Form: 0x 01 08 00 00 00000000000002F8
- Viewed in Memory: 0x01080000F802000000000000
- Bit[0]: PC-AT-compatible dual-8259 IRQ interrupt
- Bit[1]: I/O APIC interrupt (Global System Interrupt)
- Bit[2]: I/O SAPIC interrupt (Global System Interrupt)
- Bit[3]: ARMH GIC interrupt (Global System Interrupt)
- Bit[4:7]: Reserved (Must be set to 0)
Where
- 0 = Not supported
- 1 = Supported
Platforms with both a dual-8259 and an I/O APIC or I/O SAPIC must set the IRQ bit (Bit[0]) and the corresponding Global System Interrupt bit (e.g. a system that supported 8259 and SAPIC would be 5).
- 2-7, 9-12, 14-15 = Valid IRQs respectively
- 0-1, 8, 13, 16-255 = Reserved
Valid only if Bit[0] of the Interrupt Type field is set.
Not valid if Bit[0] is the only bit set in the Interrupt Type field.
- 0 = As is, operating system relies on the current configuration of serial port until the full featured driver will be initialized.
- 3 = 9600
- 4 = 19200
- 6 = 57600
- 7 = 115200
- 1-2, 5, 8 — 255 = Reserved
- 0 = No Parity
- 1-255 = Reserved
- 1 = 1 Stop bit
- 0, 2-255 = Reserved
- Bit[0] = DCD required for transmit
- Bit[1] = RTS/CTS hardware flow control
- Bit[2] = XON/XOFF software control
- Bit[3:7] = reserved, must be zero
- 0 = VT100
- 1 = Extended VT100 (VT100+)
- 2 = VT-UTF8
- 3 = ANSI
- 4-255 = Reserved
Must be 0xFFFF if it is not a PCI device.
Must be 0xFFFF if it is not a PCI device.
Must be 0x00 if it is not a PCI device.
Must be 0x00 if it is not a PCI device.
Must be 0x00 if it is not a PCI device.
- Bit[0]: Operating System should NOT suppress PNP device enumeration or disable power management for this device. Must be 0 if it is not a PCI device.
- Bit26: Reserved, must be zero.
For systems with fewer than 255 PCI buses, this number must be 0.
Win32_SerialPort class
The Win32_SerialPort WMI class represents a serial port on a computer system running Windows.
The following syntax is simplified from Managed Object Format (MOF) code and includes all of the inherited properties. Properties are listed in alphabetic order, not MOF order.
Syntax
Members
The Win32_SerialPort class has these types of members:
Methods
The Win32_SerialPort class has these methods.
Method | Description |
---|---|
Reset | Not implemented. To implement this method, see the Reset method in CIM_SerialController. |
SetPowerState | Not implemented. To implement this method, see the SetPowerState method in CIM_SerialController. |
Properties
The Win32_SerialPort class has these properties.
Availability
Data type: uint16
Access type: Read-only
Qualifiers: MappingStrings («MIF.DMTF|Operational State|003.5», «MIB.IETF|HOST-RESOURCES-MIB.hrDeviceStatus»)
Availability and status of the device.
Other (1)
Unknown (2)
Running/Full Power (3)
Running or Full Power
Warning (4)
In Test (5)
Not Applicable (6)
Power Off (7)
Off Line (8)
Off Duty (9)
Degraded (10)
Not Installed (11)
Install Error (12)
Power Save — Unknown (13)
The device is known to be in a power save mode, but its exact status is unknown.
Power Save — Low Power Mode (14)
The device is in a power save state but still functioning, and may exhibit degraded performance.
Power Save — Standby (15)
The device is not functioning, but could be brought to full power quickly.
Power Cycle (16)
Power Save — Warning (17)
The device is in a warning state, though also in a power save mode.
Paused (18)
The device is paused.
Not Ready (19)
The device is not ready.
Not Configured (20)
The device is not configured.
Quiesced (21)
The device is quiet.
Binary
Data type: boolean
Access type: Read-only
If TRUE, the serial port is configured for binary data transfer. Because the Windows API does not support nonbinary mode transfers, this property must be TRUE.
Capabilities
Data type: uint16 array
Access type: Read-only
Array of chip-level compatibility for the serial controller. This property describes the buffering and other capabilities of the serial controller that may be inherent in the chip hardware. The property is an enumerated integer.
Other (1)
Unknown (2)
XT/AT Compatible (3)
16450 Compatible (4)
16550 Compatible (5)
16550A Compatible (6)
8251 Compatible (160)
8251FIFO Compatible (161)
CapabilityDescriptions
Data type: string array
Access type: Read-only
Array of free-form strings providing more detailed explanations for any of the serial controller features indicated in the Capabilities array. Note, each entry of this array is related to the entry in the Capabilities array that is located at the same index.
Caption
Data type: string
Access type: Read-only
Short description of the object.
ConfigManagerErrorCode
Data type: uint32
Access type: Read-only
Win32 Configuration Manager error code.
This device is working properly. (0)
Device is working properly.
This device is not configured correctly. (1)
Device is not configured correctly.
Windows cannot load the driver for this device. (2)
The driver for this device might be corrupted, or your system may be running low on memory or other resources. (3)
Driver for this device might be corrupted, or the system may be low on memory or other resources.
This device is not working properly. One of its drivers or your registry might be corrupted. (4)
Device is not working properly. One of its drivers or the registry might be corrupted.
The driver for this device needs a resource that Windows cannot manage. (5)
Driver for the device requires a resource that Windows cannot manage.
The boot configuration for this device conflicts with other devices. (6)
Boot configuration for the device conflicts with other devices.
Cannot filter. (7)
The driver loader for the device is missing. (8)
Driver loader for the device is missing.
This device is not working properly because the controlling firmware is reporting the resources for the device incorrectly. (9)
Device is not working properly. The controlling firmware is incorrectly reporting the resources for the device.
This device cannot start. (10)
Device cannot start.
This device failed. (11)
This device cannot find enough free resources that it can use. (12)
Device cannot find enough free resources to use.
Windows cannot verify this device’s resources. (13)
Windows cannot verify the device’s resources.
This device cannot work properly until you restart your computer. (14)
Device cannot work properly until the computer is restarted.
This device is not working properly because there is probably a re-enumeration problem. (15)
Device is not working properly due to a possible re-enumeration problem.
Windows cannot identify all the resources this device uses. (16)
Windows cannot identify all of the resources that the device uses.
This device is asking for an unknown resource type. (17)
Device is requesting an unknown resource type.
Reinstall the drivers for this device. (18)
Device drivers must be reinstalled.
Failure using the VxD loader. (19)
Your registry might be corrupted. (20)
Registry might be corrupted.
System failure: Try changing the driver for this device. If that does not work, see your hardware documentation. Windows is removing this device. (21)
System failure. If changing the device driver is ineffective, see the hardware documentation. Windows is removing the device.
This device is disabled. (22)
Device is disabled.
System failure: Try changing the driver for this device. If that doesn’t work, see your hardware documentation. (23)
System failure. If changing the device driver is ineffective, see the hardware documentation.
This device is not present, is not working properly, or does not have all its drivers installed. (24)
Device is not present, not working properly, or does not have all of its drivers installed.
Windows is still setting up this device. (25)
Windows is still setting up the device.
Windows is still setting up this device. (26)
Windows is still setting up the device.
This device does not have valid log configuration. (27)
Device does not have valid log configuration.
The drivers for this device are not installed. (28)
Device drivers are not installed.
This device is disabled because the firmware of the device did not give it the required resources. (29)
Device is disabled. The device firmware did not provide the required resources.
This device is using an Interrupt Request (IRQ) resource that another device is using. (30)
Device is using an IRQ resource that another device is using.
This device is not working properly because Windows cannot load the drivers required for this device. (31)
Device is not working properly. Windows cannot load the required device drivers.
ConfigManagerUserConfig
Data type: boolean
Access type: Read-only
If TRUE, the device is using a user-defined configuration.
CreationClassName
Data type: string
Access type: Read-only
Name of the first concrete class to appear in the inheritance chain used in the creation of an instance. When used with the other key properties of the class, the property allows all instances of this class and its subclasses to be uniquely identified.
Description
Data type: string
Access type: Read-only
Description of the object.
DeviceID
Data type: string
Access type: Read-only
Unique identifier of the serial port with other devices on the system.
ErrorCleared
Data type: boolean
Access type: Read-only
If TRUE, the error reported in LastErrorCode is now cleared.
ErrorDescription
Data type: string
Access type: Read-only
Free-form string supplying more information about the error recorded in LastErrorCode, and information about any corrective actions that may be taken.
InstallDate
Data type: datetime
Access type: Read-only
Date and time the object was installed. This property does not need a value to indicate that the object is installed.
LastErrorCode
Data type: uint32
Access type: Read-only
Last error code reported by the logical device.
MaxBaudRate
Data type: uint32
Access type: Read-only
Maximum baud rate (in bits per second) supported by the serial controller.
MaximumInputBufferSize
Data type: uint32
Access type: Read-only
Maximum size of the serial port driver’s internal input buffer. A value of 0 (zero) indicates that no maximum value is imposed by the serial provider.
MaximumOutputBufferSize
Data type: uint32
Access type: Read-only
Maximum size of the serial port driver’s internal output buffer. A value of 0 (zero) indicates that no maximum value is imposed by the serial provider.
MaxNumberControlled
Data type: uint32
Access type: Read-only
Maximum number of directly addressable entities supportable by this controller. A value of 0 (zero) should be used if the number is unknown.
Name
Data type: string
Access type: Read-only
Label by which the object is known. When subclassed, the property can be overridden to be a key property.
OSAutoDiscovered
Data type: boolean
Access type: Read-only
If TRUE, the instances of this class were automatically discovered by the operating system. If, for example, hardware was added through Control Panel, the operating system finds instances of this class by querying hardware from the instances of this class.
PNPDeviceID
Data type: string
Access type: Read-only
Windows Plug and Play device identifier of the logical device.
PowerManagementCapabilities
Data type: uint16 array
Access type: Read-only
Array of the specific power-related capabilities of a logical device.
This property is inherited from CIM_LogicalDevice.
Unknown (0)
Not Supported (1)
Disabled (2)
Enabled (3)
The power management features are currently enabled but the exact feature set is unknown or the information is unavailable.
Power Saving Modes Entered Automatically (4)
The device can change its power state based on usage or other criteria.
Power State Settable (5)
The SetPowerState method is supported. This method is found on the parent CIM_LogicalDevice class and can be implemented. For more information, see Designing Managed Object Format (MOF) Classes.
Power Cycling Supported (6)
The SetPowerState method can be invoked with the PowerState parameter set to 5 (Power Cycle).
Timed Power On Supported (7)
Timed Power-On Supported
The SetPowerState method can be invoked with the PowerState parameter set to 5 (Power Cycle) and Time set to a specific date and time, or interval, for power-on.
PowerManagementSupported
Data type: boolean
Access type: Read-only
If TRUE, the device can be power-managed (can be put into suspend mode, and so on). The property does not indicate that power management features are currently enabled, only that the logical device is capable of power management.
ProtocolSupported
Data type: uint16
Access type: Read-only
Protocol used by the controller to access «controlled» devices.
This property is inherited from CIM_Controller. The following list shows the possible values.
Other (1)
Unknown (2)
EISA (3)
ISA (4)
PCI (5)
ATA/ATAPI (6)
Flexible Diskette (7)
1496 (8)
SCSI Parallel Interface (9)
SCSI Fibre Channel Protocol (10)
SCSI Serial Bus Protocol (11)
SCSI Serial Bus Protocol-2 (1394) (12)
SCSI Serial Storage Architecture (13)
VESA (14)
PCMCIA (15)
Universal Serial Bus (16)
Parallel Protocol (17)
ESCON (18)
Diagnostic (19)
I2C (20)
Power (21)
HIPPI (22)
MultiBus (23)
VME (24)
IPI (25)
IEEE-488 (26)
RS232 (27)
IEEE 802.3 10BASE5 (28)
IEEE 802.3 10BASE2 (29)
IEEE 802.3 1BASE5 (30)
IEEE 802.3 10BROAD36 (31)
IEEE 802.3 100BASEVG (32)
IEEE 802.5 Token-Ring (33)
ANSI X3T9.5 FDDI (34)
MCA (35)
ESDI (36)
IDE (37)
CMD (38)
ST506 (39)
DSSI (40)
QIC2 (41)
Enhanced ATA/IDE (42)
AGP (43)
TWIRP (two-way infrared) (44)
FIR (fast infrared) (45)
SIR (serial infrared) (46)
IrBus (47)
ProviderType
Data type: string
Access type: Read-only
Communications provider type.
«FAX Device» «LAT Protocol» «Modem Device» «Network Bridge» «Parallel Port» «RS232 Serial Port» «RS422 Port» «RS423 Port» «RS449 Port» «Scanner Device» «TCP/IP TelNet» «X.25» «Unspecified»
FAX Device («FAX Device»)
LAT Protocol («LAT Protocol»)
Modem Device («Modem Device»)
Network Bridge («Network Bridge»)
Parallel Port («Parallel Port»)
RS232 Serial Port («RS232 Serial Port»)
RS422 Port («RS422 Port»)
RS423 Port («RS423 Port»)
RS449 Port («RS449 Port»)
Scanner Device («Scanner Device»)
TCP/IP TelNet («TCP/IP TelNet»)
X.25 («X.25»)
Unspecified («Unspecified»)
SettableBaudRate
Data type: boolean
Access type: Read-only
If TRUE, the baud rate can be changed for this serial port.
SettableDataBits
Data type: boolean
Access type: Read-only
Qualifiers: MappingStrings («Win32API|Communication Structures|COMMPROP|dwSettableParams|SP_DATABITS»)
If TRUE, data bits can be set for this serial port.
SettableFlowControl
Data type: boolean
Access type: Read-only
Qualifiers: MappingStrings («Win32API|Communication Structures|COMMPROP|dwSettableParams|SP_HANDSHAKING»)
If TRUE, flow control can be set for this serial port.
SettableParity
Data type: boolean
Access type: Read-only
Qualifiers: MappingStrings («Win32API|Communication Structures|COMMPROP|dwSettableParams|SP_PARITY»)
If TRUE, parity can be set for this serial port.
SettableParityCheck
Data type: boolean
Access type: Read-only
Qualifiers: MappingStrings («Win32API|Communication Structures|COMMPROP|dwSettableParams|SP_PARITY_CHECK»)
If TRUE, parity checking can be set for this serial port (if parity checking is supported).
SettableRLSD
Data type: boolean
Access type: Read-only
If TRUE, Received Line Signal Detect (RLSD) can be set for this serial port (if RLSD is supported).
SettableStopBits
Data type: boolean
Access type: Read-only
Qualifiers: MappingStrings («Win32API|Communication Structures|COMMPROP|dwSettableParams|SP_STOPBITS»)
If TRUE, stop bits can be set for this serial port.
Status
Data type: string
Access type: Read-only
Current status of the object. Various operational and nonoperational statuses can be defined. Operational statuses include: «OK», «Degraded», and «Pred Fail» (an element, such as a SMART-enabled hard disk drive, may be functioning properly but predicting a failure in the near future). Nonoperational statuses include: «Error», «Starting», «Stopping», and «Service». The latter, «Service», could apply during mirror-resilvering of a disk, reload of a user permissions list, or other administrative work. Not all such work is online, yet the managed element is neither «OK» nor in one of the other states.
Values include the following:
OK («OK»)
Error («Error»)
Degraded («Degraded»)
Unknown («Unknown»)
Pred Fail («Pred Fail»)
Starting («Starting»)
Stopping («Stopping»)
Service («Service»)
Stressed («Stressed»)
NonRecover («NonRecover»)
No Contact («No Contact»)
Lost Comm («Lost Comm»)
StatusInfo
Data type: uint16
Access type: Read-only
State of the logical device. If this property does not apply to the logical device, the value 5 (Not Applicable) should be used.
Other (1)
Unknown (2)
Enabled (3)
Disabled (4)
Not Applicable (5)
Supports16BitMode
Data type: boolean
Access type: Read-only
Qualifiers: MappingStrings («Win32API|Communication Structures|COMMPROP|dwProvCapabilities|PCF_16BITMODE»)
If TRUE, 16-bit mode is supported on this serial port.
SupportsDTRDSR
Data type: boolean
Access type: Read-only
Qualifiers: MappingStrings («Win32API|Communication Structures|COMMPROP|dwProvCapabilities|PCF_DTRDSR»)
If TRUE, data terminal ready (DTR) and data set ready (DSR) signals are supported on this serial port.
SupportsElapsedTimeouts
Data type: boolean
Access type: Read-only
Qualifiers: MappingStrings («Win32API|Communication Structures|COMMPROP|dwProvCapabilities|PCF_TOTALTIMEOUTS»)
If TRUE, elapsed time-outs are supported on this serial port. Elapsed timeouts track the total amount of time between data transmissions.
SupportsIntTimeouts
Data type: boolean
Access type: Read-only
Qualifiers: MappingStrings («Win32API|Communication Structures|COMMPROP|dwProvCapabilities|PCF_INTTIMEOUTS»)
If TRUE, interval time-outs are supported. An interval timeout is the amount of time allowed to elapse between the arrival of each piece of data.
SupportsParityCheck
Data type: boolean
Access type: Read-only
Qualifiers: MappingStrings («Win32API|Communication Structures|COMMPROP|dwProvCapabilities|PCF_PARITY_CHECK»)
If TRUE, parity checking is supported on this serial port.
SupportsRLSD
Data type: boolean
Access type: Read-only
Qualifiers: MappingStrings («Win32API|Communication Structures|COMMPROP|dwProvCapabilities|PCF_RLSD»)
If TRUE, Received Line Signal Detect (RLSD) is supported on this serial port.
SupportsRTSCTS
Data type: boolean
Access type: Read-only
Qualifiers: MappingStrings («Win32API|Communication Structures|COMMPROP|dwProvCapabilities|PCF_RTSCTS»)
If TRUE, ready to send (RTS) and clear to send (CTS) signals are supported on this serial port.
SupportsSpecialCharacters
Data type: boolean
Access type: Read-only
Qualifiers: MappingStrings («Win32API|Communication Structures|COMMPROP|dwProvCapabilities|PCF_SPECIALCHARS»)
If TRUE, serial port control characters are supported. These characters signal events rather than data. These characters are not displayable and are set by the driver. They include EofChar, ErrorChar, BreakChar, EventChar, XonChar, and XoffChar.
SupportsXOnXOff
Data type: boolean
Access type: Read-only
Qualifiers: MappingStrings («Win32API|Communication Structures|COMMPROP|dwProvCapabilities|PCF_XONXOFF»)
If TRUE, XON or XOFF flow-control is supported on this serial port.
SupportsXOnXOffSet
Data type: boolean
Access type: Read-only
Qualifiers: MappingStrings («Win32API|Communication Structures|COMMPROP|dwProvCapabilities|PCF_SETXCHAR»)
If TRUE, the communications provider supports configuration of the XONor XOFF flow-control setting.
SystemCreationClassName
Data type: string
Access type: Read-only
Value of the scoping computer’s CreationClassName property.
SystemName
Data type: string
Access type: Read-only
Name of the scoping system.
TimeOfLastReset
Data type: datetime
Access type: Read-only
Date and time this controller was last reset. This could mean the controller was powered down, or reinitialized.
Remarks
The Win32_SerialPort class is derived from CIM_SerialController.
Examples
For an alternate method of retrieving serial port information (from the registry), see the Enumerate Ports Visual Basic sample.
The List Serial Port Properties PowerShell example returns information about the serial ports installed on a computer.
The following VBScript sample returns information about the serial ports installed on a computer.