Функция ReportEventA (winbase.h)
Записывает запись в конец указанного журнала событий.
Синтаксис
BOOL ReportEventA(
[in] HANDLE hEventLog,
[in] WORD wType,
[in] WORD wCategory,
[in] DWORD dwEventID,
[in] PSID lpUserSid,
[in] WORD wNumStrings,
[in] DWORD dwDataSize,
[in] LPCSTR *lpStrings,
[in] LPVOID lpRawData
);
Параметры
[in] hEventLog
Дескриптор журнала событий. Функция RegisterEventSource возвращает этот дескриптор.
В Windows XP с пакетом обновления 2 (SP2) этот параметр не может быть дескриптором журнала безопасности . Чтобы записать событие в журнал безопасности , используйте функцию AuthzReportSecurityEvent .
[in] wType
Тип события для ведения журнала. Этот параметр может принимать одно из указанных ниже значений.
Дополнительные сведения о типах событий см. в разделе Типы событий.
[in] wCategory
Категория событий. Это сведения, относящиеся к источнику; Категория может иметь любое значение. Дополнительные сведения см. в разделе Категории событий.
[in] dwEventID
Идентификатор события. Идентификатор события указывает запись в файле сообщения, связанном с источником события. Дополнительные сведения см. в разделе Идентификаторы событий.
[in] lpUserSid
Указатель на идентификатор безопасности текущего пользователя. Этот параметр может иметь значение NULL , если идентификатор безопасности не требуется.
[in] wNumStrings
Количество строк вставки в массиве, на который указывает параметр lpStrings . Нулевое значение указывает на отсутствие строк.
[in] dwDataSize
Количество байтов необработанных (двоичных) данных, относящихся к конкретному событию, для записи в журнал. Если этот параметр равен нулю, данные о событиях отсутствуют.
[in] lpStrings
Указатель на буфер, содержащий массив строк со значением NULL, которые объединяются в сообщение перед Просмотр событий отображает строку для пользователя. Этот параметр должен быть допустимым указателем (или null), даже если wNumStrings равно нулю. Каждая строка ограничена 31 839 символами.
До Windows Vista: Каждая строка ограничена 32 КБ символами.
[in] lpRawData
Указатель на буфер, содержащий двоичные данные. Этот параметр должен быть допустимым указателем (или значением NULL), даже если параметр dwDataSize равен нулю.
Возвращаемое значение
Если функция выполнена успешно, возвращается ненулевое значение, указывающее, что запись была записана в журнал.
Если функция выполняется неудачно, возвращается нулевое значение. Чтобы получить расширенные сведения об ошибке, вызовите Метод GetLastError, который возвращает один из следующих расширенных кодов ошибок.
Код ошибки | Значение |
---|---|
|
Один из параметров недопустим.
Эта ошибка возвращается в Windows Server 2003, если данные для ведения журнала слишком велики. Эта ошибка возвращается RPC-сервером в Windows Server 2003, если параметр dwDataSize больше 261 991 (0x3ff67). |
|
Для завершения операции недостаточно ресурсов памяти. |
|
Границы массива недопустимы.
Эта ошибка возвращается, если регистрируются слишком большие данные сообщения. В Windows Vista и более поздних версиях эта ошибка возвращается, если параметр dwDataSize больше 61 440 (0xf000). |
|
Заглушка получила недопустимые данные.
Эта ошибка возвращается в Windows XP, если регистрируются слишком большие данные сообщения. Эта ошибка возвращается RPC-сервером в Windows XP, если параметр dwDataSize больше 262 143 (0x3ffff). |
|
Используйте FormatMessage , чтобы получить строку сообщения для возвращаемой ошибки. |
Комментарии
Эта функция используется для регистрации события. Запись записывается в конец настроенного журнала для источника, определяемого параметром hEventLog . Функция ReportEvent добавляет время, длину записи и смещения перед сохранением записи в журнале. Чтобы включить функцию для добавления имени пользователя, необходимо указать идентификатор безопасности пользователя в параметре lpUserSid .
Существуют различные ограничения на размер данных сообщения, которые могут быть зарегистрированы в зависимости от версии Windows, используемой как клиентом, на котором запущено приложение, так и сервером, на котором регистрируется сообщение. Сервер определяется параметром lpUNCServerName , передаваемым в функцию RegisterEventSource . При превышении ограничения размера, зависящее от версии Windows, возвращаются различные ошибки.
Если в журнале содержится %n, где n — целочисленное значение (например, %1), средство просмотра событий обрабатывает ее как строку вставки. Так как IPv6-адрес может содержать эту последовательность символов, необходимо указать описатель формата (! S!) для регистрации сообщения о событии, содержащего IPv6-адрес. Этот описатель указывает коду форматирования использовать строку буквально и не выполнять дальнейших расширений (например, "мой IPv6-адрес: %1! S!").
Примеры
Пример см. в разделе Отчеты о событии.
Примечание
Заголовок winbase.h определяет ReportEvent как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора UNICODE. Сочетание использования псевдонима, не зависящий от кодировки, с кодом, не зависящим от кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 2000 Professional [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | winbase.h (включая Windows.h) |
Библиотека | Advapi32.lib |
DLL | Advapi32.dll |