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