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 getrennt wurde.

[in] pwszSensorID

LPWSTR-, die die ID für den Sensor enthält, von dem die Clientanwendung getrennt wird.

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.

Bemerkungen

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 Bereinigung wird von einem Aufruf an ISensorClassExtension::CleanupFile abgeschlossen.
Sie können diesen Aufruf als Signal verwenden, um Listen und Referenzanzahlen verbundener Anwendungen zu aktualisieren.

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-Karte namens "Clients", um verbundene Clients nachzuverfolgen. Unter ISensorDriver::OnClientConnect finden Sie ein Beispiel dafür, wie verbundene Clients der Karte hinzugefügt werden.

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
mindestens unterstützte Client- Windows 7,Verfügbar in Windows 7.
mindestens unterstützte Server- Keine unterstützt
Zielplattform- Desktop
Header- sensorsclassextension.h
Library SensorsClassExtension.lib

Siehe auch

ISensorDriver-

ISensorDriver::OnClientConnect