共用方式為


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]

位元組緩衝區的指標 (透過 IStream 物件) 對應,其中包含傳回時包含 APDU 回復訊息的位元組緩衝區。

傳回值

方法會傳回下列其中一個可能的值。

傳回碼 描述
S_OK
作業順利完成。
E_INVALIDARG
ppReplyApdu參數無效。
E_POINTER
在 ppReplyApdu中傳遞不正確的指標。
E_OUTOFMEMORY
記憶體不足。

 

備註

若要判斷 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
標頭
Scarddat.h
類型程式庫
Scarddat.tlb
DLL
Scardssp.dll
IID
IID_ISCardCmd定義為 D5778AE3-43DE-11D0-9171-00AA00C18068

另請參閱

get_ApduReplyLength

ISCardCmd

put_ApduReply