2025-11-28 00:35:46 +09:00

68 lines
1.8 KiB
C++

// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
#include "Subscription.h"
DWORD EnumerateSubscriptions()
{
//Enumerates Subscriptions Available on the machine
DWORD dwBufferSizeUsed, dwError = ERROR_SUCCESS;
BOOL bRetVal = true;
std::vector<WCHAR> buffer(MAX_PATH);
EC_HANDLE hEnumerator;
hEnumerator = EcOpenSubscriptionEnum(NULL);
if ( !hEnumerator)
return GetLastError();
while( bRetVal )
{
bRetVal = EcEnumNextSubscription( hEnumerator,
(DWORD) buffer.size(),
(LPWSTR) &buffer[0],
&dwBufferSizeUsed);
dwError = GetLastError();
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;
}
wprintf(L"%s\n", (LPCWSTR) &buffer[0]);
}
EcClose(hEnumerator);
return dwError;
}