Freigeben über


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

Verwenden erweiterter linguistischer Dienste

MappingFreeServices

MappingGetServices