Partager via


Méthode ISensorDriver ::OnClientDisconnect (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 file pour le client déconnecté.

[in] pwszSensorID

LPWSTR qui contient l’ID du capteur dont l’application cliente se déconnecte.

Valeur retournée

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 qu’une application accède à l’appareil qui contient le capteur spécifié.
  • Le travail de nettoyage d’un appel à ISensorClassExtension ::CleanupFile est terminé.
Vous pouvez utiliser cet appel comme signal pour mettre à jour les listes et référencer le nombre d’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 d’ISensorDriver ::OnClientDisconnect. Cette fonction utilise une carte simple ATL, nommée Clients, pour effectuer le suivi des clients connectés. Consultez ISensorDriver ::OnClientConnect pour obtenir un exemple d’ajout de clients connecté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 fonction est la suivante.

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;
}

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 7, disponible dans Windows 7.
Serveur minimal pris en charge Aucun pris en charge
Plateforme cible Desktop (Expérience utilisateur)
En-tête sensorsclassextension.h
Bibliothèque SensorsClassExtension.lib

Voir aussi

ISensorDriver

ISensorDriver ::OnClientConnect