Enumerando e liberando serviços

O aplicativo ELS chama a função MappingGetServices para determinar os serviços disponíveis no sistema operacional. A função pode ser usada para enumerar todos os serviços ELS disponíveis ou para filtrar os serviços com base nos critérios de pesquisa fornecidos pelo aplicativo. Quando os serviços não são mais necessários, o aplicativo chama MappingFreeServices.

Obter todos os serviços com suporte

Este exemplo de código ilustra o uso de MappingGetServices e MappingFreeServices para enumerar e liberar todos os serviços disponíveis no sistema operacional. Para fazer isso, o aplicativo passa NULL para o parâmetro pOptions de 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;
}

Obter serviços específicos

O exemplo a seguir ilustra o uso de MappingGetServices e MappingFreeServices para enumerar e liberar todos os serviços da categoria "Detecção de Idioma". Para obter mais informações sobre essa categoria de serviço, consulte Detecção de Idioma da Microsoft.

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

Usando serviços linguísticos estendidos

MappingFreeServices

MappingGetServices