Bagikan melalui


Menggunakan Fungsi NDF

Microsoft menyediakan akses ke fungsionalitas NDF melalui API publik. Ketika masalah terjadi, aplikasi dapat menggunakan API ini untuk memanfaatkan fungsionalitas ini dalam konteks aplikasi tertentu.

Ada tiga tahap melakukan diagnosis dengan NDF: melaporkan insiden, menjalankan proses diagnosis dan perbaikan, serta menutup insiden. Gambaran umum ini menunjukkan fungsi NDF mana yang mungkin relevan untuk skenario tertentu. Informasi terperinci tentang setiap fungsi dapat ditemukan di bagian Referensi NDF.

Membuat Insiden

Sesi diagnostik NDF memerlukan insiden tertentu untuk didiagnosis. Ada beberapa fungsi yang dapat digunakan untuk membuat insiden. Pilih fungsi yang paling cocok dengan apa yang coba dilakukan aplikasi ketika kegagalan terjadi.

Melakukan Diagnosis dan Perbaikan

Ada dua cara untuk meluncurkan fungsionalitas diagnosis dan perbaikan.

  • Menggunakan Antarmuka Pengguna Windows (Disarankan)

    Saat berjalan di antarmuka pengguna Windows standar, Anda cukup memanggil fungsi NdfExecuteDiagnosis. Wizard NDF akan meluncurkan dan membantu pengguna dalam mengidentifikasi (dan jika memungkinkan, dan menyelesaikan) masalah. Fungsi akan kembali setelah proses ini selesai. Antarmuka pengguna secara opsional dapat bersifat modal terhadap aplikasi Anda.

  • Menggunakan Antarmuka Pengguna Kustom (hanya Windows 7 dan yang lebih baru)

    Fungsi yang berbeda tersedia untuk digunakan dalam skenario di mana tidak ada antarmuka pengguna yang ditampilkan, atau di mana pengalaman Windows standar tidak digunakan (seperti Media Center, aplikasi yang disematkan, dan prompt perintah). Opsi ini melewati fungsionalitas pengalaman pengguna yang disediakan dalam Wizard NDF, yang mencakup pembatasan hasil ke akar penyebab yang didukung sepenuhnya, serta heuristik untuk menyajikan perbaikan kepada pengguna dalam urutan yang direkomendasikan. Saat menggunakan fungsi-fungsi ini, Anda harus menyediakan fungsionalitas tersebut sendiri. Anda juga harus memastikan untuk membebaskan memori yang digunakan oleh hasil diagnosis.

    Untuk memulai diagnosis, panggil fungsi NdfDiagnoseIncident. Setiap masalah yang ditemukan akan dikembalikan ke aplikasi sebagai kumpulan struktur RootCauseInfo yang menjelaskan akar penyebab yang diidentifikasi dan kemungkinan perbaikan.

    Setelah memilih perbaikan (atau meminta pengguna untuk memilih perbaikan), NdfRepairIncident harus dipanggil untuk mencoba perbaikan dan menentukan apakah masalah telah diselesaikan.

    Dalam beberapa kasus, perbaikan mungkin berhasil dilakukan tetapi tidak akan menyelesaikan masalah. Dalam kasus seperti itu, menutup insiden yang ada dan kemudian membuka yang baru disarankan. Ini akan memastikan bahwa setiap masalah baru yang terungkap oleh perbaikan awal diidentifikasi. Misalnya, misalkan tidak ada jaringan nirkabel yang terlihat. Setelah mengatur ulang adaptor, jaringan nirkabel terlihat, tetapi tidak ada yang ada di daftar pilihan. Ini adalah masalah baru yang akan memerlukan diagnosis baru untuk mengidentifikasi. Jika upaya diagnosis kedua seperti itu tidak mengidentifikasi masalah tambahan, perbaikan yang berbeda dapat dicoba untuk menyelesaikan masalah asli, atau pengguna dapat diberi tahu bahwa masalah tidak dapat diselesaikan.

    NdfDiagnoseIncident dan NdfRepairIncident adalah API sinkron. Jika Anda ingin membatalkan aktivitas yang dimulai oleh fungsi-fungsi ini, panggil NdfCancelIncident melalui utas lain. Fungsi akan kembali pada titik berhenti berikutnya yang tersedia dalam proses diagnosis atau perbaikan.

    Kapan saja, Anda dapat secara opsional memanggil NdfGetTraceFile untuk mengambil salinan log NDF untuk sesi diagnosis saat ini dan menyertakannya dengan log aplikasi Anda. Log dihapus setelah diambil, dan panggilan berikutnya hanya akan mengambil peristiwa yang terjadi setelah panggilan terakhir ke fungsi ini.

Menutup Insiden

Setelah selesai mendiagnosis insiden, panggil NdfCloseIncident untuk membebaskan sumber daya sistem yang terkait dengan melakukan diagnostik pada insiden tersebut. (Perhatikan bahwa ini tidak membebaskan objek yang dibuat oleh NdfDiagnoseIncident.