Freigeben über


OPENCARD_SEARCH_CRITERIAA Struktur (winscard.h)

Die OPENCARD_SEARCH_CRITERIA Struktur wird von der funktion SCardUIDlgSelectCard verwendet, um Karten zu erkennen, die den vom Aufrufer festgelegten Anforderungen entsprechen. Sie können jedoch SCardUIDlgSelectCard- aufrufen, ohne diese Struktur zu verwenden.

Syntax

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;

Angehörige

dwStructSize

Die Länge der Struktur in Byte. Darf nicht NULL-sein.

lpstrGroupNames

Ein Zeiger auf einen Puffer, der Zeichenfolgen für den Namen der Null-beendeten Gruppe enthält. Die letzte Zeichenfolge im Puffer muss durch zwei NULL-Zeichen beendet werden. Jede Zeichenfolge ist der Name einer Gruppe von Karten, die in die Suche einbezogen werden soll. Wenn lpstrGroupNamesNULL-ist, wird die Standardgruppe (Scard$DefaultReaders) durchsucht.

nMaxGroupNames

Die maximale Anzahl von Bytes (ANSI-Version) oder Zeichen (Unicode- Version) in der lpstrGroupNames- Zeichenfolge.

rgguidInterfaces

Reserviert für die zukünftige Verwendung. Ein Array von GUIDs, das die erforderlichen Schnittstellen identifiziert. Legen Sie dieses Element auf NULL-fest.

cguidInterfaces

Reserviert für die zukünftige Verwendung. Die Anzahl der Schnittstellen in der rgguidInterfaces Arrays. Legen Sie dieses Element auf NULL-fest.

lpstrCardNames

Ein Zeiger auf einen Puffer, der Null-beendete Kartennamenzeichenfolgen enthält. Die letzte Zeichenfolge im Puffer muss durch zwei NULL-Zeichen beendet werden. Jede Zeichenfolge ist der Name einer Karte, die sich befindet.

nMaxCardNames

Die maximale Anzahl von Bytes (ANSI-Version) oder Zeichen (Unicode-Version) in der lpstrGroupNames Zeichenfolge.

lpfnCheck

Ein Zeiger auf die Kartenüberprüfungsroutine des Anrufers. Wenn keine spezielle Kartenüberprüfung erforderlich ist, ist dieser Zeiger NULL-. Wenn die Karte von der Überprüfungsroutine abgelehnt wird, wird FALSE zurückgegeben, und die Karte wird getrennt. Wenn die Karte von der Überprüfungsroutine akzeptiert wird, wird TRUE zurückgegeben.

Der Prototyp für die Prüfroutine lautet wie folgt.

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

Ein Zeiger auf die Kartenverbindungsroutine des Anrufers. Wenn der Aufrufer eine zusätzliche Verarbeitung durchführen muss, um eine Verbindung mit der Karte herzustellen, wird dieser Funktionszeiger auf die Verbindungsfunktion des Benutzers festgelegt. Wenn die Verbindungsfunktion erfolgreich ist, bleibt die Karte verbunden und initialisiert, und der Kartenziehpunkt wird zurückgegeben.

Der Prototyp für die Verbindungsroutine lautet wie folgt.

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

Ein Zeiger auf die Kartentrennroutine des Anrufers.

Der Prototyp für die Disconnect-Routine lautet wie folgt.

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

Hinweis Wenn Sie lpfnConnect, lpfnCheckund lpfnDisconnect-verwenden, sollten alle drei Rückrufprozeduren vorhanden sein. Die Verwendung dieser Rückrufe ermöglicht eine weitere Überprüfung, ob die aufrufende Anwendung die entsprechende Karte gefunden hat. Dies ist die beste Möglichkeit, um sicherzustellen, dass die entsprechende Karte ausgewählt ist. Wenn sie jedoch einen Wert verwenden, der nicht NULL- für lpfnCheck-ist, dürfen sowohl lpfnConnect als auch lpfnDisconnect nicht sein. NULL- (und pvUserData- sollten ebenfalls bereitgestellt werden) oder dwShareMode und dwPreferredProtocols festgelegt werden müssen.
 

pvUserData

Ungültiger Zeiger auf Benutzerdaten. Dieser Zeiger wird an den Anrufer in den Routinen "Verbinden", "Überprüfen" und "Trennen" übergeben.

dwShareMode

Wenn lpfnConnect- nicht NULL-ist, werden die dwShareMode- und dwPreferredProtocols-Member ignoriert. Wenn lpfnConnect-NULL- ist und dwShareMode- ungleich Null ist, wird ein interner Aufruf an SCardConnect- ausgeführt, die dwShareMode- und dwPreferredProtocols als Parameter verwendet.

dwPreferredProtocols

Wird für die interne Verbindung verwendet, wie in dwShareModebeschrieben.

Bemerkungen

Anmerkung

Der winscard.h-Header definiert OPENCARD_SEARCH_CRITERIA als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit Code, der nicht codierungsneutral ist, kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows XP [nur Desktop-Apps]
mindestens unterstützte Server- Windows Server 2003 [Nur Desktop-Apps]
Header- winscard.h

Siehe auch

OPENCARDNAME_EX

SCardUIDlgSelectCard-