Aufzählen und Freigeben von Diensten
Die ELS-Anwendung ruft die MappingGetServices-Funktion auf, um die Dienste zu ermitteln, die auf dem Betriebssystem verfügbar sind. Die Funktion kann entweder verwendet werden, um alle verfügbaren ELS-Dienste aufzulisten oder die Dienste basierend auf den von der Anwendung bereitgestellten Suchkriterien zu filtern. Wenn Dienste nicht mehr benötigt werden, ruft die Anwendung MappingFreeServices auf.
Abrufen aller unterstützten Dienste
In diesem Codebeispiel wird die Verwendung von MappingGetServices und MappingFreeServices veranschaulicht, um alle verfügbaren Dienste auf dem Betriebssystem aufzulisten und dann frei zu geben. Zu diesem Zweck ü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;
}
Abrufen bestimmter Dienste
Das nächste Beispiel veranschaulicht die Verwendung von MappingGetServices und MappingFreeServices zum Aufzählen und Anschließenden Freigeben aller Dienste der Kategorie "Spracherkennung". Weitere Informationen zu dieser Dienstkategorie finden Sie unter Microsoft-Spracherkennung.
#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;
}
Zugehörige Themen