次の方法で共有


OPENCARD_SEARCH_CRITERIAA構造体 (winscard.h)

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

構文

typedef struct {
  DWORD          dwStructSize;
  LPSTR          lpstrGroupNames;
  DWORD          nMaxGroupNames;
  LPCGUID        rgguidInterfaces;
  DWORD          cguidInterfaces;
  LPSTR          lpstrCardNames;
  DWORD          nMaxCardNames;
  LPOCNCHKPROC   lpfnCheck;
  LPOCNCONNPROCA lpfnConnect;
  LPOCNDSCPROC   lpfnDisconnect;
  LPVOID         pvUserData;
  DWORD          dwShareMode;
  DWORD          dwPreferredProtocols;
} OPENCARD_SEARCH_CRITERIAA, *POPENCARD_SEARCH_CRITERIAA, *LPOPENCARD_SEARCH_CRITERIAA;

メンバーズ

dwStructSize

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

lpstrGroupNames

null で終わるグループ名文字列を含むバッファーへのポインター。 バッファー内の最後の文字列は、2 つの null 文字で終了する必要があります。 各文字列は、検索に含めるカードのグループの名前です。 lpstrGroupNames が NULL場合は、既定のグループ (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(
  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
);

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

pvUserData

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

dwShareMode

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

dwPreferredProtocols

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

備考

手記

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

必要条件

要件 価値
サポートされる最小クライアント Windows XP [デスクトップ アプリのみ]
サポートされる最小サーバー Windows Server 2003 [デスクトップ アプリのみ]
ヘッダー winscard.h

関連項目

OPENCARDNAME_EX

SCardUIDlgSelectCard