Partager via


Descripteur d’en-tête de procédure

L’en-tête a été étendu plusieurs fois au cours de la durée de vie du moteur NDR. Le compilateur actuel génère toujours différents en-têtes en fonction du mode du compilateur. Toutefois, les en-têtes plus récents sont un sur-ensemble des en-têtes plus anciens.

L’ancien en-tête –Oi

L’en-tête a le format suivant :

handle_type<1> 
Oi_flags<1>
[rpc_flags<4>]
proc_num<2>  
stack_size<2>
[explicit_handle_description<>]

Où handle_type<1> peut être l’une des valeurs indiquées dans le tableau suivant.

Hex Handle
31 FC_BIND_GENERIC
32 FC_BIND_PRIMITIVE
33 FC_AUTO_HANDLE
34 FC_CALLBACK_HANDLE
0 (handle explicite)

 

Si le champ handle_type<1> est différent de zéro, la procédure utilise un handle implicite du type indiqué. Pour plus d’informations, consultez la rubrique Handles . Si le champ handle_type<1> est égal à zéro, le handle utilisé pour la liaison est l’un des paramètres de la procédure.

Les handles explicites peuvent être primitifs, génériques et contextuels; Le dernier a le jeton FC suivant.

Hex Handle
30 FC_BIND_CONTEXT

 

Par convention, le type de handle pour les interfaces DCOM est FC_AUTO_HANDLE.

Le champ Oi_flags<1> est un masque 8 bits des indicateurs suivants.

Hex Indicateur Signification
01 Oi_FULL_PTR_USED Utilise le package de pointeurs complet.
02 Oi_RPCSS_ALLOC_USED Utilise le package de mémoire RpcSs.
04 Oi_OBJECT_PROC Procédure dans une interface d’objet.
08 Oi_HAS_RPCFLAGS La procédure a des indicateurs Rpc non nuls.
10 Oi_* Surchargé.
20 Oi_* Surchargé.
40 Oi_USE_NEW_INIT_ROUTINES Utilise les routines init Windows NT3.5 Beta2+.
80 Inutilisé.

 

Les indicateurs suivants sont surchargés.

Hex Indicateur Signification
10 ENCODE_IS_USED Utilisé uniquement dans le pickling.
20 DECODE_IS_USED Utilisé uniquement dans le pickling.
10 Oi_IGNORE_OBJECT_EXCEPTION_HANDLING Plus utilisé (ancien OLE).
20 Oi_HAS_COMM_OR_FAULT En RPC brut uniquement, [comm _, fault_status].
20 Oi_OBJ_USE_V2_INTERPRETER Dans DCOM uniquement, utilisez l’interpréteur –Oif .

 

Le champ rpc_flags<4> décrit comment définir le champ RpcFlags de la structure RPC_MESSAGE . Ce champ n’est présent que si le champ Oi_flags<1> a Oi_HAD_RPCFLAGS défini. Si ce champ n’est pas présent, les indicateurs RPC de la procédure distante sont nuls.

Notes

Pour les performances, les interpréteurs asynchrones ont toujours le champ rpc_flags<4> .

 

Le champ proc_num<2> fournit le numéro de procédure de la procédure.

La stack_size<2> fournit la taille totale de tous les paramètres de la pile, y compris tout pointeur et/ou valeur de retour.

Le champ explicit_handle_description<> est décrit plus loin dans ce document. Ce champ n’est pas présent si la procédure utilise un handle implicite.