ISCardCmd::get_ApduReply メソッド
[ get_ApduReply メソッドは、[要件] セクションで指定したオペレーティング システムで使用できます。 Windows Server 2003 Service Pack 1 (SP1) 以降、Windows Vista、Windows Server 2008、および以降のバージョンのオペレーティング システムでは使用できません。 スマート カード モジュールも同様の機能を提供します。
get_ApduReply メソッドは、応答 APDU を取得し、特定のバイト バッファーに配置します。 コマンド APDU に対してトランザクションが実行されていない場合、応答は NULL になる可能性があります。
構文
HRESULT get_ApduReply(
[out] LPBYTEBUFFER *ppReplyApdu
);
パラメーター
-
ppReplyApdu [out]
-
返された APDU 応答メッセージを含むバイト バッファー ( IStream オブジェクトを介してマップされる) へのポインター。
戻り値
メソッドは、次のいずれかの値を返します。
リターン コード | 説明 |
---|---|
|
操作は正常に完了しました。 |
|
ppReplyApdu パラメーターが無効です。 |
|
不適切なポインターが ppReplyApdu で渡されました。 |
|
メモリが不足しています。 |
解説
APDU 応答の長さを判別するには、 get_ApduReplyLengthを呼び出します。
新しい応答 APDU を設定するには、 put_ApduReplyを呼び出します。
このインターフェイスによって提供されるすべてのメソッドの一覧については、「 ISCardCmd」を参照してください。
上記の COM エラー コードに加えて、要求を完了するためにスマート カード関数が呼び出された場合、このインターフェイスはスマート カード エラー コードを返す場合があります。 詳細については、「 スマート カードの戻り値」を参照してください。
例
次の例は、応答データを取得する方法を示しています。 この例では、lLe が LONG 型の変数であり、その値が ISCardCmd::get_ApduReplyLength メソッドの以前の呼び出しによって設定され、pIByteReply が IByteBuffer インターフェイスのインスタンスへの有効なポインターであり、pISCardCmd が ISCardCmd インターフェイスのインスタンスへの有効なポインターであることを前提としています。
HRESULT hr;
if (lLe > 0)
{
// Get reply data if available.
hr = pISCardCmd->get_ApduReply(&pIByteReply);
if (FAILED(hr))
{
printf("Failed ISCardCmd::get_ApduReply.\n");
// Take other error handling action as needed.
}
else
{
BYTE byReplyBytes[256];
LONG lBytesRead;
hr = pIByteReply->Read(byReplyBytes, lLe, &lBytesRead);
if (FAILED(hr))
{
printf("Failed IByteBuffer::Read.\n");
// Take other error handling action as needed.
}
// Use the bytes in byReplyBytes as needed.
}
}
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント |
Windows XP [デスクトップ アプリのみ] |
サポートされている最小のサーバー |
Windows Server 2003 [デスクトップ アプリのみ] |
クライアント サポートの終了 |
Windows XP |
サーバー サポートの終了 |
Windows Server 2003 |
ヘッダー |
|
タイプ ライブラリ |
|
[DLL] |
|
IID |
IID_ISCardCmdは D5778AE3-43DE-11D0-9171-00AA00C18068 として定義されています |
関連項目