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 du moteur de remise. 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 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.

Sortilège Manche
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> n’est pas 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.

Sortilège Manche
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.

Sortilège Drapeau Signification
01 Oi_FULL_PTR_USED Utilise le package de pointeur complet.
02 Oi_RPCSS_ALLOC_USED Utilise le package de mémoire RpcSs.
04 Oi_OBJECT_PROC Procédure dans une interface objet.
08 Oi_HAS_RPCFLAGS La procédure comporte des indicateurs Rpc différent de zéro.
10 Oi_* Comblé.
20 Oi_* Comblé.
40 Oi_USE_NEW_INIT_ROUTINES Utilise les routines d’init Windows NT3.5 Beta2+ .
80 Inutilisé.

 

Les indicateurs suivants sont surchargés.

Sortilège Drapeau 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 -Oif interpréteur.

 

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 zéro.

Note

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

 

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

Le 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.