2009-12-21 23 views
6

Qualsiasi classe helper in cui wrapps API kernel32, con tutte le funzioni, i metodi e le strutture? O qualsiasi generatore di wrapper?Wrapper C# per API kernel32.dll

Voglio che tutti i metodi di kernel32.dll in C# come questo:

[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

Una domanda: perché? –

+3

Ci sono 1359 punti di ingresso, troppo. Assicurati di usare una buona fonte per le dichiarazioni, quelle che hai sono sbagliate. –

+0

Se si generano tutti gli entry point, dopo non perdere tempo a farlo. E generare codice sorgente è meglio, non errori nel codice –

risposta

7

ne dubito.

Hai visto http://www.pinvoke.net/?

+0

Oh, sì, ma non supporta VS 2008 !!! è un peccato !! un altro strumento o codice sorgente con tutte le funzioni di kernel32.dll ?? grazie –

+1

Il plugin VS potrebbe non supportare il 2008, ciò non significa che non puoi utilizzare il contenuto dal sito web. Potrebbe sembrare laboriosa cercare le API e copiare il codice, ma è ancora meglio scriverlo da zero. Tra i lati positivi, devi farlo solo una volta. – donovan

+0

laboriosa ricerca delle API e copia del codice .... forse, ma qualsiasi soluzione pratica per me, alla generazione del codice di automazione per wrapper di kernel32.dll, gdi.dll, ... GRAZIE !! –