ISCardISO7816::ReadRecord

The ReadRecord method constructs an APDU command that reads either the contents of the specified record(s) or the beginning part of one record of an elementary file.

HRESULT ReadRecord(
  BYTE byRecordId,
  BYTE byRefCtrl,
  LONG lBytesToRead,
  LPSCARDCMD *ppCmd
);
 

Parameters

byRecordId [in, defaultvalue(NULL_BYTE)]
Record number or ID of the first record to be read (00 indicates the current record).
byRefCtrl [in]
Coding of the reference control:
Meaning 8 7 6 5 4 3 2 1
Current EF 0 0 0 0 0 - - -
Short EF ID x x x x x - - -
RFU 1 1 1 1 1 - - -
Record - - - - - 1 x x
Read Record - - - - - 1 0 0
Up to Last - - - - - 1 0 1
Up to P1 - - - - - 1 1 0
RFU - - - - - 1 1 1
Record ID - - - - - 0 x x
First Occur - - - - - 0 0 0
Last Occur - - - - - 0 0 1
Next Occur - - - - - 0 1 0
Previous - - - - - 0 1 1
Secret - - - x x x x x

Current EF = Currently selected EF.

Short EF ID = Short EF identifier.

Record # = Usage of record number in P1.

Read Record = Read record P1.

Up to Last = Read all records from P1 up to the last.

Up to P1 = Read all records from the last up to P1.

Record ID = Usage of record ID in P1.

First Occur = Read first occurrence.

Last Occur = Read last occurrence.

Next Occur = Read next occurrence.

Previous = Read previous occurrence.

lBytesToRead [in, defaultvalue(0)]
Number of bytes to read from the transparent EF.

If the Le field contains only zeroes, then depending on b3b2b1 of P2 and within the limit of 256 for short length or 65536 for extended length, the command should read completely either the single requested record or the requested sequence of records.

ppCmd [in, out]
On input, a pointer to an ISCardCmd interface object or NULL.

On return, it is filled with the APDU command constructed by this operation. If ppCmd was set to NULL, a smart card ISCardCmd object is internally created and returned via the ppCmd pointer.

Return Values

The possible return values are the following:

Value Meaning
S_OK Operation completed successfully.
E_INVALIDARG Invalid parameter.
E_POINTER A bad pointer was passed in.
E_OUTOFMEMORY Out of memory.

Remarks

The encapsulated command can only be performed if the security status of the smart card satisfies the security attributes of the elementary file being read.

If another elementary file is currently selected at the time of issuing this command, it may be processed without identification of the currently selected file.

When the command contains a valid short elementary identifier, it sets the file as current elementary file.

Elementary files without a record structure cannot be read. The encapsulated command aborts if applied to an elementary file without a record structure.

For a list of all the methods provided by the ISCardISO7816 interface, see ISCardISO7816.

In addition to the COM error codes listed above, this interface may return a smart card error code if a smart card function was called to complete the request. For information on smart card error codes, see Error Codes.

QuickInfo

  Windows NT: Use version 4.0 SP3 and later.
  Windows: Use Windows 95 OSR2.1.
  Windows CE: Unsupported.
  Header: Declared in scardsrv.h.
  Import Library: scardsrv.tlb.

See Also

AppendRecord, ISCardISO7816, UpdateRecord, WriteRecord