C28175

advertencia C28175: un controlador no debe tener acceso al miembro de la estructura

Esta advertencia indica que un controlador accedió a un miembro de estructura no documentado al que nunca deben tener acceso los controladores.

Los controladores nunca deben tener acceso al miembro de estructura no documentado especificado. Para la mayoría de los miembros no documentados de estructuras opacas o parcialmente opacas, esta prohibición es absoluta. Sin embargo, los controladores pueden acceder a ciertos miembros de estructura no documentados desde rutinas concretas. Por ejemplo, el controlador puede acceder a los miembros no documentados de la estructura DRIVER_OBJECT parcialmente opaca solo dentro de una rutina de DRIVER_INITIALIZE o DRIVER_UNLOAD.

A veces, la razón por la que esta regla se aplica a un miembro determinado no es inmediatamente obvia. Por ejemplo, una instancia en la que esto ocurre es con el miembro NextDevice de _DEVICE_OBJECT. En este caso, se debe usar un bloqueo para acceder de forma segura a esta lista vinculada, pero ese bloqueo no está disponible para el controlador. En este caso, infringir esta regla provoca errores poco frecuentes pero difíciles de diagnosticar. La manera adecuada de acceder a los dispositivos relacionados es usar la función IoEnumerateDeviceObjectList .