You must import the plain old Win32 API ReportEvent function with a DLLImportAttribute. You must also redeclare the function with the right types, as Platform Invoke Data Types says. So BOOL ReportEvent( __in HANDLE hEventLog, __in WORD wType, __in WORD wCategory, __in DWORD dwEventID, __in PSID lpUserSid, __in WORD wNumStrings, __in DWORD dwDataSize, __in LPCTSTR *lpStrings, __in LPVOID lpRawData ); becomes [DllImport("Advapi32.dll", EntryPoint="ReportEventW", SetLastError=true, CharSet=CharSet.Unicode)] bool WriteEvent( IntPtr hEventLog, //Where to find it ? ushort wType, ushort wCategory, ulong dwEventID, IntPtr lpUserSid, // We'll leave this struct alone, so just feed it a pointer ushort wNumStrings, ushort dwDataSize, string[] lpStrings, IntPtr lpRawData ); |