Compartir a través de


Uso de la funcionalidad de NDF

Microsoft proporciona acceso a la funcionalidad de NDF a través de una API pública. Cuando se produce un problema, la aplicación puede usar esta API para aprovechar esta funcionalidad en el contexto de una aplicación específica.

Hay tres fases de realizar el diagnóstico con NDF: crear un incidente, ejecutar diagnósticos y reparaciones, y cerrar el incidente. Esta información general indica qué funciones de NDF pueden ser relevantes para un escenario específico. Puede encontrar información detallada sobre cada función en la sección Referencia de NDF .

Creación de un incidente

Una sesión de diagnóstico de NDF requiere un incidente específico para diagnosticar. Hay varias funciones que se pueden usar para crear un incidente. Elija la función que coincida con lo que la aplicación estaba intentando hacer cuando se produjo el error.

Ejecución de diagnóstico y reparaciones

Hay dos maneras de iniciar la funcionalidad de diagnóstico y reparación.

  • Uso de la interfaz de usuario de Windows (recomendado)

    Cuando se ejecuta en la interfaz de usuario estándar de Windows, simplemente puede llamar a la función NdfExecuteDia diagnostic . El Asistente para NDF se iniciará y ayudará al usuario a identificar (y, si es posible, y resolver) el problema. La función devolverá una vez finalizado este proceso. La interfaz de usuario es opcionalmente modal para la aplicación.

  • Usar una interfaz de usuario personalizada (solo Windows 7 y versiones posteriores)

    Hay diferentes funciones disponibles para su uso en escenarios en los que no se muestra ninguna interfaz de usuario o donde no se usa la experiencia estándar de Windows (como Media Center, aplicaciones insertadas y el símbolo del sistema). Esta opción omite la funcionalidad de la experiencia del usuario proporcionada en el Asistente para NDF, que incluye limitar los resultados a causas raíz totalmente compatibles, así como heurística para presentar reparaciones al usuario en orden recomendado. Al usar estas funciones, debe proporcionar dicha funcionalidad usted mismo. También debe asegurarse de liberar memoria usada por los resultados del diagnóstico.

    Para comenzar el diagnóstico, llame a la función NdfDiagnoseIncident . Los problemas encontrados se devolverán a la aplicación como una colección de estructuras RootCauseInfo que describen las causas principales identificadas y posibles reparaciones.

    Después de seleccionar una reparación (o pedir al usuario que seleccione una reparación), se debe llamar a NdfRepairIncident para intentar la reparación y determinar si se resolvió el problema.

    En algunos casos, una reparación puede realizarse correctamente, pero no resolverá el problema. En tales casos, se recomienda cerrar el incidente existente y, a continuación, abrir uno nuevo. Esto garantizará que se identifiquen los nuevos problemas sin máscara de la reparación inicial. Por ejemplo, supongamos que no había ninguna red inalámbrica visible. Después de restablecer el adaptador, las redes inalámbricas son visibles, pero ninguna de ellas está en la lista preferida. Se trata de un nuevo problema que requeriría un nuevo diagnóstico para identificarlo. Si este segundo intento de diagnóstico no identifica problemas adicionales, se puede intentar una reparación diferente para resolver el problema original o se puede informar al usuario de que no se pudo resolver el problema.

    NdfDiagnoseIncident y NdfRepairIncident son API sincrónicas. Si desea cancelar la actividad iniciada por estas funciones, llame a NdfCancelIncident desde otro subproceso . La función devolverá en el siguiente punto de detención disponible en el proceso de diagnóstico o reparación.

    En cualquier momento, puede llamar opcionalmente a NdfGetTraceFile para recuperar una copia del registro de NDF para la sesión de diagnóstico actual e incluirlo con los registros de la aplicación. El registro se vacía una vez recuperado y las llamadas posteriores solo recuperarán los eventos que se produjeron después de la última llamada a esta función.

Cerrar un incidente

Cuando haya terminado de diagnosticar un incidente, llame a NdfCloseIncident para liberar recursos del sistema asociados con la realización de diagnósticos en ese incidente. (Tenga en cuenta que esto no libera objetos creados por NdfDiagnoseIncident.