Point of Service (POS)

Overview of the Point of Service (POS) technology.

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

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

Functions

Title Description
POS_CX_ATTRIBUTES_INIT function POS_CX_ATTRIBUTES_INIT initializes a POS_CX_ATTRIBUTE structure.
PosCxClaimDevice function PosCxClaimDevice is called to claim a device for exclusive use. The caller should call PosCxReleaseDevice when the device is no longer needed.
PosCxCleanPendingRequests function PosCxCleanPendingRequests is called to cancel all pending requests for a given caller, identified by the open instance.
PosCxCleanupEvents function PosCxCleanupEvents is called to clean up all pending events for a given caller, identified by the open instance.
PosCxClose function 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 function PosCxGetDeviceInterfaceTag returns the device interface tag that is set in PosCxOpen.
PosCxGetPendingEvent function PosCxGetPendingEvent is called either from the device read callback, or when a new event arrives.
PosCxInit function 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 function PosCxIsDeviceOwner checks if the caller currently owns the claim on the device.
PosCxIsPosApp function PosCxIsPosApp checks if the open instance is associated with a point-of-service application.
PosCxMarkPosApp function PosCxMarkPosApp marks the open instance as associated or not associated with a point-of-service application.
PosCxOpen function 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 function 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 function PosCxPutPendingEventMemory tries to delegate a memory object containing the event data to a waiting caller. If the target caller does not have a read request waiting, the new event is added to the designated event queue (control or data).
PosCxReleaseDevice function 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 function PosCxRemoteRequestRelease is called whenever a remote device asks for the device to release. This initiates claim negotiation.
PosCxRetainDevice function PosCxRetainDevice is called to extend the ownership of the device.

Callback functions

Title Description
EVT_POS_CX_DEVICE_OWNERSHIP_CHANGE function 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 function 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 function 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 function 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.

Structures

Title Description
_BarcodeSymbologyAttributesData structure The BarcodeSymbologyAttributesData structure contains the attribute information for a barcode symbology.
_LineDisplayCharacterData structure This structure is not implemented.
_LineDisplayCursorCoordinates structure This enumeration is not implemented.
_LineDisplaySetBitmapData structure This structure is not implemented.
_LineDisplaySetDescriptorData structure This structure is not implemented.
_LineDisplaySizeInPixelsType structure This structure is not implemented.
_LineDisplayWindowDisplayBitmapData structure This structure is not implemented.
_MSR_AUTHENTICATE_DEVICE structure This structure provides the authentication information used to authenticate a device.
_MSR_DATA_RECEIVED structure This structure contains the data read from a swiped magnetic stripe card.
_MSR_DEAUTHENTICATE_DEVICE structure This structure provides the information necessary to deauthenticate the device.
_MSR_ERROR_EVENT structure This structure contains the error data that is passed to the MagneticStripeReaderErrorOccured event.
_MSR_RETRIEVE_DEVICE_AUTHENTICATION_DATA structure This structure contains authentication information retrieved from the device.
_MSR_SUPPORTED_CARD_TYPES structure This structure defines the types of magnetic stripe cards supported by the reader.
_MSR_UPDATE_KEY structure This structure contains the information necessary to set a new encryption key.
_POS_CX_ATTRIBUTES structure The POS_CX_ATTRIBUTES structure contains pointers to event callback functions implemented by the client driver.
_PosBarcodeScanDataTypeData structure This structure describes a buffer of barcode symbologies supported by the driver.
_PosBarcodeScannerCapabilitiesType structure This structure defines the type of scanner capabilities that a device supports such as whether the device supports statistics reporting and image preview.
_PosBarcodeScannerDataReceivedEventData structure This structure contains the scanned data that is passed to the BarcodeScannerDataReceived event.
_PosBarcodeScannerErrorOccurredEventData structure This structure contains the error data that is passed to the BarcodeScannerErrorOccurred event.
_PosDeviceBasicsType structure This structure indicates the type of device, version, and recommended buffer size as specified by the driver.
_PosDeviceInformation structure This structure provides device information as defined in and required by the Unified Point of Service (UPOS) standard.
_PosEventDataHeader structure This structure describes the scanned image data that is passed to the BarcodeScannerImagePreviewReceived event.
_PosMagneticStripeReaderCapabilitiesType structure 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 structure This structure describes the number of profile strings in a buffer.
_PosStatisticsHeader structure This structure defines Unified Point of Service (UPOS) standard information about a device. This structure is the header for an incoming statistic.
_PosStatusUpdatedEventData structure This structure contains data passed to the StatusUpdated event.
_PosStringType structure This structure represents a Point of Service (POS) unicode string with a length of DataLengthInBytes.
_PosValueStatisticsEntry structure This structure contains the value of a statistic.

Enumerations

Title Description
DriverMagneticStripeReaderAuthenticationLevel Enumeration This enumeration defines the levels of magnetic stripe reader (MSR) authentication support.
DriverUnifiedPosErrorReason Enumeration This enumeration indicates the reason for the error.
DriverUnifiedPosErrorSeverity Enumeration This enumeration indicates the severity of the error.
DriverUnifiedPosHealthCheckLevel Enumeration This enumeration indicates the type of health check to be performed when CheckHealthAsync is called on a POS device.
DriverUnifiedPosPowerReportingType Enumeration This enumeration defines the type of power reporting that is supported by the device (for example, advanced, standard, and so on).
DriverUnifiedPosPowerState Enumeration This enumeration is not implemented.
LineDisplayBitmapWidth Enumeration This enumeration is not implemented.
LineDisplayCursorCapabilities Enumeration This enumeration is not implemented.
LineDisplayCursorTypeFlags Enumeration This enumeration is not implemented.
LineDisplayHorizontalBitmapAlignment Enumeration This enumeration is not implemented.
LineDisplayVerticalBitmapAlignment Enumeration This enumeration is not implemented.
_BarcodeStatus Enumeration This enumeration indicates barcode scanner status values.
_BarcodeSymbology Enumeration This enumeration defines the barcode symbologies.
_BarcodeSymbologyDecodeLengthType Enumeration 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.
_LineDisplayMarqueeFormatType Enumeration This enumeration is not implemented.
_LineDisplayMarqueeTypeType Enumeration This enumeration is not implemented.
_LineDisplayStatusType Enumeration This enumeration is not implemented.
_MsrCardType Enumeration This enumeration defines the kinds of magnetic stripe cards.
_MsrDataEncryption Enumeration This enumeration defines the kind of encryption algorithm supported by the magnetic stripe reader (MSR).
_MsrErrorReportingType Enumeration This enumeration defines the constants that indicate the error reporting type for the magnetic stripe reader (MSR).
_MsrStatisticsEntryType Enumeration This enumeration defines the kinds of magnetic stripe reader statistics.
_MsrStatusUpdateType Enumeration This enumeration defines the constants that indicate the magnetic stripe reader (MSR) status.
_MsrTrackErrorType Enumeration This enumeration defines the kinds of magnetic stripe reader track errors.
_MsrTrackIds Enumeration Defines the constants that represent the magnetic stripe reader (MSR) tracks.
_POS_CX_EVENT_ATTRIBUTES Enumeration 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 Enumeration The POS_CX_EVENT_DEST defines which applications receive this event.
_POS_CX_EVENT_PRIORITY Enumeration The POS_CX_EVENT_PRIORITY defines the importance of the event and the order it will be delivered to the client application.
_PosDeviceControlType Enumeration This enumeration defines values for the IOCTLs of the scanner driver and magnetic stripe reader (MSR) driver.
_PosDeviceType Enumeration This enumeration defines values used in the PosDeviceBasicsType structure to indicate the type of device (for instance, barcode scanner or magnetic stripe reader).
_PosEventType Enumeration This enumeration defines values used in the PosEventDataHeader structure to indicate the type of event that was raised.
_PosPropertyId Enumeration 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).

I/O control codes

Title Description
IOCTL_POINT_OF_SERVICE_CHECK_HEALTH IOCTL This I/O control function checks the device health.
IOCTL_POINT_OF_SERVICE_CLAIM_DEVICE IOCTL The I/O control function claims the device for exclusive access.
IOCTL_POINT_OF_SERVICE_GET_DEVICE_BASICS IOCTL 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 IOCTL This I/O control function returns the value of the specified property from the device driver.
IOCTL_POINT_OF_SERVICE_MSR_AUTHENTICATE_DEVICE IOCTL This IO control function authenticates the magnetic stripe reader (MSR).
IOCTL_POINT_OF_SERVICE_MSR_DEAUTHENTICATE_DEVICE IOCTL This I/O control function deauthenticates the magnetic stripe reader (MSR).
IOCTL_POINT_OF_SERVICE_MSR_RETRIEVE_DEVICE_AUTHENTICATION IOCTL This I/O control function retrieves the device authentication type.
IOCTL_POINT_OF_SERVICE_MSR_UPDATE_KEY IOCTL This I/O control function sets a new encryption key.
IOCTL_POINT_OF_SERVICE_RELEASE_DEVICE IOCTL 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 IOCTL This I/O control function resets the specified statistic's value to zero.
IOCTL_POINT_OF_SERVICE_RETAIN_DEVICE IOCTL 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 IOCTL 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 IOCTL This I/O control function sets the specified property on the device.
IOCTL_POINT_OF_SERVICE_UPDATE_STATISTICS IOCTL This I/O control function sets the specified statistic to the value in the input buffer.