Поделиться через


Перечисление и освобождение служб

Приложение ELS вызывает функцию MappingGetServices для определения служб, доступных в операционной системе. Функцию можно использовать либо для перечисления всех доступных служб ELS, либо для фильтрации служб на основе критериев поиска, предоставляемых приложением. Если службы больше не нужны, приложение вызывает MappingFreeServices.

Получение всех поддерживаемых служб

В этом примере кода показано использование MappingGetServices и MappingFreeServices для перечисления и последующего освобождения всех доступных служб в операционной системе. Для этого приложение передает значение NULL для параметра pOptionsпараметра MappingGetServices.

#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;
}

Использование расширенных лингвистических служб

MappingFreeServices

MappingGetServices