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