NativeMethods - Cette classe ne comprend pas supprimer la pile marche pour l'autorisation de code non managé. (Le système.De sécurité.SuppressUnmanagedCodeSecurityAttribute ne doit pas être appliqué à cette catégorie.) Cette classe de méthodes qui peuvent être utilisées n'importe où, car une pile à pied sera effectuée.
SafeNativeMethods - Cette classe supprime la pile marche pour l'autorisation de code non managé. (Le système.De sécurité.SuppressUnmanagedCodeSecurityAttribute est appliqué à cette catégorie.) Cette classe est pour les méthodes qui sont sans danger pour personne à appeler. Les appelants de ces méthodes ne sont pas tenus de procéder à un examen complet de la sécurité pour s'assurer que l'utilisation est sécurisée, car les méthodes sont sans danger pour tous les appelants.
UnsafeNativeMethods - Cette classe supprime la pile marche pour l'autorisation de code non managé. (Le système.De sécurité.SuppressUnmanagedCodeSecurityAttribute est appliqué à cette catégorie.) Cette classe est pour les méthodes qui sont potentiellement dangereux. Tout appelant de ces méthodes doit effectuer un examen complet de la sécurité pour s'assurer que l'utilisation est sécurisée, car aucune pile à pied sera effectuée.
Notez que la classe devrait être nommé NativeMethods, SafeNativeMethods ou UnsafeNativeMethods (la Convention de Nommage pour le Code non managé Méthodes). Le compilateur C# s'applique un peu de magie dans ce cas. Juste par curiosité: Quel compilateur magie sera appliquée? Le lien seulement les etats, quelques règles de nommage. Mais pas de compilateur de la magie est décrite. Avez-vous un lien pour une étude plus approfondie? Il est lié à la sécurité compilateur de la magie 🙂 Tbh, je ne sais pas exactement ce qu'il fait; FxCop se plaint quand vous ne le font pas. J'ai ajouté une citation de la FxCop de la documentation pour la réponse. Le compilateur C# n' pas appliquer tout de la magie, et il ne le fait pas en fonction du nom de la classe. L'appelant NativeMethods ou variantes est convention uniquement. Ce qu'il obtient à appliquer la magie est la System.Security.SuppressUnmanagedCodeSecurityAttribute, et cela est fait par le CLR, pas le compilateur.
using System;
using System.Runtime.InteropServices;classMsgBoxTest{[DllImport("user32.dll")]staticexternintMessageBox(IntPtr hWnd,string text,string caption,int type);publicstaticvoidMain(){MessageBox(IntPtr.Zero,"Please do not press this again.","Attention",0);}}
Vous mettre sur la méthode que vous importez à partir d'Kernel32.dll.
Par exemple,
De @dtb: Notez que la classe devrait être nommé
NativeMethods
,SafeNativeMethods
ouUnsafeNativeMethods
. Voir Convention de nommage pour le Code non managé Méthodes pour plus de détails.CA1060: Déplacer P/Invoque pour NativeMethods classe:
NativeMethods
,SafeNativeMethods
ouUnsafeNativeMethods
(la Convention de Nommage pour le Code non managé Méthodes). Le compilateur C# s'applique un peu de magie dans ce cas.Juste par curiosité: Quel compilateur magie sera appliquée? Le lien seulement les etats, quelques règles de nommage. Mais pas de compilateur de la magie est décrite. Avez-vous un lien pour une étude plus approfondie?
Il est lié à la sécurité compilateur de la magie 🙂 Tbh, je ne sais pas exactement ce qu'il fait; FxCop se plaint quand vous ne le font pas. J'ai ajouté une citation de la FxCop de la documentation pour la réponse.
Le compilateur C# n' pas appliquer tout de la magie, et il ne le fait pas en fonction du nom de la classe. L'appelant
NativeMethods
ou variantes est convention uniquement. Ce qu'il obtient à appliquer la magie est laSystem.Security.SuppressUnmanagedCodeSecurityAttribute
, et cela est fait par le CLR, pas le compilateur.OriginalL'auteur Adam Lear
Ceci est un exemple de
DllImport
:Je vous suggère d'étudier Appel De Plate-Forme De Tutoriel.
OriginalL'auteur Alireza Maddah
Il va sur la méthode elle-même qui est P/Invoquant en dehors de méthodes. Assurez-vous d'ajouter une référence à
System.Runtime.InteropServices
OriginalL'auteur BFree