Uso della funzionalità NDF
Microsoft fornisce l'accesso alle funzionalità NDF tramite un'API pubblica. Quando si verifica un problema, l'applicazione può usare questa API per sfruttare questa funzionalità nel contesto di un'applicazione specifica.
Esistono tre fasi dell'esecuzione della diagnosi con NDF: creazione di un evento imprevisto, esecuzione di diagnosi e riparazioni e chiusura dell'evento imprevisto. Questa panoramica indica quali funzioni NDF possono essere rilevanti per uno scenario specifico. Informazioni dettagliate su ogni funzione sono disponibili nella sezione Riferimento NDF .
Creazione di un evento imprevisto
Una sessione di diagnostica NDF richiede un evento imprevisto specifico per diagnosticare. Esistono diverse funzioni che possono essere usate per creare un evento imprevisto. Scegliere la funzione che corrisponde più strettamente a ciò che l'applicazione stava tentando di eseguire quando si è verificato l'errore.
- NdfCreateConnectivityIncident: problemi generali di connettività Internet che non necessitano di informazioni aggiuntive.
- NdfCreateWebIncident/NdfCreateWebIncidentEx: connessione a un URL HTTP o HTTPS.
- NdfCreateSharingIncident: accesso a un percorso o una condivisione file UNC.
- NdfCreateDNSIncident: risoluzione di un nome host DNS.
- NdfCreatePnrpIncident: risoluzione di un nome peer PNRP.
- NdfCreateGroupingIncident: aggiunta di un gruppo peer-to-peer.
- NdfCreateWinSockIncident: Connessione a una destinazione usando un socket (quando nessuna delle altre funzioni si applica in modo specifico).
- NdfCreateIncident: usato quando non è appropriato alcun altro scenario e la classe helper NDF specifica da richiamare è nota (insieme agli argomenti necessari). Usato principalmente per scopi di test da parte degli sviluppatori di applicazioni che hanno scritto la propria classe helper.
Esecuzione di diagnosi e riparazioni
Esistono due modi per avviare la diagnosi e la funzionalità di riparazione.
Uso dell'interfaccia utente di Windows (scelta consigliata)
Quando si esegue nell'interfaccia utente di Windows standard, è sufficiente chiamare la funzione NdfExecuteDiagnosis . La Creazione guidata NDF avvia e aiuta l'utente a identificare (e, se possibile, e risolvere il problema). La funzione restituirà al termine di questo processo. L'interfaccia utente è facoltativamente modale all'applicazione.
Uso di un'interfaccia utente personalizzata (solo Windows 7 e versioni successive)
Le diverse funzioni sono disponibili per l'uso negli scenari in cui non viene visualizzata alcuna interfaccia utente o in cui l'esperienza di Windows standard non viene usata (ad esempio Media Center, applicazioni incorporate e prompt dei comandi). Questa opzione ignora le funzionalità dell'esperienza utente fornite nella Procedura guidata NDF, che include la limitazione dei risultati alle cause radice completamente supportate, nonché all'euristica per presentare le riparazioni all'utente nell'ordine consigliato. Quando si usano queste funzioni, è necessario fornire tutte queste funzionalità. È anche necessario assicurarsi di liberare memoria usata dai risultati della diagnosi.
Per iniziare la diagnosi, chiamare la funzione NdfDiagnoseIncident . Eventuali problemi rilevati verranno restituiti all'applicazione come raccolta di strutture RootCauseInfo che descrivono le cause radice identificate e le possibili riparazioni.
Dopo aver selezionato una riparazione (o chiedere all'utente di selezionare una riparazione), NdfRepairIncident deve essere chiamato per tentare la riparazione e determinare se il problema è stato risolto.
In alcuni casi, una riparazione può essere eseguita correttamente, ma non risolve il problema. In questi casi, è consigliabile chiudere l'evento imprevisto esistente e quindi aprire uno nuovo. Ciò garantisce che vengano identificati nuovi problemi non mascherati dalla riparazione iniziale. Si supponga, ad esempio, che non siano state visibili reti wireless. Dopo aver reimpostato l'adattatore, le reti wireless sono visibili, ma nessuno di essi si trovano nell'elenco preferito. Si tratta di un nuovo problema che richiederebbe una nuova diagnosi per identificare. Se tale secondo tentativo di diagnosi non identifica problemi aggiuntivi, è possibile tentare di risolvere il problema originale o l'utente può essere informato che il problema non può essere risolto.
NdfDiagnoseIncident e NdfRepairIncident sono API sincrone. Se si desidera annullare l'attività avviata da queste funzioni, chiamare NdfCancelIncident da un altro thread. La funzione restituirà al successivo punto di arresto disponibile nella diagnosi o nel processo di riparazione.
A qualsiasi punto, è possibile chiamare facoltativamente NdfGetTraceFile per recuperare una copia del log NDF per la sessione di diagnosi corrente e includerla con i log dell'applicazione. Il log viene scaricato una volta recuperato e le chiamate successive recuperano solo gli eventi che si sono verificati dopo l'ultima chiamata a questa funzione.
Chiusura di un evento imprevisto
Al termine della diagnosi di un evento imprevisto, chiamare NdfCloseIncident per liberare le risorse di sistema associate all'esecuzione di diagnostica su tale evento imprevisto. Si noti che questo non libera oggetti creati da NdfDiagnoseIncident.