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.