Sérialisation des procédures
Lorsque vous utilisez la sérialisation de procédure, une procédure est étiquetée avec l’attribut [encode] ou [décoder]. Au lieu de générer le stub distant habituel, le compilateur génère un stub de sérialisation pour la routine.
Tout comme une procédure distante doit utiliser un handle de liaison pour effectuer un appel distant, une procédure de sérialisation doit utiliser un handle de sérialisation pour utiliser les services de sérialisation. Si un handle de sérialisation n’est pas spécifié, un handle implicite par défaut est utilisé pour diriger l’appel. En revanche, si le handle de sérialisation est spécifié, soit en tant qu’argument explicite handle_t de la routine, soit en utilisant l’attribut [explicit_handle] , vous devez passer un handle valide en tant qu’argument de l’appel. Pour plus d’informations sur la création d’un handle de sérialisation valide, consultez Handles de sérialisation, Exemples d’encodage de mémoire tampon fixeet Exemples d’encodage incrémentiel.
Note
Microsoft RPC permet aux procédures de sérialisation et à distance d’être mixtes dans une interface. Toutefois, utilisez la prudence lors de cette opération.
Pour les procédures distantes avec des handles de liaison implicite, le compilateur MIDL génère une variable de handle globale de type handle_t. Les procédures et les types avec des handles de sérialisation implicite utilisent cette même variable de handle globale.
Pour les handles implicites, le handle implicite global doit être défini sur un handle de liaison valide avant un appel distant. Le handle implicite doit être défini sur un handle de sérialisation valide avant un appel de sérialisation. Par conséquent, une procédure ne peut pas être à la fois distante et sérialisée. Il doit s’agir de l’un ou de l’autre.