Compartir a través de


Método ISensorDriver::OnClientDisconnect (sensorsclassextension.h)

El método ISensorDriver::OnClientDisconnect notifica al controlador de sensor que una aplicación cliente se ha desconectado.

Sintaxis

HRESULT OnClientDisconnect(
  [in] IWDFFile *pClientFile,
  [in] LPWSTR   pwszSensorID
);

Parámetros

[in] pClientFile

Puntero a una interfaz IWDFFile que representa el objeto de archivo para el cliente que se desconectó.

[in] pwszSensorID

LPWSTR que contiene el identificador del sensor desde el que se desconecta la aplicación cliente.

Valor devuelto

Si la operación se realiza correctamente, este método devuelve S_OK. De lo contrario, este método devuelve uno de los códigos de error definidos en Winerror.h.

Comentarios

La extensión de clase sensor llama a este método en las siguientes instancias:

  • Una aplicación se cierra normalmente.
  • El usuario revoca el permiso para que una aplicación acceda al dispositivo que contiene el sensor especificado.
  • El trabajo de limpieza de una llamada a ISensorClassExtension::CleanupFile se ha completado.
Puede usar esta llamada como señal para actualizar listas y recuentos de referencias de aplicaciones conectadas.

Para obtener más información sobre cómo usar este método, consulte Filtrado de datos.

Ejemplos

En el código de ejemplo siguiente se muestra una implementación de ISensorDriver::OnClientDisconnect. Esta función usa un mapa simple ATL, denominado Clients, para realizar un seguimiento de los clientes conectados. Consulte ISensorDriver::OnClientConnect para obtener un ejemplo de cómo se agregan los clientes conectados al mapa.

La estructura ClientData se define de la siguiente manera.

// Struct to keep track of connected client status.
struct ClientData
{
    BOOL bListening;  // Client is listening to events.
    ULONG ulInterval;  // Interval requested by client.
};

A continuación se indica la definición de la función.

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

Requisitos

Requisito Value
Cliente mínimo compatible Windows 7,Disponible en Windows 7.
Servidor mínimo compatible No se admite ninguno
Plataforma de destino Escritorio
Encabezado sensorsclassextension.h
Library SensorsClassExtension.lib

Consulte también

ISensorDriver

ISensorDriver::OnClientConnect