MagneticStripeReaderErrorOccured

This event occurs when there is a magnetic stripe reader (MSR) error, such as a scanning error.

Syntax

typedef struct _MSR_ERROR_EVENT
{
    PosEventDataHeader Header;
    MsrTrackErrorType Track1Status;
    MsrTrackErrorType Track2Status;
    MsrTrackErrorType Track3Status;
    MsrTrackErrorType Track4Status;
    UnifiedPosErrorSeverity Severity;
    UnifiedPosErrorReason Reason;
    UINT32 ExtendedReason;
    MSR_DATA_RECEIVED CardData;
    wchar_t Message[MSR_ERROR_MAX_MESSAGE_LENGTH];
} MSR_ERROR_EVENT, *PMSR_ERROR_EVENT;

The following table shows the memory layout of the data buffer for this event.

Memory value Description
0x00000009 EventType = PosEventType:: MagneticStripeReaderErrorOccurred
UINT32 DataLength = sizeof(PosEventDataHeader) + sizeof(MSR_ERROR_EVENT)
32-bit MsrTrackErrorType Track1Status
32-bit MsrTrackErrorType Track2Status
32-bit MsrTrackErrorType Track3Status
32-bit MsrTrackErrorType Track4Status
32-bit UnifiedPosErrorSeverity Severity
32-bit UnifiedPosErrorReason Reason
UINT32 Extended Reason
32-bit MsrCardType CardType
unsigned char Track1EncryptedDataLength
unsigned char Track2EncryptedDataLength
unsigned char Track3EncryptedDataLength
unsigned char Track4EncryptedDataLength
unsigned char [MSR_TRACK_SIZE] Track1EncryptedDataLength bytes of encrypted track 1 data
unsigned char [MSR_TRACK_SIZE] Track2EncryptedDataLength bytes of encrypted track 2 data
unsigned char [MSR_TRACK_SIZE] Track3EncryptedDataLength bytes of encrypted track 3 data
unsigned char [MSR_TRACK_SIZE] Track4EncryptedDataLength bytes of encrypted track 4 data
unsigned char Track1MaskedDataLength
unsigned char Track2MaskedDataLength
unsigned char Track3MaskedDataLength
unsigned char Track4MaskedDataLength
unsigned char [MSR_TRACK_SIZE] Track1MaskedDataLength bytes of masked track 1 data
unsigned char [MSR_TRACK_SIZE] Track2MaskedDataLength bytes of masked track 2 data
unsigned char [MSR_TRACK_SIZE] Track3MaskedDataLength bytes of masked track 3 data
unsigned char [MSR_TRACK_SIZE] Track4MaskedDataLength bytes of masked track 4 data
unsigned char Track1DiscretionaryDataLength
unsigned char Track2DiscretionaryDataLength
unsigned char [MSR_TRACK_SIZE] Track1DiscretionaryDataLength bytes of discretionary track 1 data
unsigned char [MSR_TRACK_SIZE] Track2DiscretionaryDataLength bytes of discretionary track 2 data
unsigned char CardAuthenicationDataLength - length of the data after encryption, including padding
unsigned char CardAuthenticationDataAbsoluteLength - length of data before encryption (may be needed to strip padding during decryption)
unsigned char[MSR_ADDITIONAL_SECURITY_INFORMATION_DATA_SIZE] CardAuthenticationDataAbsoluteLength bytes of card authentication data
unsigned char AdditionalSecurityInformationLength
unsigned char[MSR_ADDITIONAL_SECURITY_INFORMATION_SIZE] AdditionalSecurityInformationLength bytes of additional security information
wchar_T [MSR_ERROR_MAX_MESSAGE_LENGTH] Up to MSR_ERROR_MAX_MESSAGE_LENGTH wchar_t of error Null-terminated message text

Remarks

If a scanning error occurs, and some scan data was obtained, the event data contains the partial scan data.

Requirements

Header: pointofservicedriverinterface.h