ISCardCmd::BuildCmd 方法

[ BuildCmd 方法可在“要求”部分指定的操作系统中使用。 它不适用于 Windows Server 2003 Service Pack 1 (SP1) 及更高版本、Windows Vista、Windows Server 2008 和操作系统的后续版本。 智能卡模块提供类似的功能。]

BuildCmd 方法 (APDU) 构造有效的命令应用程序协议数据单元,以便传输到智能卡

语法

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

parameters

byClassId [in]

命令类标识符。

byInsId [in]

命令指令标识符。

byP1 [in]

命令的第一个参数。

byP2 [in]

命令的第二个参数。

pbyData [in]

指向命令的数据部分的指针。

p1Le [in]

指向包含返回数据的预期长度的 LONG 整数的指针。

返回值

方法返回以下可能值之一。

返回代码 说明
S_OK
操作已成功完成。
E_INVALIDARG
其中一个参数无效。
E_POINTER
传入了错误的指针。
E_OUTOFMEMORY
内存不足。

 

备注

若要将命令封装到另一个命令中,请调用 封装

有关此接口提供的所有方法的列表,请参阅 ISCardCmd

除了上面列出的 COM 错误代码之外,如果调用智能卡函数来完成请求,则此接口可能返回智能卡错误代码。 有关详细信息,请参阅 智能卡返回值

示例

以下示例演示如何构造命令 APDU。 该示例假定 pISCardCmd 是指向 ISCardCmd 接口实例的有效指针,pIByteRequest 是指向 IByteBuffer 接口实例的有效指针,该接口实例使用先前对 IByteBuffer::Initialize 方法的调用初始化。

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.
}

要求

要求
最低受支持的客户端
Windows XP [仅限桌面应用]
最低受支持的服务器
Windows Server 2003 [仅限桌面应用]
终止客户端支持
Windows XP
终止服务器支持
Windows Server 2003
标头
Scarddat.h
类型库
Scarddat.tlb
DLL
Scardssp.dll
IID
IID_ISCardCmd定义为 D5778AE3-43DE-11D0-9171-00AA00C18068

另请参阅

封装

ISCardCmd