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.