ISensorDriver ::OnClientDisconnect, méthode (sensorsclassextension.h)
La méthode ISensorDriver ::OnClientDisconnect avertit le pilote de capteur qu’une application cliente s’est déconnectée.
Syntaxe
HRESULT OnClientDisconnect(
[in] IWDFFile *pClientFile,
[in] LPWSTR pwszSensorID
);
Paramètres
[in] pClientFile
Pointeur vers une interface IWDFFile qui représente l’objet de fichier pour le client déconnecté.
[in] pwszSensorID
LPWSTR qui contient l’ID du capteur à partir duquel l’application cliente se déconnecte.
Valeur de retour
Si l’opération réussit, cette méthode retourne S_OK. Sinon, cette méthode retourne l’un des codes d’erreur définis dans Winerror.h.
Remarques
L’extension de classe de capteur appelle cette méthode dans les instances suivantes :
- Une application se ferme normalement.
- L’utilisateur révoque l’autorisation pour une application d’accéder à l’appareil qui contient le capteur spécifié.
- Le travail de nettoyage à partir d’un appel à ISensorClassExtension ::CleanupFile s’est terminé.
Pour plus d’informations sur l’utilisation de cette méthode, consultez filtrage des données.
Exemples
L’exemple de code suivant illustre une implémentation de ISensorDriver ::OnClientDisconnect. Cette fonction utilise une carte simple ATL, nommée Clients, pour assurer le suivi des clients connectés. Consultez ISensorDriver ::OnClientConnect pour obtenir un exemple de la façon dont les clients connectés sont ajoutés à la carte.
La structure ClientData est définie comme suit.
// Struct to keep track of connected client status.
struct ClientData
{
BOOL bListening; // Client is listening to events.
ULONG ulInterval; // Interval requested by client.
};
La définition de la fonction suit.
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;
}
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Windows 7, disponible dans Windows 7. |
serveur minimum pris en charge | Aucun pris en charge |
plateforme cible | Bureau |
d’en-tête | sensorsclassextension.h |
bibliothèque | SensorsClassExtension.lib |