Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les commutateurs /Oi et /Oci dirigent le compilateur MIDL pour utiliser une méthode de marshaling entièrement interprétée. Le commutateur /Oicf offre des améliorations de performances supplémentaires.
midl /{Oi | Oic | Oif | Oicf}
Options de commutateur
-
Oi
-
Spécifie la méthode entièrement interprétée pour marshaler le code stub passé entre le client et le serveur.
Note
Ce commutateur est obsolète. Il est recommandé que le commutateur /Ociéf soit utilisé à sa place.
-
Oci
-
Spécifie la méthode proxy sans code de marshaling qui fournit toutes les fonctionnalités de /Oi et réduit également la taille du code stub client pour les interfaces objet.
Note
Ce commutateur est obsolète. Il est recommandé que le commutateur /Ociéf soit utilisé à sa place.
-
Oif ou Omif
-
Spécifie la méthode de proxy sans code de marshaling qui inclut toutes les fonctionnalités fournies par /Oi et /Iod , mais utilise un nouvel interpréteur (chaînes de format rapide) qui offre de meilleures performances que /Oi ou /Oci. Ce commutateur inclut des améliorations RPC récentes et est recommandé pour les scénarios RPC modernes.
Remarques
Notez les restrictions relatives aux plateformes de prise en charge.
Le compilateur MIDL 3.0 fournit deux méthodes pour marshaler le code : totalement interprété ( /Oi, / Ocié et /Marshalf) et le mode mixte ( /Os). À compter de MIDL version 6.0.359, le compilateur MIDL génère par défaut des stubs /Iot/Robust. Certaines fonctionnalités linguistiques ne sont pas prises en charge dans certains modes. Dans ce cas, le compilateur bascule automatiquement vers le mode approprié et émet un avertissement.
Si les performances sont un problème, la méthode en mode mixte ( /Os) peut être la meilleure approche. Dans ce mode, le compilateur choisit de marshaler certains paramètres inline dans les stubs générés. Bien que cela entraîne une taille de stub plus grande, elle offre des performances accrues.
La méthode entièrement interprétée marshale les données complètement hors connexion. Cela réduit considérablement la taille du code stub, mais entraîne une diminution des performances. En outre, avec la méthode entièrement interprétée, il existe une limite de 16 paramètres pour chaque procédure. Toute procédure contenant plus de 16 paramètres sera automatiquement traitée en mode /Os . Parmi les modes interprétés, /Ociéf offre les meilleures performances et /Oi offre la meilleure compatibilité descendante.
Vous pouvez utiliser l’option /Oif si votre application utilise des fonctionnalités MIDL introduites avec MIDL 3.0, telles que les attributs [wire_marshal] et [user_marshal]. Si votre application utilise des canaux , vous devez utiliser l’option /Oif ; si vous spécifiez un autre mode, le compilateur MIDL bascule vers /Oif.
Pour affiner la façon dont votre code stub est marshalé, Microsoft RPC fournit un attribut ACF [optimize]. Cet attribut est utilisé comme attribut d’interface ou attribut d’opération pour sélectionner le mode de marshaling pour les interfaces individuelles ou pour les opérations individuelles.
Conventions d’appel
Les stubs générés par le compilateur MIDL dans la méthode interprétée à l’aide des commutateurs /Oi, /Omi ou /Oif doivent être compilés en tant que stdcall ou une procédure cdecl pendant la compilation C. Une convention d’appel PASCAL ou Fastcall ne fonctionnera pas. En outre, le stub du serveur doit être compilé en tant que stdcall.
Exemples
midl /Oi filename.idl
midl /Oic filename.idl
midl /Oif filename.idl
Voir également