Поделиться через


C28175

предупреждение C28175: драйвер не должен обращаться к члену структуры

Это предупреждение указывает, что драйвер обращается к незарегистрированного члену структуры, к которому драйверы никогда не должны получать доступ.

Драйверы никогда не должны получать доступ к указанному элементу структуры без документов. Для большинства незарегистрированных членов непрозрачных или частично непрозрачных структур этот запрет является абсолютным. Однако драйверы могут обращаться к определенным элементам структуры без документов из определенных подпрограмм. Например, драйвер может получить доступ к незадокументированных членам частично непрозрачной структуры DRIVER_OBJECT только в рамках DRIVER_INITIALIZE или DRIVER_UNLOAD подпрограммы.

Иногда причина, по которой это правило применяется к конкретному члену, не сразу очевидна. Например, один из экземпляров, где это происходит, с элементом NextDevice_DEVICE_OBJECT. В этом случае блокировка должна использоваться для безопасного доступа к этому связанному списку, но эта блокировка недоступна драйверу. В этом случае нарушение этого правила приводит к редким, но трудно диагностировать сбои. Правильный способ доступа к связанным устройствам — использовать функцию IoEnumerateDeviceObjectList .