OPENCARD_SEARCH_CRITERIAW構造 (winscard.h)

OPENCARD_SEARCH_CRITERIA構造体は、呼び出し元によって設定された要件を満たすカードを認識するために、SCardUIDlgSelectCard 関数によって使用されます。 ただし、この構造体を使用せずに SCardUIDlgSelectCard を 呼び出すことができます。

構文

typedef struct {
  DWORD          dwStructSize;
  LPWSTR         lpstrGroupNames;
  DWORD          nMaxGroupNames;
  LPCGUID        rgguidInterfaces;
  DWORD          cguidInterfaces;
  LPWSTR         lpstrCardNames;
  DWORD          nMaxCardNames;
  LPOCNCHKPROC   lpfnCheck;
  LPOCNCONNPROCW lpfnConnect;
  LPOCNDSCPROC   lpfnDisconnect;
  LPVOID         pvUserData;
  DWORD          dwShareMode;
  DWORD          dwPreferredProtocols;
} OPENCARD_SEARCH_CRITERIAW, *POPENCARD_SEARCH_CRITERIAW, *LPOPENCARD_SEARCH_CRITERIAW;

メンバー

dwStructSize

構造体の長さ (バイト単位)。 NULL にすることはできません。

lpstrGroupNames

null で終わるグループ名の文字列を含むバッファーへのポインター。 バッファー内の最後の文字列は、2 つの null 文字で終了する必要があります。 各文字列は、検索に含めるカードのグループの名前です。 lpstrGroupNamesNULL の場合、既定のグループ (Scard$DefaultReaders) が検索されます。

nMaxGroupNames

lpstrGroupNames 文字列内の最大バイト数 (ANSI バージョン) または文字 (Unicode バージョン)。

rgguidInterfaces

将来利用するために予約されています。 必要なインターフェイスを識別する GUID の配列。 このメンバーを NULL に設定 します

cguidInterfaces

将来利用するために予約されています。 rgguidInterfaces 配列内のインターフェイスの数。 このメンバーを NULL に設定 します

lpstrCardNames

null で終わるカード名前文字列を含むバッファーへのポインター。 バッファー内の最後の文字列は、2 つの null 文字で終了する必要があります。 各文字列は、配置されるカードの名前です。

nMaxCardNames

lpstrGroupNames 文字列内の最大バイト数 (ANSI バージョン) または文字 (Unicode バージョン)。

lpfnCheck

呼び出し元のカード検証ルーチンへのポインター。 特別なカード検証が必要ない場合、このポインターは NULL です。 カードが検証ルーチンによって拒否された場合、FALSE が返され、カードが切断されます。 カードが検証ルーチンによって受け入れられる場合は、TRUE が返されます。

チェック ルーチンのプロトタイプは次のとおりです。

Boolean Check(
  hSCardContext, // the card context passed in the parameter block
  hCard,         // card handle
  pvUserData     // pointer to user data passed in the parameter block
);

lpfnConnect

呼び出し元のカード接続ルーチンへのポインター。 呼び出し元がカードに接続するために追加の処理を実行する必要がある場合、この関数ポインターはユーザーの connect 関数に設定されます。 接続関数が成功した場合、カードは接続されて初期化され、カード ハンドルが返されます。

接続ルーチンのプロトタイプは次のとおりです。

Connect(
  hSCardContext, // the card context passed in the parameter block
  szReader,      // the name of the reader
  mszCards,      // multiple string that contains
                 //    the possible card names in the reader
  pvUserData     // pointer to user data passed in parameter block
);

lpfnDisconnect

呼び出し元のカード切断ルーチンへのポインター。

切断ルーチンのプロトタイプは次のとおりです。

Disconnect(
  hSCardContext, // the card context passed in the parameter block
  hCard,         // card handle
  pvUserData     // pointer to user data passed in the parameter block
);

メモlpfnConnectlpfnChecklpfnDisconnect を使用する場合は、3 つのコールバック プロシージャがすべて存在する必要があります。 これらのコールバックを使用すると、呼び出し元のアプリケーションが適切なカードを検出したことをさらに確認できます。 これは、適切なカードが選択されていることを確認する最適な方法です。 ただし、lpfnCheckNULL ではない値を使用する場合は、lpfnConnectlpfnDisconnect の両方を NULL にすることはできません (また、pvUserData も指定する必要があります)、dwShareModedwPreferredProtocols の両方を設定する必要があります。
 

pvUserData

ユーザー データへの void ポインター。 このポインターは、Connect、Check、Disconnect の各ルーチンで呼び出し元に返されます。

dwShareMode

lpfnConnectNULL でない場合、dwShareMode メンバーと dwPreferredProtocols メンバーは無視されます。 lpfnConnectNULL、dwShareMode が 0 以外の場合、dwShareModedwPreferredProtocols をパラメーターとして使用する SCardConnect に対して内部呼び出しが行われます。

dwPreferredProtocols

dwShareMode で説明されているように、内部接続に使用されます。

注釈

注意

winscard.h ヘッダーは、OPENCARD_SEARCH_CRITERIAをエイリアスとして定義します。これは、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択します。 encoding-neutral エイリアスの使用を encoding-neutral ではないコードと混在すると、コンパイル エラーまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。

要件

要件
サポートされている最小のクライアント Windows XP (デスクトップ アプリのみ)
サポートされている最小のサーバー Windows Server 2003 (デスクトップ アプリのみ)
Header winscard.h

こちらもご覧ください

OPENCARDNAME_EX

SCardUIDlgSelectCard