handle-Attribut

Das [ ] Handleattribut gibt einen benutzerdefinierten oder "benutzerdefinierten" Handletyp an.

typedef [handle] typename;  
handle_t __RPC_USER typename_bind (typename);
void __RPC_USER typename_unbind (typename, handle_t);

Parameter

Typename

Gibt den Namen des benutzerdefinierten Bindungshand handle-Typs an.

Bemerkungen

Benutzerdefinierte Handles ermöglichen Entwicklern das Entwerfen von Handles, die für die Anwendung sinnvoll sind. Ein benutzerdefiniertes Handle kann nur in einer Typdeklaration definiert werden, nicht in einem Funktionsdeklarator.

Ein Parameter eines typs, der durch das Handleattribut definiert wird, wird verwendet, um die Bindung für den Aufruf zu bestimmen, und [ ] wird an die aufgerufene Prozedur übertragen.

Der Benutzer muss Bindungs- und Bindungsaufbindungsroutinen bereitstellen, um zwischen primitiven und benutzerdefinierten Handletypen zu konvertieren. Bei einem benutzerdefinierten Handle vom Typ typename muss der Benutzer die Routinen typename bind und _ typename _ unbind angeben. Wenn der benutzerdefinierte Handletyp z. B. den Namen MYHANDLE hat, heißen die Routinen MYHANDLE _ bind und MYHANDLE _ unbind.

Bei Erfolg sollte die typename-Bindungsroutine _ ein gültiges primitives Bindungshandle zurückgeben. Wenn dies nicht erfolgreich ist, sollte die Routine einen NULL-Wert zurückgeben. Wenn die Routine NULL zurückgibt, wird die Routine "typename _ unbind" nicht aufgerufen. Wenn die Bindungsroutine ein ungültiges Bindungshand handle zurückgibt, das sich von NULL unterscheiden kann, ist das Stubverhalten nicht definiert.

Wenn die Remoteprozedur über ein benutzerdefiniertes Handle als Parameter oder implizites Handle verfügt, rufen die Clientstubs die Bindungsroutine auf, bevor sie die Remoteprozedur aufrufen. Die Clientstubs rufen die Bindungsaufbindungsroutine nach dem Remoteaufruf auf.

In DCE IDL muss ein Parameter mit dem Handleattribut als erster Parameter in der Argumentliste der [ ] Remoteprozedur angezeigt werden. Nachfolgende Parameter, einschließlich anderer [ ] Handleattribute, werden als normale Parameter behandelt. Microsoft unterstützt eine Erweiterung der DCE-IDL, mit der der benutzerdefinierte Handleparameter an anderen Positionen als dem [ ] ersten Parameter angezeigt werden kann.

Beispiele

typedef [handle] struct 
{ 
    char machine[8]; 
    char nmpipe[256]; 
} h_service; 
 
handle_t __RPC_USER h_service_bind(h_service); 
void __RPC_USER h_service_unbind(h_service, handle_t);

Weitere Informationen

Bindung und Handles

IDL-Datei (Interface Definition)

implizites _ Handle

Typedef