Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
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