Sérialisation de la procédure
Lorsque vous utilisez la sérialisation de procédure, une procédure est étiquetée avec l’attribut [encode] ou [decode]. 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 aucun handle de sérialisation n’est 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 handle_t explicite de la routine, soit en utilisant l’attribut [explicit_handle], vous devez passer un handle valide comme 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 fixe et Exemples d’encodage incrémentiel.
Notes
Microsoft RPC permet de mélanger les procédures distantes et de sérialisation dans une seule interface. Toutefois, soyez prudent lorsque vous le faites.
Pour les procédures distantes avec des handles de liaison implicites, le compilateur MIDL génère une variable de handle global de type handle_t. Les procédures et les types avec des handles de sérialisation implicite utilisent cette même variable de handle global.
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 être l’un ou l’autre.