/error switch
Le commutateur /error détermine les types de vérification des erreurs que les stubs générés effectueront au moment de l’exécution.
Notes
Cette fonctionnalité est obsolète et n’est plus prise en charge. L’utilisation du commutateur /robust est recommandée.
midl /error { allocation | stub_data | ref | bounds_check | none | all }
-
Allocation
-
Vérifie si midl_user_allocate retourne une valeur NULL , indiquant une erreur de mémoire insuffisante.
-
stub_data
-
Génère un stub qui intercepte les exceptions nonmarshalantes côté serveur et les propage au client.
-
Ref
-
Génère du code qui exécute une case activée au moment de l’exécution pour s’assurer qu’aucun pointeur de référence NULL n’est passé aux stubs du client et déclenche une exception RPC_X_NULL_REF_POINTER s’il en trouve.
-
bounds_check
-
Vérifie la taille des tableaux conformes et variables par rapport à la spécification de longueur de transmission.
-
Aucun
-
N’effectue aucune vérification des erreurs.
-
Tous
-
Effectue toutes les vérifications des erreurs. En vigueur avec MIDL version 5.0, il s’agit d’un commutateur de compilateur par défaut.
Le commutateur /error sélectionne le nombre de vérifications d’erreur effectuées par les fichiers stub générés. À compter de MIDL version 5.0, le paramètre par défaut est /error all.
Les erreurs d’énumération vérifiées (par défaut dans toutes les versions de MIDL) sont des erreurs de troncation provoquées lors de la conversion entre les types d’énumération longs (entiers 32 bits) et les types d’énumérations courtes (représentation des données réseau de l’énumération) et le nombre d’identificateurs dans une énumération dépassant 32 767.
La vérification des erreurs d’accès à la mémoire (également par défaut dans toutes les versions de MIDL) concerne les pointeurs qui dépassent la fin de la mémoire tampon dans le code de marshaling et pour les tableaux conformes dont la taille est inférieure à zéro. Utilisez l’indicateur /error bounds_check pour case activée pour d’autres limites de tableau non valides.
Lorsque vous spécifiez l’allocation /error, les stubs incluent le code qui déclenche une exception lorsque midl_user_allocate retourne 0.
L’option /error stub_data empêche les données client de bloquer le serveur pendant la démarshalation, ce qui fournit une méthode plus robuste de gestion de l’opération de démarshalation.
À compter de Windows 2000, le moteur de marshaling NDR d’exécution sous-jacent effectue la plupart de ces vérifications. Cela signifie que si vous utilisez l’un des modes entièrement interprétés (/Oi, /Oif) de génération de stub, le choix de différentes options de vérification des erreurs n’aura pas d’effet marqué sur les performances.
midl /error allocation filename.idl
midl /error none filename.idl