Metodo ISensorDriver::OnClientDisconnect (sensorsclassextension.h)
Il metodo ISensorDriver::OnClientDisconnect notifica al driver del sensore che un'applicazione client è disconnessa.
Sintassi
HRESULT OnClientDisconnect(
[in] IWDFFile *pClientFile,
[in] LPWSTR pwszSensorID
);
Parametri
[in] pClientFile
Puntatore a un'interfaccia IWDFFile che rappresenta l'oggetto file per il client disconnesso.
[in] pwszSensorID
LPWSTR che contiene l'ID del sensore da cui l'applicazione client sta disconnettendo.
Valore restituito
Se l'operazione ha esito positivo, questo metodo restituisce S_OK. In caso contrario, questo metodo restituisce uno dei codici di errore definiti in Winerror.h.
Osservazioni
L'estensione della classe del sensore chiama questo metodo nelle istanze seguenti:
- Un'applicazione si chiude normalmente.
- L'utente revoca l'autorizzazione per un'applicazione per accedere al dispositivo che contiene il sensore specificato.
- Il lavoro di pulizia da una chiamata a ISensorClassExtension::CleanupFile completato.
Per altre informazioni su come usare questo metodo, vedere Filtrare i dati.
Esempi
Il codice di esempio seguente illustra un'implementazione di ISensorDriver::OnClientDisconnect. Questa funzione usa una mappa semplice ATL, denominata Clients, per tenere traccia dei client connessi. Vedere ISensorDriver::OnClientConnect per un esempio di come i client connessi vengono aggiunti alla mappa.
La struttura ClientData è definita come segue.
// Struct to keep track of connected client status.
struct ClientData
{
BOOL bListening; // Client is listening to events.
ULONG ulInterval; // Interval requested by client.
};
La definizione della funzione segue.
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;
}
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Windows 7,Disponibile in Windows 7. |
server minimo supportato | Nessuna supportata |
piattaforma di destinazione | Desktop |
intestazione | sensorsclassextension.h |
libreria | SensorsClassExtension.lib |