OPENCARDNAME_EXW 構造体 (winscard.h)
OPENCARDNAME_EX構造体には、SCardUIDlgSelectCard 関数がスマート カード [カードの選択] ダイアログ ボックスを初期化するために使用する情報が含まれています。
構文
typedef struct {
DWORD dwStructSize;
SCARDCONTEXT hSCardContext;
HWND hwndOwner;
DWORD dwFlags;
LPCWSTR lpstrTitle;
LPCWSTR lpstrSearchDesc;
HICON hIcon;
POPENCARD_SEARCH_CRITERIAW pOpenCardSearchCriteria;
LPOCNCONNPROCW lpfnConnect;
LPVOID pvUserData;
DWORD dwShareMode;
DWORD dwPreferredProtocols;
LPWSTR lpstrRdr;
DWORD nMaxRdr;
LPWSTR lpstrCard;
DWORD nMaxCard;
DWORD dwActiveProtocol;
SCARDHANDLE hCardHandle;
} OPENCARDNAME_EXW, *POPENCARDNAME_EXW, *LPOPENCARDNAME_EXW;
メンバー
dwStructSize
構造体の長さ (バイト単位)。 このメンバーの値は NULL にすることはできません。
hSCardContext
スマート カードリソース マネージャーとの通信に使用されるコンテキスト。 SCardEstablishContext を呼び出してリソース マネージャー コンテキストを設定し、SCardReleaseContext を呼び出して解放します。 このメンバーの値は NULL にすることはできません。
hwndOwner
ダイアログ ボックスを所有するウィンドウ。 このメンバーは、任意の有効なウィンドウ ハンドルにすることも、デスクトップの既定値では NULL にすることもできます。
dwFlags
ダイアログ ボックスの初期化に使用できるビット フラグのセット。 ダイアログ ボックスが戻ると、ユーザーの入力を示すようにこれらのフラグが設定されます。 このメンバーには、次のいずれかのフラグを指定できます。
値 | 説明 |
---|---|
|
呼び出し元のアプリケーションによって検索されるカードが見つからない場合、リーダーで使用できる場合にのみ、ダイアログ ボックスを表示します。 これにより、カードを見つけ、(内部ダイアログ ボックス メカニズムまたはユーザー コールバック関数を介して) 接続し、呼び出し元のアプリケーションに返すことができます。 |
|
検索結果に関係なく、 Select Cardユーザー インターフェイス (UI) の表示を強制しません。 |
|
検索結果に関係なく、 カードの選択 UI を強制的に表示します。 |
lpstrTitle
ダイアログ ボックスのタイトル バーに配置する文字列へのポインター。 このメンバーが NULL の場合、システムは既定のタイトル "Select Card:" を使用します。
lpstrSearchDesc
スマート カードを挿入するプロンプトとしてユーザーに表示される文字列へのポインター。 このメンバーが NULL の場合、システムは既定のテキスト "スマート カードを挿入してください" を使用します。
hIcon
アイコンへのハンドル (32 x 32 ピクセル)。 ダイアログ ボックスに表示するベンダー固有のアイコンを指定できます。 この値が NULL の場合は、汎用のスマート カードリーダー読み込みアイコンが表示されます。
pOpenCardSearchCriteria
使用する OPENCARD_SEARCH_CRITERIA 構造体へのポインター。使用されていない場合は NULL。
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
);
pvUserData
ユーザー データへの void ポインター。 このポインターは、Connect ルーチンの呼び出し元に返されます。
dwShareMode
lpfnConnect が NULL でない場合、dwShareMode メンバーと dwPreferredProtocols メンバーは無視されます。 lpfnConnect が NULL で dwShareMode が 0 以外の場合、dwShareMode パラメーターと dwPreferredProtocols パラメーターとして dwShareMode と dwPreferredProtocols を使用する SCardConnect に対して内部呼び出しが行われます。 接続が成功した場合、 hCardHandle は SCardConnect によって返されるハンドルに設定されます。 lpfnConnect が NULL で、dwShareMode が 0 の場合、hCardHandle は NULL に設定されます。
dwPreferredProtocols
dwShareMode で説明されているように、内部接続に使用されます。
lpstrRdr
カードが配置されている場合、lpstrRdr バッファーには、配置されたカードを含むリーダーの名前が含まれます。 バッファーの長さが 256 文字以上である必要があります。
nMaxRdr
lpstrRdr が指すバッファーのサイズ (バイト (ANSI バージョン) または文字 (Unicode バージョン)。 バッファーが小さすぎてリーダー情報を含めなければ、 SCardUIDlgSelectCard は lpstrRdr が指すバッファーのSCARD_E_NO_MEMORYと必要なサイズを返します。
lpstrCard
カードが配置されている場合、lpstrCard バッファーには、配置されているカードの名前が含まれます。 バッファーの長さが 256 文字以上である必要があります。
nMaxCard
lpstrCard が指すバッファーのサイズ (バイト (ANSI バージョン) または文字 (Unicode バージョン)。 バッファーが小さすぎてカード情報を含めなければ、SCardUIDlgSelectCard は nMaxCard 内のバッファーのSCARD_E_NO_MEMORYと必要なサイズを返します。
dwActiveProtocol
ダイアログ ボックスがカードに接続するときに使用される実際のプロトコル。
hCardHandle
接続されたカードのハンドル (内部ダイアログ ボックス接続または lpfnConnect コールバックのいずれかを使用)。
解説
注意
winscard.h ヘッダーは、OPENCARDNAME_EXをエイリアスとして定義します。これは、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択します。 エンコードに依存しないエイリアスをエンコードニュートラルでないコードと組み合わせて使用すると、コンパイルまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。
要件
サポートされている最小のクライアント | Windows XP (デスクトップ アプリのみ) |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
Header | winscard.h |