_Kontexthandle _ noserialize-Attribut
Das [ _ Kontexthandle _ noserialize ] ACF-Attribut garantiert, dass ein Kontexthandle unabhängig vom Standardverhalten der Anwendung nie serialisiert wird.
typedef [context_handle_noserialize [ , type-acf-attribute-list ] ] context-handle-type
[context_handle_noserialize [, function-acf-attribute-list ] ] function-name( );
function-name ( [context_handle_noserialize
[ , parameter-acf-attribute-list ] ] param-name );
Parameter
-
type-acf-attribute-list
-
Alle anderen ACF-Attribute, die für den Typ gelten.
-
context-handle-type
-
Der Bezeichner, der den Kontexthandletyp angibt, wie in einer typedef-Deklaration definiert. Dies ist der Typ, der das [ _ ] Kontexthandleattribut in der IDL-Datei empfängt.
-
function-acf-attribute-list
-
Alle zusätzlichen ACF-Attribute, die für die Funktion gelten.
-
Funktionsname
-
Der Name der Funktion, wie in der IDL-Datei definiert.
-
parameter-acf-attribute-list
-
Alle anderen ACF-Attribute, die für den Parameter gelten.
-
param-name
-
Der Name des Parameters, wie in der IDL-Datei definiert.
Hinweise
Das [ _ ] Kontexthandleatat identifiziert ein Bindungshandle, das Kontext- oder Zustandsinformationen auf dem Server zwischen Remoteprozeduraufrufen verwaltet. Das Attribut kann als IDL-Typdefinitionstypattribut, als Funktionsrückgabetypattribut oder als Parameterattribut angezeigt werden.
Standardmäßig werden Aufrufe von Kontexthandles serialisiert. Eine Anwendung kann RpcSsDontSerializeContext aufrufen, um dieses Standardverhalten zu überschreiben. Die Verwendung des [ _ ] Kontexthandleattributs in einer ACF-Datei garantiert, dass Aufrufe für dieses bestimmte Kontexthandle unabhängig vom Verhalten der aufrufenden Anwendung nicht serialisiert werden. Das Bereitstellen einer Kontext-Rundownroutine ist optional.
Dieses Attribut ist in MIDL Version 5.0 verfügbar.
Windows Server 2003 und Windows XP oder höher: Eine einzelne Schnittstelle kann sowohl serialisierte als auch nicht serialisierte Kontexthandles aufnehmen, sodass eine Methode einer Schnittstelle ausschließlich auf ein Kontexthandle zugreifen kann (serialisiert), während andere Methoden im freigegebenen Modus (nicht serialisiert) auf dieses Kontexthandle zugreifen. Diese Zugriffsfunktionen sind vergleichbar mit Lese-/Schreibsperrmechanismen. -Methoden, die ein serialisiertes Kontexthandle verwenden, sind exklusive Benutzer (Writer), während Methoden, die ein nicht serialisiertes Kontexthandle verwenden, freigegebene Benutzer (Reader) sind. Methoden, die den Zustand eines Kontexthandle zerstören oder ändern, müssen serialisiert werden. Methoden, die den Zustand eines Kontexthandles nicht ändern, z. B. Methoden, die einfach aus einem Kontexthandle lesen, können nicht deserialisiert werden. Beachten Sie, dass Erstellungsmethoden implizit serialisiert werden.
Beispiele
typedef [context_handle_noserialize] PCONTEXT_HANDLE_TYPE;
HRESULT RemoteFunc([context_handle_noserialize] pCxHandle);