Aufzählen und Freilassen von Diensten
Die ELS-Anwendung ruft die MappingGetServices-Funktion auf, um die im Betriebssystem verfügbaren Dienste zu bestimmen. Die -Funktion kann entweder verwendet werden, um alle verfügbaren ELS-Dienste aufzählen oder die Dienste basierend auf von der Anwendung bereitgestellten Suchkriterien zu filtern. Wenn Dienste nicht mehr benötigt werden, ruft die Anwendung MappingFreeServices auf.
Alle unterstützten Dienste
Dieses Codebeispiel veranschaulicht die Verwendung von MappingGetServices und MappingFreeServices, um alle verfügbaren Dienste im Betriebssystem zu aufzählen und dann frei zu geben. Hierzu übergibt die Anwendung NULL für den pOptions-Parameter von 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;
}
Bestimmte Dienste erhalten
Das nächste Beispiel veranschaulicht die Verwendung von MappingGetServices und MappingFreeServices, um alle Dienste der Kategorie "Sprachenerkennung" zu aufzählen und dann frei zu geben. Weitere Informationen zu dieser Dienstkategorie finden Sie unter Microsoft Sprachenerkennung.
#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;
}