サービスの列挙と解放

ELS アプリケーションは MappingGetServices 関数を呼び出して、オペレーティング システムで使用できるサービスを決定します。 この関数を使用すると、使用可能なすべての ELS サービスを列挙したり、アプリケーションによって指定された検索条件に基づいてサービスをフィルター処理したりできます。 サービスが不要になると、アプリケーションは MappingFreeServices を呼び出します。

サポートされているすべてのサービスを取得する

このコード例では、 MappingGetServicesMappingFreeServices を使用してオペレーティング システム上で使用可能なすべてのサービスを列挙して解放する方法を示します。 これを行うために、アプリケーションは MappingGetServicespOptions パラメーターに NULL を渡します。

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

特定のサービスを取得する

次の例では、 MappingGetServicesMappingFreeServices を使用して、カテゴリ "言語検出" のすべてのサービスを列挙して解放する方法を示します。 このサービス カテゴリの詳細については、「 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;
}

拡張言語サービスの使用

MappingFreeServices

MappingGetServices