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 SP2를 사용하는 경우 이 매개 변수는 보안 로그에 대한 핸들이 될 수 없습니다. 보안 로그에 이벤트를 쓰려면 AuthzReportSecurityEvent 함수를 사용합니다.
[in] wType
기록할 이벤트의 유형입니다. 이 매개 변수는 다음 값 중 하나일 수 있습니다.
이벤트 유형에 대한 자세한 내용은 이벤트 유형을 참조하세요.
[in] wCategory
이벤트 범주입니다. 원본별 정보입니다. 범주에는 모든 값이 있을 수 있습니다. 자세한 내용은 이벤트 범주를 참조하세요.
[in] dwEventID
이벤트 식별자입니다. 이벤트 식별자는 이벤트 원본과 연결된 메시지 파일의 항목을 지정합니다. 자세한 내용은 이벤트 식별자를 참조하세요.
[in] lpUserSid
현재 사용자의 보안 식별자에 대한 포인터입니다. 보안 식별자가 필요하지 않은 경우 이 매개 변수는 NULL 일 수 있습니다.
[in] wNumStrings
lpStrings 매개 변수가 가리키는 배열의 삽입 문자열 수입니다. 값이 0이면 문자열이 없음을 나타냅니다.
[in] dwDataSize
로그에 쓸 이벤트별 원시(이진) 데이터의 바이트 수입니다. 이 매개 변수가 0이면 이벤트별 데이터가 없습니다.
[in] lpStrings
이벤트 뷰어 사용자에게 문자열을 표시하기 전에 메시지에 병합되는 null로 끝나는 문자열 배열을 포함하는 버퍼에 대한 포인터입니다. wNumStrings가 0인 경우에도 이 매개 변수는 유효한 포인터(또는 NULL)여야 합니다. 각 문자열은 31,839자로 제한됩니다.
Windows Vista 이전: 각 문자열은 32K 문자로 제한됩니다.
[in] lpRawData
이진 데이터를 포함하는 버퍼에 대한 포인터입니다. dwDataSize 매개 변수가 0인 경우에도 이 매개 변수는 유효한 포인터(또는 NULL)여야 합니다.
반환 값
함수가 성공하면 반환 값이 0이 아닌 값으로, 항목이 로그에 기록되었음을 나타냅니다.
함수가 실패하면 반환 값은 0입니다. 확장된 오류 정보를 얻으려면 다음 확장 오류 코드 중 하나를 반환하는 GetLastError를 호출합니다.
오류 코드 | 의미 |
---|---|
|
매개 변수 중 하나가 잘못되었습니다.
이 오류는 기록할 메시지 데이터가 너무 크면 Windows Server 2003에서 반환됩니다. 이 오류는 dwDataSize 매개 변수가 261,991(0x3ff67)보다 큰 경우 Windows Server 2003의 RPC 서버에서 반환됩니다. |
|
메모리 리소스가 부족하여 작업을 완료할 수 있습니다. |
|
배열 범위가 잘못되었습니다.
기록할 메시지 데이터가 너무 크면 이 오류가 반환됩니다. Windows Vista 이상에서는 dwDataSize 매개 변수가 61,440(0xf000)보다 큰 경우 이 오류가 반환됩니다. |
|
스텁이 잘못된 데이터를 수신했습니다.
이 오류는 기록할 메시지 데이터가 너무 크면 Windows XP에서 반환됩니다. dwDataSize 매개 변수가 262,143(0x3ffff)보다 큰 경우 이 오류는 Windows XP의 RPC 서버에서 반환됩니다. |
|
FormatMessage를 사용하여 반환된 오류에 대한 메시지 문자열을 가져옵니다. |
설명
이 함수는 이벤트를 기록하는 데 사용됩니다. 항목은 hEventLog 매개 변수로 식별된 원본에 대해 구성된 로그의 끝에 기록됩니다. ReportEvent 함수는 로그에 항목을 저장하기 전에 시간, 항목의 길이 및 오프셋을 추가합니다. 함수가 사용자 이름을 추가할 수 있도록 하려면 lpUserSid 매개 변수에 사용자의 SID를 제공해야 합니다.
애플리케이션이 실행되는 클라이언트와 메시지가 기록되는 서버에서 사용하는 Windows 버전에 따라 기록할 수 있는 메시지 데이터의 크기에 대한 크기 제한이 다릅니다. 서버는 RegisterEventSource 함수에 전달된 lpUNCServerName 매개 변수에 의해 결정됩니다. Windows 버전에 따라 크기 제한을 초과하면 다른 오류가 반환됩니다.
로그하는 문자열에 %n이 포함되어 있는 경우 여기서 n 은 정수 값(예: %1)입니다. 이벤트 뷰어는 이를 삽입 문자열로 처리합니다. IPv6 주소는 이 문자 시퀀스를 포함할 수 있으므로 형식 지정자(! S!) IPv6 주소를 포함하는 이벤트 메시지를 기록합니다. 이 지정자는 문자열을 문자 그대로 사용하고 추가 확장을 수행하지 않도록 서식 지정 코드에 지시합니다(예: "내 IPv6 주소: %1! S!").
예제
예제는 이벤트 보고를 참조하세요.
참고
winbase.h 헤더는 UNICODE 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 ReportEvent를 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입에 대한 규칙을 참조하세요.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 2000 Professional[데스크톱 앱만] |
지원되는 최소 서버 | Windows 2000 Server[데스크톱 앱만] |
대상 플랫폼 | Windows |
헤더 | winbase.h(Windows.h 포함) |
라이브러리 | Advapi32.lib |
DLL | Advapi32.dll |