Condividi tramite


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 di 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. Le informazioni dettagliate su ogni funzione sono disponibili nella sezione informazioni di riferimento su NDF.

Creazione di un incidente

Una sessione di diagnostica NDF richiede un evento imprevisto specifico da 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.

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 opera nell'interfaccia utente standard di Windows, è sufficiente chiamare la funzione NdfExecuteDiagnosis. La creazione guidata NDF avvierà e aiuterà l'utente a identificare (e, se possibile, e risolvere) il problema. La funzione verrà restituita al termine del processo. L'interfaccia utente è facoltativamente modale per l'applicazione.

  • Uso di un'interfaccia utente personalizzata (solo Windows 7 e versioni successive)

    Diverse funzioni sono disponibili per l'uso in scenari in cui non viene visualizzata alcuna interfaccia utente o in cui non viene usata l'esperienza standard di Windows ,ad esempio Media Center, applicazioni incorporate e prompt dei comandi. Questa opzione ignora la funzionalità dell'esperienza utente fornita nella Procedura guidata NDF, che include la limitazione dei risultati alle cause radice pienamente supportate, come pure l'euristica per presentare le riparazioni all'utente nell'ordine consigliato. Quando si usano queste funzioni, è necessario fornire manualmente qualsiasi funzionalità di questo tipo. Bisogna anche assicurarsi di liberare la memoria utilizzata dai risultati della diagnosi.

    Per iniziare la diagnosi, chiamare la funzione NdfDiagnoseIncident. Eventuali problemi rilevati verranno restituiti all'applicazione come raccolta di RootCauseInfo strutture che descrivono le cause radice identificate e le possibili riparazioni.

    Dopo aver selezionato un ripristino (o chiedere all'utente di selezionare un ripristino), 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 risolverà il problema. In questi casi, è consigliabile chiudere l'evento imprevisto esistente e quindi aprirne uno nuovo. In questo modo, tutti i nuovi problemi non mascherati dal ripristino iniziale vengono identificati. Si supponga, ad esempio, che nessuna rete wireless fosse stata visibile. Dopo aver reimpostato la scheda, le reti wireless sono visibili, ma nessuna di esse è presente nell'elenco preferito. Si tratta di un nuovo problema che richiederebbe una nuova diagnosi per identificare. Se un secondo tentativo di diagnosi di questo tipo non identifica altri problemi, si può tentare una riparazione diversa per risolvere il problema originale, oppure si può informare l'utente 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 nel processo di diagnosi o ripristino.

    In qualsiasi momento, è 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 recupereranno solo gli eventi che si sono verificati dopo l'ultima chiamata a questa funzione.

Chiusura di un incidente

Al termine della diagnosi di un evento imprevisto, chiamare NdfCloseIncident per liberare le risorse di sistema associate all'esecuzione della diagnostica su tale evento imprevisto. Si noti che questo non libera oggetti creati da NdfDiagnoseIncident.