Confiabilidad de la información de error extendida
La información de error extendida no es confiable. La información de error extendida no se puede usar para compilar lógica de código. Es adecuado comprobar la presencia de información de error extendida y, si existe, volcar, guardar o registrar esa información. Pero no se basan en la información ni en su contenido.
Los siguientes motivos explican por qué la información de error extendida no es confiable:
- La secuencia y el contenido de los registros de errores extendidos dependen de la arquitectura interna del sistema, que está sujeta a cambios. Una determinada operación puede pasar por NPFS en los sistemas actuales, pero mañana podría pasar por TCP. Estos distintos componentes generan códigos de error muy diferentes y, por tanto, las comprobaciones de código no son intrínsecamente confiables y no se recomiendan.
- La propagación de la información de error extendida se puede deshabilitar, como se explicó anteriormente. Si se incluye el código de detección, es probable que la aplicación deje de funcionar en determinados entornos.
- La propagación de la información de error extendida se realiza de la mejor manera. La propagación o generación de información de error extendida puede producir un error si no hay suficiente memoria en el equipo para procesar o propagar la cadena. En tales circunstancias, se quitará la cadena. Algunos protocolos tienen longitudes limitadas para los paquetes de error, ya que normalmente no incluyen mucha información. Si la longitud de la cadena supera la longitud permitida del paquete, el tiempo de ejecución de RPC comienza a quitar información de la cadena en un intento de ajustar la cadena al paquete. La primera vez que se ejecuta se quitan los registros, empezando por el penúltimo registro, retrocediendo, hasta que solo permanecen los primeros y últimos registros. Si la cadena sigue sin caber en un paquete, el tiempo de ejecución quita los parámetros de cadena y los nombres de equipo. Si se quita un parámetro de cadena, el tipo del parámetro se establece en none. Si se quita un registro, la marca EEInfoNextRecordsMissing se establece en el registro siguiente y EEInfoPreviousRecordsMissing se establece en el registro anterior.