サービスの列挙と解放
ELS アプリケーションは MappingGetServices 関数を呼び出して、オペレーティング システムで使用できるサービスを決定します。 この関数を使用すると、使用可能なすべての ELS サービスを列挙したり、アプリケーションによって指定された検索条件に基づいてサービスをフィルター処理したりできます。 サービスが不要になると、アプリケーションは MappingFreeServices を呼び出します。
サポートされているすべてのサービスを取得する
このコード例では、 MappingGetServices と MappingFreeServices を使用してオペレーティング システム上で使用可能なすべてのサービスを列挙して解放する方法を示します。 これを行うために、アプリケーションは MappingGetServices の pOptions パラメーターに 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;
}
特定のサービスを取得する
次の例では、 MappingGetServices と MappingFreeServices を使用して、カテゴリ "言語検出" のすべてのサービスを列挙して解放する方法を示します。 このサービス カテゴリの詳細については、「 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;
}
関連トピック