2009-12-21 3 views
6

Toute classe d'aide qui enveloppe les API kernel32, avec toutes les fonctions-méthodes et structures? Ou un générateur de wrapper?Wrapper C# pour l'API kernel32.dll

Je veux toutes les méthodes de kernel32.dll en C# comme celui-ci:

[DllImport("kernel32.dll",EntryPoint="RtlMoveMemory")] 
     public static extern void RtlMoveMemory(int des, int src, int count); 

     [DllImport("kernel32.dll", EntryPoint = "OpenProcess")] 
     public static extern IntPtr OpenProcess(uint dwDesiredAccess, bool bInheritHandle, uint dwProcessId); 

     [DllImport("kernel32", CharSet = CharSet.Ansi)] 
     public extern static int GetProcAddress(int hwnd, string procedureName); 

     [DllImport("kernel32.dll", EntryPoint = "GetModuleHandle")] 
     public static extern int GetModuleHandle(string lpModuleName); 

     [DllImport("kernel32.dll", EntryPoint = "VirtualAllocEx")] 
     public static extern IntPtr VirtualAllocEx(IntPtr hProcess, IntPtr lpAddress, uint dwSize, uint flAllocationType, uint flProtect); 

     [DllImport("kernel32")] 
     [return: MarshalAs(UnmanagedType.Bool)] 
     public static extern bool CloseHandle(IntPtr hObject); 

     [DllImport("kernel32", EntryPoint = "CreateRemoteThread")] 
     public static extern IntPtr CreateRemoteThread(IntPtr hProcess, IntPtr lpThreadAttributes, uint dwStackSize, IntPtr lpStartAddress, IntPtr lpParameter, uint dwCreationFlags, uint lpThreadId); 

     [DllImport("kernel32.dll", EntryPoint = "WriteProcessMemory")] 
     public static extern IntPtr WriteProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, byte[] buffer, uint size, IntPtr lpNumberOfBytesWritten); 
+0

Une question - pourquoi? –

+3

Il y a 1359 entrypoints, beaucoup trop. Assurez-vous d'utiliser une bonne source pour les déclarations, celles que vous avez sont erronées. –

+0

Si générer tous les entrypoints, après ne perdez pas de temps à le faire. Et générer le code source est meilleur, pas d'erreurs dans le code –

Répondre

7

Je doute. Avez-vous vu http://www.pinvoke.net/?

+0

Oh, oui, mais pas soutenir VS 2008 !!! c'est dommage !! un autre outil ou classe de code source avec toutes les fonctions de kernel32.dll ?? merci –

+1

Le plugin VS ne supporte pas 2008, cela ne signifie pas que vous ne pouvez pas utiliser le contenu du site. Cela peut sembler fastidieux de chercher les API et de copier le code, mais il est toujours préférable de l'écrire à partir de zéro. Sur le plan positif, vous avez seulement besoin de le faire une fois. – donovan

+0

laborieux à la recherche des API et copiant le code .... peut-être, mais toute solution de pratique pour moi, à la génération de code d'automatisation pour wrapper de kernel32.dll, gdi.dll, ... MERCI !! –

Questions connexes