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 is raised after a successful magnetic stripe reader (MSR) scan event.
Syntax
typedef struct _MSR_DATA_RECEIVED {
MsrCardType CardType;
unsigned char Track1EncryptedDataLength;
unsigned char Track2EncryptedDataLength;
unsigned char Track3EncryptedDataLength;
unsigned char Track4EncryptedDataLength;
unsigned char Track1EncryptedData[MSR_TRACK_SIZE];
unsigned char Track2EncryptedData[MSR_TRACK_SIZE];
unsigned char Track3EncryptedData[MSR_TRACK_SIZE];
unsigned char Track4EncryptedData[MSR_TRACK_SIZE];
unsigned char Track1MaskedDataLength;
unsigned char Track2MaskedDataLength;
unsigned char Track3MaskedDataLength;
unsigned char Track4MaskedDataLength;
unsigned char Track1MaskedData[MSR_TRACK_SIZE];
unsigned char Track2MaskedData[MSR_TRACK_SIZE];
unsigned char Track3MaskedData[MSR_TRACK_SIZE];
unsigned char Track4MaskedData[MSR_TRACK_SIZE];
unsigned char Track1DiscretionaryDataLength;
unsigned char Track2DiscretionaryDataLength;
unsigned char Track1DiscretionaryData[MSR_TRACK_SIZE];
unsigned char Track2DiscretionaryData[MSR_TRACK_SIZE];
unsigned char CardAuthenicationDataLength; // Length of data after encryption, may include padding.
unsigned char CardAuthenticationDataAbsoluteLength; // Length of data before encryption, may be needed to strip padding on decryption.
unsigned char CardAuthenicationData[MSR_CARD_AUTHENTICATION_DATA_SIZE];
unsigned char AdditionalSecurityInformationLength;
unsigned char AdditionalSecurityInformation[MSR_ADDITIONAL_SECURITY_INFORMATION_SIZE];
} MSR_DATA_RECEIVED, *PMSR_DATA_RECEIVED;
The following table shows the memory layout of the data buffer for this event.
Memory value | Description |
---|---|
0x00000008 | EventType = PosEventType:: MagneticStripeReaderDataReceived |
UINT32 | DataLength = sizeof(PosEventDataHeader) + sizeof(MSR_DATA_RECEIVED) |
32-bit MsrCardType | MsrCardType |
unsigned char | Track1EncryptedDataLength - Will always be zero (0) if MsrDataEncryption is MsrDataEncryption_None. |
unsigned char | Track2EncryptedDataLength - Will always be zero (0) if MsrDataEncryption is MsrDataEncryption_None. |
unsigned char | Track3EncryptedDataLength - Will always be zero (0) if MsrDataEncryption is MsrDataEncryption_None. |
unsigned char | Track4EncryptedDataLength - Will always be zero (0) if MsrDataEncryption is MsrDataEncryption_None. |
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 – Will always be zero (0) if MagneticStripeReaderIsDecodeDataEnabled is false. |
unsigned char | Track2DiscretionaryDataLength– Will always be zero (0) if MagneticStripeReaderIsDecodeDataEnabled is false. |
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 encrypted data in bytes, including padding |
unsigned char | CardAuthenticationDataAbsoluteLength - length of the unencrypted data in bytes (you may need 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 |
Requirements
Header: pointofservicedriverinterface.h