Share via


HW_VTBL (Windows Embedded CE 6.0)

1/6/2010

This structure stores pointers to the functions that serial port drivers must implement.

Syntax

#ifdef USE_NEW_SERIAL_MODEL
typedef struct __HWOBJ HWOBJ, *PHWOBJ;
typedef struct __HW_VTBL {
  PVOID (*HWInit)(ULONG Identifier, PVOID pMDDContext, PHWOBJ pHWObj);
  BOOL (*HWPostInit)(PVOID pHead);
  ULONG (*HWDeinit)(PVOID pHead);
  BOOL (*HWOpen)(PVOID pHead);
  ULONG (*HWClose)(PVOID pHead);
  INTERRUPT_TYPE (*HWGetIntrType)(PVOID pHead);
  ULONG (*HWRxIntrHandler)(PVOID pHead, PUCHAR pTarget, PULONG pBytes);
  VOID (*HWTxIntrHandler)(PVOID pHead, PUCHAR pSrc, PULONG pBytes);
  VOID (*HWModemIntrHandler)(PVOID pHead);
  VOID (*HWLineIntrHandler)(PVOID pHead);
  ULONG (*HWGetRxBufferSize)(PVOID pHead);
  BOOL (*HWPowerOff)(PVOID pHead);
  BOOL (*HWPowerOn)(PVOID pHead);
  VOID (*HWClearDTR)(PVOID pHead);
  VOID (*HWSetDTR)(PVOID pHead);
  VOID (*HWClearRTS)(PVOID pHead);
  VOID (*HWSetRTS)(PVOID pHead);
  BOOL (*HWEnableIR)(PVOID pHead, ULONG BaudRate);
  BOOL (*HWDisableIR)(PVOID pHead);
  VOID (*HWClearBreak)(PVOID pHead);
  VOID (*HWSetBreak)(PVOID pHead);
  BOOL (*HWXmitComChar)(PVOID pHead, UCHAR ComChar);
  ULONG (*HWGetStatus)(PVOID pHead, LPCOMSTAT lpStat);
  VOID (*HWReset)(PVOID pHead);
  VOID (*HWGetModemStatus)(PVOID pHead, PULONG pModemStatus);
  VOID (*HWGetCommProperties)(PVOID pHead, LPCOMMPROP pCommProp);
  VOID (*HWPurgeComm)(PVOID pHead, DWORD fdwAction);
  BOOL (*HWSetDCB)(PVOID pHead, LPDCB pDCB);
  BOOL (*HWSetCommTimeouts)(PVOID pHead, LPCOMMTIMEOUTS lpCommTO);
  BOOL (*HWIoctl)(PVOID pHead, DWORD dwCode,PBYTE pBufIn,DWORD dwLenIn, PBYTE pBufOut,DWORD dwLenOut,PDWORD pdwActualOut);
} HW_VTBL, *PHW_VTBL;
#else
typedef struct __HW_VTBL {
  PVOID (*HWInit)(ULONG Identifier, PVOID pMDDContext);
  ULONG (*HWDeinit)(PVOID pHead);
  BOOL (*HWOpen)(PVOID pHead);
  ULONG (*HWClose)(PVOID pHead);
  ULONG (*HWGetBytes)(PVOID pHead, PUCHAR pTarget, PULONG pBytes);
  PVOID (*HWGetRxStart)(PVOID pHead);
  INTERRUPT_TYPE (*HWGetIntrType)(PVOID pHead);
  VOID (*HWOtherIntrHandler)(PVOID pHead);
  VOID (*HWLineIntrHandler)(PVOID pHead);
  ULONG (*HWGetRxBufferSize)(PVOID pHead);
  VOID (*HWTxIntrHandler)(PVOID pHead);
  ULONG (*HWPutBytes)(PVOID pHead, PUCHAR pSrc, ULONG NumBytes, PULONG pBytesSent);
  BOOL (*HWPowerOff)(PVOID pHead);
  BOOL (*HWPowerOn)(PVOID pHead);
  VOID (*HWClearDTR)(PVOID pHead);
  VOID (*HWSetDTR)(PVOID pHead);
  VOID (*HWClearRTS)(PVOID pHead);
  VOID (*HWSetRTS)(PVOID pHead);
  BOOL (*HWEnableIR)(PVOID pHead, ULONG BaudRate);
  BOOL (*HWDisableIR)(PVOID pHead);
  VOID (*HWClearBreak)(PVOID pHead);
  VOID (*HWSetBreak)(PVOID pHead);
  BOOL (*HWXmitComChar)(PVOID pHead, UCHAR ComChar);
  ULONG (*HWGetStatus)(PVOID pHead, LPCOMSTAT lpStat);
  VOID (*HWReset)(PVOID pHead);
  VOID (*HWGetModemStatus)(PVOID pHead, PULONG pModemStatus);
  VOID (*HWGetCommProperties)(PVOID pHead, LPCOMMPROP pCommProp);
  VOID (*HWPurgeComm)(PVOID pHead, DWORD fdwAction);
  BOOL (*HWSetDCB)(PVOID pHead, LPDCB pDCB);
  BOOL (*HWSetCommTimeouts)(PVOID pHead, LPCOMMTIMEOUTS lpCommTO);
  BOOL (*HWIoctl)(PVOID pHead, DWORD dwCode,PBYTE pBufIn, DWORD dwLenIn, PBYTE pBufOut,DWORD dwLenOut,PDWORD pdwActualOut);
} HW_VTBL, *PHW_VTBL;
#endif

Members

  • HWInit
    Pointer to a HWInit function that performs the required initialization for the serial port driver's lower layer.
  • HWPostInit
    Pointer to a HWPostInit function that performs required post-initialization. Defined when USE_NEW_SERIAL_MODEL is set.
  • HWDeinit
    Pointer to a HWDeinit function that performs any required work, such as freeing allocated data structures, when the driver is de-initialized.
  • HWOpen
    Pointer to a HWOpen function that is called when an application opens a serial port. Typically, this function is responsible for powering the serial port hardware and initializing its state, if it is not already open.
  • HWClose
    Pointer to a HWClose function that executes when an application closes a serial port. Typically, this function is responsible for freeing data allocated in HWOpen and removing power from serial port hardware.
  • HWGetBytes
    Pointer to a function that is called by the upper layer to retrieve received characters from the universal asynchronous receiver-transmitter (UART) when RX_INTR is returned from the HWGetIntrType function. The return value indicates number of received bytes, if any, that were dropped by the UART or the lower layer. This member is not defined when USE_NEW_SERIAL_MODEL is set.
  • HWGetRxStart
    Pointer to a HWGetRxStart function that returns the address of the start of the hardware receive buffer. This is subsequently passed to the InterruptInitialize function. This member is not defined when USE_NEW_SERIAL_MODEL is set.
  • HWGetIntrType
    Pointer to a HWGetIntrTypefunction that the upper layer calls when an interrupt event is signaled. This function determines the cause of the interrupt and returns an interrupt mask composed of the possible types INTR_RX, INTR_TX, INTR_MODEM, INTR_LINE, or INTR_NONE.
  • HWRxIntrHandler
    Pointer to a HWRxIntrHandlerfunction that the upper layer calls to handle an INTR_RX interrupt. Defined when USE_NEW_SERIAL_MODEL is set.
  • HWOtherIntrHandler
    Pointer to a HWOtherIntrHandlerfunction that is called by the upper layer to handle an INTR_MODEM interrupt. This member is not defined when USE_NEW_SERIAL_MODEL is set.
  • HWLineIntrHandler
    Pointer to a HWLineIntrHandlerfunction that is called by the upper layer to handle an INTR_LINE interrupt.
  • HWGetRxBufferSize
    Pointer to a HWGetRxBufferSizefunction that returns the number of bytes that can be held in the receive buffer or in a first-in, first-out (FIFO) queue.
  • HWTxIntrHandler
    Pointer to a HWTxIntrHandlerfunction that the upper layer calls to handle an INTR_TX interrupt.
  • HWModemIntrHandler
    Pointer to a HWModemIntrHandlerfunction that the upper layer calls to handle an INTR_MODEM interrupt. Defined when USE_NEW_SERIAL_MODEL is set.
  • HWPutBytes
    Pointer to a HWPutBytesfunction that is called by the upper layer's COM_Write function to transmit data. It loads the data in FIFO order and returns to the upper layer. A non-zero return code indicates that the upper layer must perform polling to detect changes in the flow control state. Hardware which supports interrupt generation when the line state changes should return zero. The return value indicates number of milliseconds to wait before polling. This member is not defined when USE_NEW_SERIAL_MODEL is set.
  • HWPowerOff
    Pointer to a HWPowerOfffunction that is called as part of the system's power-down sequence. This function cannot make system calls, and should perform the minimum work required to save the serial port hardware's status.
  • HWPowerOn
    Pointer to a HWPowerOnfunction that is called as part of the system's power-on sequence. It should use data saved in HWPowerOff to restore the state of the serial port hardware. This function cannot make system calls.
  • HWClearDTR
    Pointer to a HWClearDTRfunction that clears the Data Terminal Ready (DTR) signal.
  • HWSetDTR
    Pointer to a HWSetDTRfunction that sets the DTR signal.
  • HWClearRTS
    Pointer to a HWClearRTSfunction that clears the request to send (RTS) signal.
  • HWSetRTS
    Pointer to a HWSetRTSfunction that sets the RTS line.
  • HWEnableIR
    Pointer to a HWEnableIRfunction that enables the infrared (IR) interface for ports that support IR mode. Typically, this involves switching the UART output from a standard line driver to an IR LED interface.
  • HWDisableIR
    Pointer to a HWDisableIRfunction that disables IR mode on ports that support it.
  • HWClearBreak
    Pointer to a HWClearBreakfunction that clears the break condition on the transmit line.
  • HWSetBreak
    Pointer to a HWSetBreakfunction that sets the break condition on the transmit line. It is not supported by all UART chips.
  • HWXmitComChar
    Pointer to a HWXmitComCharfunction that transmits the specified character ahead of any other data that may already have been queued by the routine specified by HWPutBytes. This pointer is not supported by all hardware.
  • HWGetStatus
    Pointer to a HWGetStatusfunction that is called in response to the IOCTL_SERIAL_GET_COMMSTATUS I/O control code. It returns the serial port's current status. This function must also clear the CommErrors member of the PERP_IO_SER_INFO structure.
  • HWReset
    Pointer to a HWResetfunction that resets the ComStatus structure used by HWGetStatus.
  • HWGetModemStatus
    Pointer to a HWGetModemStatusfunction that is called in response to the IOCTL_SERIAL_GET_MODEMSTATUS I/O control code. For a description of the ModemStatus structure, see Microsoft® Win32® documentation .
  • HWGetCommProperties
    Pointer to a HWGetCommPropertiesfunction that fills in the CommProperties structure with information about the serial port's device capabilities.
  • HWPurgeComm
    Pointer to a HWPurgeCommfunction that clears the UART data as indicated by the TX_CLEAR, RX_CLEAR, TX_ABORT, and RX_ABORT flags.
  • HWSetDCB
    Pointer to a HWSetDCBfunction that sets the port characteristics as indicated by the DCB structure passed as input to the function.
  • HWSetCommTimeouts
    Pointer to a HWSetCommTimeoutsfunction that sets communications time-out values as indicated. One of the primary tasks of the upper layer is to handle communications time-out events. The lower layer typically does not have to perform actions in its implementation of this function.
  • HWIoctl
    Pointer to a HWIoctlfunction that handles any I/O control codes. In addition to the standard Win32 codes, you can implement additional hardware specific codes in the lower layer.

Remarks

These function names are listed as they are defined in the serial port sample code. You can change this set of functions or the function names by modifying the serial object table, which is a table of HWOBJ type objects, in the serial port lower layer.

Define USE_NEW_SERIAL_MODEL to use the updated serial driver model.

The following members are defined when USE_NEW_SERIAL_MODEL is set:

  • HWPostInit
  • HWRxIntrHandler
  • HWModemIntrHandler

The following members are not defined when USE_NEW_SERIAL_MODEL is set:

  • HWGetBytes
  • HWGetRxStart
  • HWOtherIntrHandler
  • HWPutBytes

Requirements

Header serhw.h
Windows Embedded CE Windows CE 1.0 and later

See Also

Reference

Serial Port Driver Structures
COM_Write
HWClearBreak
HWClearDTR
HWClearRTS
HWClose
HWDeinit
HWDisableIR
HWEnableIR
HWGetCommProperties
HWGetIntrType
HWGetModemStatus
HWGetRxBufferSize
HWGetRxStart
HWGetStatus
HWInit
HWIoctl
HWLineIntrHandler
HWModemIntrHandler
HWOBJ
HWOpen
HWOtherintrHandler
HWPostInit
HWPowerOff
HWPowerOn
HWPurgeComm
HWPutBytes
HWReset
HWRxIntrHandler
HWSetBreak
HWSetCommTimeouts
HWSetDCB
HWSetDTR
HWSetRTS
HWTxIntrHandler
HWXmitComChar

Concepts

Serial Port Driver Samples

Other Resources

InterruptInitialize