Partager via


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é.
Vous pouvez utiliser cet appel comme signal pour mettre à jour les listes et les nombres de références des applications connectées.

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

Voir aussi

ISensorDriver

ISensorDriver ::OnClientConnect