Freigeben über


ISensorDriver::OnClientDisconnect-Methode (sensorsclassextension.h)

Die ISensorDriver::OnClientDisconnect-Methode benachrichtigt den Sensortreiber, dass eine Clientanwendung die Verbindung getrennt hat.

Syntax

HRESULT OnClientDisconnect(
  [in] IWDFFile *pClientFile,
  [in] LPWSTR   pwszSensorID
);

Parameter

[in] pClientFile

Zeiger auf eine IWDFFile-Schnittstelle , die das Dateiobjekt für den Client darstellt, der die Verbindung getrennt hat.

[in] pwszSensorID

LPWSTR , das die ID für den Sensor enthält, von dem die Clientanwendung die Verbindung trennt.

Rückgabewert

Wenn der Vorgang erfolgreich ist, gibt diese Methode S_OK zurück. Andernfalls gibt diese Methode einen der Fehlercodes zurück, die in Winerror.h definiert sind.

Hinweise

Die Sensorklassenerweiterung ruft diese Methode in den folgenden Instanzen auf:

  • Eine Anwendung wird normal geschlossen.
  • Der Benutzer widerruft die Berechtigung für eine Anwendung für den Zugriff auf das Gerät, das den angegebenen Sensor enthält.
  • Die Bereinigungsarbeiten aus einem Aufruf von ISensorClassExtension::CleanupFile wurden abgeschlossen.
Sie können diesen Aufruf als Signal verwenden, um Listen zu aktualisieren und die Anzahl der verbundenen Anwendungen zu referenzieren.

Weitere Informationen zur Verwendung dieser Methode finden Sie unter Filtern von Daten.

Beispiele

Der folgende Beispielcode veranschaulicht eine Implementierung von ISensorDriver::OnClientDisconnect. Diese Funktion verwendet eine einfache ATL-Zuordnung namens Clients, um verbundene Clients nachzuverfolgen. Ein Beispiel für das Hinzufügen verbundener Clients zur Karte finden Sie unter ISensorDriver::OnClientConnect .

Die ClientData-Struktur ist wie folgt definiert.

// Struct to keep track of connected client status.
struct ClientData
{
    BOOL bListening;  // Client is listening to events.
    ULONG ulInterval;  // Interval requested by client.
};

Die Funktionsdefinition folgt.

HRESULT CSensorDdi:: OnClientDisconnect(
        __in IWDFFile* pClientFile,
        __in LPWSTR pwszSensorID
        )
{
    if(NULL == pClientFile ||
       NULL == pwszSensorID)
    {
        return E_POINTER;
    }

    HRESULT hr = S_OK;
    ClientData* pCD = NULL;
    BOOL bRet = FALSE;

    // Find this client in the map.
    pCD = Clients.Lookup(pClientFile);
    if(pCD == NULL)
    {
        hr = E_UNEXPECTED;
    }

    if(SUCCEEDED(hr))
    {
        // Free the client data memory.
        delete pCD;
        pCD = NULL;

        // Remove this client from the array.
        bRet = Clients.Remove(pClientFile);
        if(FALSE == bRet)
        {
            hr = E_UNEXPECTED;
        }
    }

    return hr;
}

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 7, verfügbar in Windows 7.
Unterstützte Mindestversion (Server) Nicht unterstützt
Zielplattform Desktop
Kopfzeile sensorsclassextension.h
Bibliothek SensorsClassExtension.lib

Weitere Informationen

ISensorDriver

ISensorDriver::OnClientConnect