Перечисление и освобождение сервисов
Приложение ELS вызывает функцию MappingGetServices, чтобы определить службы, доступные в операционной системе. Функцию можно использовать для перечисления всех доступных служб ELS или фильтрации служб на основе критериев поиска, предоставляемых приложением. Если службы больше не нужны, приложение вызывает MappingFreeServices.
Получение всех поддерживаемых служб
В этом примере кода показано использование MappingGetServices и MappingFreeServices для перечисления, а затем освобождения всех доступных служб в операционной системе. Для этого приложение передает NULL для параметра pOptionsMappingGetServices.
#include <windows.h>
#include <stdio.h>
#include <elscore.h>
int __cdecl main()
{
PMAPPING_SERVICE_INFO prgServices = NULL;
DWORD dwServicesCount = 0;
HRESULT Result;
DWORD i;
// Get all installed ELS services.
Result = MappingGetServices(NULL, &prgServices, &dwServicesCount);
if (SUCCEEDED(Result))
{
for (i = 0; i < dwServicesCount; ++i)
{
// Do something with each service.
// ... prgServices[i] ...
printf_s("Service: %ws, category: %ws\n",
prgServices[i].pszDescription, prgServices[i].pszCategory);
}
MappingFreeServices(prgServices);
}
return 0;
}
Получить конкретные услуги
В следующем примере показано использование MappingGetServices и MappingFreeServices для перечисления и последующего освобождения всех служб категории "Обнаружение языка". Дополнительные сведения об этой категории служб см. в Майкрософт обнаружение языка.
#include <windows.h>
#include <stdio.h>
#include <elscore.h>
int __cdecl main()
{
MAPPING_ENUM_OPTIONS EnumOptions;
PMAPPING_SERVICE_INFO prgServices = NULL;
DWORD dwServicesCount = 0;
HRESULT Result;
DWORD i;
ZeroMemory(&EnumOptions, sizeof (MAPPING_ENUM_OPTIONS));
EnumOptions.Size = sizeof (MAPPING_ENUM_OPTIONS);
// Use the Language Auto-Detection category to enumerate
// all language detection services.
EnumOptions.pszCategory = L"Language Detection";
// Execute the enumeration:
Result = MappingGetServices(&EnumOptions, &prgServices, &dwServicesCount);
if (SUCCEEDED(Result))
{
for (i = 0; i < dwServicesCount; ++i)
{
// Do something with each service.
// ... prgServices[i] ...
printf_s("Service: %ws, category: %ws\n",
prgServices[i].pszDescription, prgServices[i].pszCategory);
}
MappingFreeServices(prgServices);
}
return 0;
}
Связанные разделы