Point of Service (POS)

Overview of the Point of Service (POS) device driver technology.

To develop Point of Service (POS) device drivers, you need these headers:

For the programming guide, see Point of Service (POS).

IOCTLs

 
IOCTL_POINT_OF_SERVICE_CHECK_HEALTH

This I/O control function checks the device health.
IOCTL_POINT_OF_SERVICE_CLAIM_DEVICE

The I/O control function claims the device for exclusive access.
IOCTL_POINT_OF_SERVICE_GET_DEVICE_BASICS

This I/O control function gets the type of device, version, and recommended buffer size as specified by the driver.
IOCTL_POINT_OF_SERVICE_GET_PROPERTY

This I/O control function returns the value of the specified property from the device driver.
IOCTL_POINT_OF_SERVICE_MSR_AUTHENTICATE_DEVICE

This IO control function authenticates the magnetic stripe reader (MSR).
IOCTL_POINT_OF_SERVICE_MSR_DEAUTHENTICATE_DEVICE

This I/O control function deauthenticates the magnetic stripe reader (MSR).
IOCTL_POINT_OF_SERVICE_MSR_RETRIEVE_DEVICE_AUTHENTICATION

This I/O control function retrieves the device authentication type.
IOCTL_POINT_OF_SERVICE_MSR_UPDATE_KEY

This I/O control function sets a new encryption key.
IOCTL_POINT_OF_SERVICE_RELEASE_DEVICE

This I/O control function is called when a client is ready to relinquish its claim on a device.
IOCTL_POINT_OF_SERVICE_RESET_STATISTICS

This I/O control function resets the specified statistic's value to zero.
IOCTL_POINT_OF_SERVICE_RETAIN_DEVICE

This I/O control function is used to keep a claim on a device when a client is notified that its claim on the device is being contested by another client.
IOCTL_POINT_OF_SERVICE_RETRIEVE_STATISTICS

This I/O control function returns unified point of service (UPOS) standard information about a device such as its category, manufacturer, and firmware revision number.
IOCTL_POINT_OF_SERVICE_SET_PROPERTY

This I/O control function sets the specified property on the device.
IOCTL_POINT_OF_SERVICE_UPDATE_STATISTICS

This I/O control function sets the specified statistic to the value in the input buffer.

Enumerations

 
BarcodeStatus

This enumeration indicates barcode scanner status values.
BarcodeSymbology

This enumeration defines the barcode symbologies.
BarcodeSymbologyDecodeLengthType

The BarcodeSymbologyDecodeLengthType enum describes values for the decode length which can be set to support a range, two discrete values, or be set to any length.
DriverMagneticStripeReaderAuthenticationLevel

This enumeration defines the levels of magnetic stripe reader (MSR) authentication support.
DriverUnifiedPosErrorReason

This enumeration indicates the reason for the error.
DriverUnifiedPosErrorSeverity

This enumeration indicates the severity of the error.
DriverUnifiedPosHealthCheckLevel

This enumeration indicates the type of health check to be performed when CheckHealthAsync is called on a POS device.
DriverUnifiedPosPowerReportingType

This enumeration defines the type of power reporting that is supported by the device (for example, advanced, standard, and so on).
DriverUnifiedPosPowerState

This enumeration is not implemented.
MsrAuthenticationProtocolType

This enumeration defines magnetic stripe reader (MSR) authentication protocols.
MsrCardType

This enumeration defines the kinds of magnetic stripe cards.
MsrDataEncryption

This enumeration defines the kind of encryption algorithm supported by the magnetic stripe reader (MSR).
MsrErrorReportingType

This enumeration defines the constants that indicate the error reporting type for the magnetic stripe reader (MSR).
MsrStatusUpdateType

This enumeration defines the constants that indicate the magnetic stripe reader (MSR) status.
MsrTrackErrorType

This enumeration defines the kinds of magnetic stripe reader track errors.
MsrTrackIds

Defines the constants that represent the magnetic stripe reader (MSR) tracks.
MstStatisticsEntryType

This enumeration defines the kinds of magnetic stripe reader statistics.
POS_CX_EVENT_ATTRIBUTES

The POS_CX_EVENT_ATTRIBUTES describes the priority and access rights for the POS events coming from the device. The values are a combination of the values defined in POS_CX_EVENT_DEST and POS_CX_EVENT_PRIORITY.
POS_CX_EVENT_DEST

The POS_CX_EVENT_DEST defines which applications receive this event.
POS_CX_EVENT_PRIORITY

The POS_CX_EVENT_PRIORITY defines the importance of the event and the order it will be delivered to the client application.
POSCXFUNCENUM

Provides a list of all PosCx WDF API functions.
PosDeviceControlType

This enumeration defines values for the IOCTLs of the scanner driver and magnetic stripe reader (MSR) driver.
PosDeviceType

This enumeration defines values used in the PosDeviceBasicsType structure to indicate the type of device (for instance, barcode scanner or magnetic stripe reader).
PosEventType

This enumeration defines values used in the PosEventDataHeader structure to indicate the type of event that was raised.
PosPropertyId

This enumeration defines the property identifiers for the properties that device drivers need to handle to be considered a barcode scanner or a magnetic strip reader (MSR).

Functions

 
EVT_POS_CX_DEVICE_OWNERSHIP_CHANGE

The EVT_POS_CX_DEVICE_OWNERSHIP_CHANGE callback is called during the API claim ownership transition. The driver is expected to set the device back to a default state in this routine.
EVT_POS_CX_DEVICE_REMOTE_CLAIM

The EVT_POS_CX_DEVICE_REMOTE_CLAIM callback is called when the device is transitioning from unclaimed to claimed and allows the driver to do additional work.
EVT_POS_CX_DEVICE_REMOTE_RELEASE

The EVT_POS_CX_DEVICE_REMOTE_RELEASE callback is called whenever the device is released and left with no owner and allows the driver to do additional work.
EVT_POS_CX_DEVICE_REMOTE_RETAIN

The EVT_POS_CX_DEVICE_REMOTE_RETAIN callback is called whenever PosCx attempts to hold onto a claim on a network device and allows the driver to do additional work.
POS_CX_ATTRIBUTES_INIT

POS_CX_ATTRIBUTES_INIT initializes a POS_CX_ATTRIBUTE structure.
PosCxClaimDevice

PosCxClaimDevice is called to claim a device for exclusive use. The caller should call PosCxReleaseDevice when the device is no longer needed.
PosCxCleanPendingRequests

PosCxCleanPendingRequests is called to cancel all pending requests for a given caller, identified by the open instance.
PosCxCleanupEvents

PosCxCleanupEvents is called to clean up all pending events for a given caller, identified by the open instance.
PosCxClose

PosCxClose is called to delete an opened PosCx library instance. This function releases the device if the caller is the owner, and cancels pending requests. It should be called from the driver's EVT_WDF_FILE_CLOSE callback.
PosCxGetDeviceInterfaceTag

PosCxGetDeviceInterfaceTag returns the device interface tag that is set in PosCxOpen.
PosCxGetPendingEvent

PosCxGetPendingEvent is called either from the device read callback, or when a new event arrives.
PosCxInit

PosCxInit is called to initialize the PosCx library's internal resources. The resources are tied to the device, and are released when the device goes away.
PosCxIsDeviceOwner

PosCxIsDeviceOwner checks if the caller currently owns the claim on the device.
PosCxIsPosApp

PosCxIsPosApp checks if the open instance is associated with a point-of-service application.
PosCxMarkPosApp

PosCxMarkPosApp marks the open instance as associated or not associated with a point-of-service application.
PosCxOpen

PosCxOpen is called to create an open PosCx library instance. This function initializes all resources it needs to manage a single open instance. It should be called from the driver's EVT_WDF_DEVICE_FILE_CREATE callback.
PosCxPutPendingEvent

PosCxPutPendingEvent creates a new event object, copies the event data to the new event object, and tries to delegate it to the waiting caller.
PosCxPutPendingEventMemory

PosCxPutPendingEventMemory tries to delegate a memory object containing the event data to a waiting caller.
PosCxReleaseDevice

PosCxReleaseDevice is called to release a device that was previously claimed with PosCxClaimDevice. Once the device is released, the next pending claim requester is promoted.
PosCxRemoteRequestRelease

PosCxRemoteRequestRelease is called whenever a remote device asks for the device to release. This initiates claim negotiation.
PosCxRetainDevice

PosCxRetainDevice is called to extend the ownership of the device.

Structures

 
BarcodeSymbologyAttributesData

The BarcodeSymbologyAttributesData structure contains the attribute information for a barcode symbology.
MSR_AUTHENTICATE_DEVICE

This structure provides the authentication information used to authenticate a device.
MSR_DATA_RECEIVED

This structure contains the data read from a swiped magnetic stripe card.
MSR_DEAUTHENTICATE_DEVICE

This structure provides the information necessary to deauthenticate the device.
MSR_ERROR_EVENT

This structure contains the error data that is passed to the MagneticStripeReaderErrorOccured event.
MSR_RETRIEVE_DEVICE_AUTHENTICATION_DATA

This structure contains authentication information retrieved from the device.
MSR_SUPPORTED_CARD_TYPES

This structure defines the types of magnetic stripe cards supported by the reader.
MSR_UPDATE_KEY

This structure contains the information necessary to set a new encryption key.
POS_CX_ATTRIBUTES

The POS_CX_ATTRIBUTES structure contains pointers to event callback functions implemented by the client driver.
PosBarcodeScanDataTypeData

This structure describes a buffer of barcode symbologies supported by the driver.
PosBarcodeScannerCapabilitiesType

This structure defines the type of scanner capabilities that a device supports such as whether the device supports statistics reporting and image preview.
PosBarcodeScannerDataReceivedEventData

This structure contains the scanned data that is passed to the BarcodeScannerDataReceived event.
PosBarcodeScannerErrorOccurredEventData

This structure contains the error data that is passed to the BarcodeScannerErrorOccurred event.
PosDeviceBasicsType

This structure indicates the type of device, version, and recommended buffer size as specified by the driver.
PosDeviceInformation

This structure provides device information as defined in and required by the Unified Point of Service (UPOS) standard.
PosEventDataHeader

This structure describes the scanned image data that is passed to the BarcodeScannerImagePreviewReceived event.
PosMagneticStripeReaderCapabilitiesType

This structure defines the kinds of magnetic stripe reader (MSR) capabilities that a device supports, such as whether the device supports track data masking.
PosProfileType

This structure describes the number of profile strings in a buffer.
PosStatisticsHeader

This structure defines Unified Point of Service (UPOS) standard information about a device. This structure is the header for an incoming statistic.
PosStatusUpdatedEventData

This structure contains data passed to the StatusUpdated event.
PosStringType

This structure represents a Point of Service (POS) unicode string with a length of DataLengthInBytes.
PosValueStatisticsEntry

This structure contains the value of a statistic.