Freigeben über


context_handle_noserialize-Attribut

Das [context_handle_noserialize] ACF-Attribut garantiert, dass ein Kontexthandle unabhängig vom Standardverhalten der Anwendung niemals 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 [context_handle]- Attribut 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.

Parametername

Der Name des Parameters, wie in der IDL-Datei definiert.

Bemerkungen

Das [context_handle]- Attribut identifiziert ein Bindungshandle, das zwischen Remoteprozeduraufrufen Kontext- oder Zustandsinformationen auf dem Server verwaltet. Das Attribut kann als IDL-Typedef-Typattribute , als Funktionsrückgabetyp-Attribut oder als Parameterattribute angezeigt werden.

Standardmäßig werden Aufrufe von Kontexthandles serialisiert. Eine Anwendung kann RpcSsDontSerializeContext aufrufen, um dieses Standardverhalten zu überschreiben. Die Verwendung des [context_handle]- Attributs in einer ACF-Datei stellt sicher, dass Aufrufe für dieses bestimmte Kontexthandle unabhängig vom Verhalten der aufrufenden Anwendung nicht serialisiert werden. Die Bereitstellung einer Kontextausführungsroutine 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 nichtserialisierte Kontexthandles aufnehmen, sodass eine Methode auf einer Schnittstelle ausschließlich auf ein Kontexthandle zugreifen kann (serialisiert), während andere Methoden im freigegebenen Modus auf dieses Kontexthandle zugreifen (nicht-serialisiert). Diese Zugriffsfunktionen sind mit Lese-/Schreibsperrmechanismen vergleichbar. Methoden, die ein serialisiertes Kontexthandle verwenden, sind exklusive Benutzer (Writer), während Methoden, die ein nichtserialisiertes Kontexthandle verwenden, freigegebene Benutzer (Leser) sind. Methoden, die den Zustand eines Kontexthandles 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 als 1erialisiert werden. Beachten Sie, dass Erstellungsmethoden implizit serialisiert werden.

Beispiele

typedef [context_handle_noserialize] PCONTEXT_HANDLE_TYPE; 
HRESULT RemoteFunc([context_handle_noserialize] pCxHandle);

Weitere Informationen

ACF-Attribute

context_handle_serialize

context_handle

Kontexthandles

RpcSsDontSerializeContext

Heruntergefahrene Serverkontextroutine

Multithreadclients und Kontexthandles

Typedef