이벤트 수집기 구독 나열
로컬 컴퓨터에서 사용하도록 설정된 이벤트 수집기 구독의 이름 목록을 검색할 수 있습니다. EcOpenSubscriptionEnum 함수를 사용하여 구독 열거자에 대한 핸들을 가져올 수 있습니다. 핸들을 만든 후 EcEnumNextSubscription 함수를 사용하여 로컬 컴퓨터의 구독을 나열합니다.
참고
다음 코드 예제를 사용하여 구독 목록을 검색하거나 명령 프롬프트에서 다음 명령을 입력할 수 있습니다.
wecutil es
다음 C++ 코드 예제에서는 이벤트 수집기 구독을 나열하는 방법을 보여 줍니다.
#include <windows.h>
#include <EvColl.h>
#include <vector>
#include <strsafe.h>
#pragma comment(lib, "wecapi.lib")
void __cdecl wmain()
{
// Lists the Event Collector subscriptions that are available
// on the local computer.
DWORD dwBufferSizeUsed, dwError = ERROR_SUCCESS;
BOOL bRetVal = true;
std::vector<WCHAR> buffer(MAX_PATH);
EC_HANDLE hEnumerator;
DWORD dwRetVal;
// Create a handle to access the subscriptions.
hEnumerator = EcOpenSubscriptionEnum(NULL);
if (hEnumerator)
{
while (bRetVal)
{
// Get the next subscription.
bRetVal = EcEnumNextSubscription(hEnumerator,
(DWORD) buffer.size(),
(LPWSTR) &buffer[0],
&dwBufferSizeUsed);
dwError = GetLastError();
// If the buffer is not large enough, resize it to accommodate the
// subscription information.
if (!bRetVal && ERROR_INSUFFICIENT_BUFFER == dwError)
{
dwError = ERROR_SUCCESS;
buffer.resize(dwBufferSizeUsed);
bRetVal = EcEnumNextSubscription(hEnumerator,
(DWORD) buffer.size(),
(LPWSTR) &buffer[0],
&dwBufferSizeUsed);
dwError = GetLastError();
}
if (!bRetVal && ERROR_NO_MORE_ITEMS == dwError)
{
dwError = ERROR_SUCCESS;
break;
}
if (bRetVal && ERROR_SUCCESS != dwError)
{
break;
}
// Output the subscription name.
wprintf(L"%s\n", (LPCWSTR) &buffer[0]);
}
}
else
{
dwRetVal = GetLastError();
LPVOID lpwszBuffer;
FormatMessageW( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
NULL,
dwRetVal,
0,
(LPWSTR) &lpwszBuffer,
0,
NULL);
if (!lpwszBuffer)
{
wprintf(L"Failed to FormatMessage. Operation Error Code: %u. Error Code from FormatMessage: %u\n", dwRetVal, GetLastError());
return;
}
wprintf(L"\nFailed to Perform Operation.\nError Code: %u\nError Message: %s\n", dwRetVal, lpwszBuffer);
LocalFree(lpwszBuffer);
}
EcClose(hEnumerator);
}
관련 항목