ISCardCmd::BuildCmd method

[The BuildCmd method is available for use in the operating systems specified in the Requirements section. It is not available for use in Windows Server 2003 with Service Pack 1 (SP1) and later, Windows Vista, Windows Server 2008, and subsequent versions of the operating system. The Smart Card Modules provide similar functionality.]

The BuildCmd method constructs a valid command application protocol data unit (APDU) for transmission to a smart card.

Syntax


HRESULT BuildCmd(
  [in] BYTE         byClassId,
  [in] BYTE         byInsId,
  [in] BYTE         byP1,
  [in] BYTE         byP2,
  [in] LPBYTEBUFFER pbyData,
  [in] LONG         *p1Le
);

Parameters

byClassId [in]

Command class identifier.

byInsId [in]

Command instruction identifier.

byP1 [in]

Command's first parameter.

byP2 [in]

Command's second parameter.

pbyData [in]

Pointer to the data portion of the command.

p1Le [in]

Pointer to a LONG integer containing the expected length of the returned data.

Return value

The method returns one of the following possible values.

Return codeDescription
S_OK

Operation completed successfully.

E_INVALIDARG

One of the parameters is not valid.

E_POINTER

A bad pointer was passed in.

E_OUTOFMEMORY

Out of memory.

 

Remarks

To encapsulate the command into another command, call Encapsulate.

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

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 more information, see Smart Card Return Values.

Examples

The following example shows how to construct a command APDU. The example assumes that pISCardCmd is a valid pointer to an instance of the ISCardCmd interface and that pIByteRequest is a valid pointer to an instance of the IByteBuffer interface initialized with a previous call to the IByteBuffer::Initialize method.


LONG       lLe = 0;
HRESULT    hr;

hr = pISCardCmd->BuildCmd(0x00,   // Some cards prefer 0xC0
                          0xa4,   // 'Select File'
                          0x00,
                          0x00,
                          pIByteRequest,
                          &lLe);
if (FAILED(hr))
{
    printf("Failed ISCardCmd::BuildCmd\n");
    // Take other error handling action as needed.
}


Requirements

Minimum supported client

Windows XP [desktop apps only]

Minimum supported server

Windows Server 2003 [desktop apps only]

End of client support

Windows XP

End of server support

Windows Server 2003

Header

Scarddat.h

Type library

Scarddat.tlb

DLL

Scardssp.dll

IID

IID_ISCardCmd is defined as D5778AE3-43DE-11D0-9171-00AA00C18068

See also

Encapsulate
ISCardCmd

 

 

Show: