SCardGetReaderDeviceInstanceIdA 函式 (winscard.h)

SCardGetReaderDeviceInstanceId函式會取得指定讀取器名稱之卡片讀取器的裝置實例識別碼。 此函式不會影響讀取器的狀態。

語法

LONG SCardGetReaderDeviceInstanceIdA(
  [in]            SCARDCONTEXT hContext,
  [in]            LPCSTR       szReaderName,
  [out, optional] LPSTR        szDeviceInstanceId,
  [in, out]       LPDWORD      pcchDeviceInstanceId
);

參數

[in] hContext

識別查詢之資源管理員內容的控制碼。 您可以透過先前呼叫 SCardEstablishCoNtext 函式來設定資源管理員內容。 此參數不可為 Null

[in] szReaderName

讀取器名稱。 您可以呼叫 SCardListReaders 函式來取得此值。

[out, optional] szDeviceInstanceId

接收讀取器裝置實例識別碼的緩衝區。 如果此值為 Null,此函式會忽略 cchDeviceInstanceId 參數中提供的緩衝區長度、將此參數尚未傳 回的緩衝區 長度寫入 cchDeviceInstanceId,並傳回成功碼。

[in, out] pcchDeviceInstanceId

szDeviceInstanceId緩衝區的長度,以字元為單位,包括Null結束字元。 如果緩衝區長度指定為 SCARD_AUTOALLOCATE, 則 szDeviceInstanceId 參數會轉換成位元組指標的指標,並接收包含實例識別碼的記憶體區塊位址。此記憶體區塊必須與 SCardFreeMemory 函式 解除配置。

傳回值

此函式會根據它是否成功或失敗,傳回不同的值。

傳回碼 描述
「成功」
SCARD_S_SUCCESS。
失敗
錯誤碼。 如需詳細資訊,請參閱 智慧卡傳回值

備註

此函式不會重新導向。 在遠端桌面會話內失敗時呼叫 SCardGetReaderDeviceInstanceId 函式,並出現錯誤碼SCARD_E_READER_UNAVAILABLE。

範例


LONG     lReturn;
LPTSTR   szReaderName = "USB Smart Card Reader 0";
WCHAR    szDeviceInstanceId[256];
DWORD    cchDeviceInstanceId = 256;

// Retrieve the reader's device instance ID.
// hContext was set by a previous call to SCardEstablishContext.
lReturn = SCardGetReaderDeviceInstanceId (hContext,
                         szReaderName,
                         szDeviceInstanceId,
                         &cchDeviceInstanceId);

if ( SCARD_S_SUCCESS != lReturn )
{
    printf("Failed SCardGetReaderDeviceInstanceId - %x\n", lReturn);
    // Take appropriate action.
}



注意

winscard.h 標頭會根據 UNICODE 預處理器常數的定義,將 SCardGetReaderDeviceInstanceId 定義為別名,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程式碼,可能會導致編譯或執行時間錯誤不符。 如需詳細資訊,請參閱 函式原型的慣例

規格需求

   
最低支援的用戶端 Windows 8 [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2012 [僅限傳統型應用程式]
目標平台 Windows
標頭 winscard.h