Udostępnij przez


C28175

ostrzeżenie C28175: Element członkowski struktury nie powinien mieć dostępu do sterownika

To ostrzeżenie wskazuje, że sterownik uzyskiwał dostęp do nieudokumentowanego elementu członkowskiego struktury, do którego kierowcy nigdy nie powinni uzyskiwać dostępu.

Sterowniki nigdy nie powinny uzyskiwać dostępu do określonego nieudokumentowanego elementu członkowskiego struktury. Dla większości nieudokumentowanych członków nieprzezroczystych lub częściowo nieprzezroczystych struktur ten zakaz jest bezwzględny. Jednak kierowcy mogą uzyskiwać dostęp do niektórych nieudokumentowanych składowych struktury z określonych procedur. Na przykład sterownik może uzyskiwać dostęp do nieudokumentowanych elementów członkowskich częściowo nieprzezroczystej struktury DRIVER_OBJECT tylko w ramach procedury DRIVER_INITIALIZE lub DRIVER_UNLOAD.

Czasami powodem, dla którego ta reguła ma zastosowanie do określonego elementu członkowskiego, nie jest od razu oczywista. Na przykład jedno wystąpienie, w którym tak się dzieje, jest z NextDevice członkiem _DEVICE_OBJECT. W tym przypadku blokada powinna być używana do bezpiecznego uzyskiwania dostępu do tej połączonej listy, ale ta blokada nie jest dostępna dla sterownika. W takim przypadku naruszenie tej reguły powoduje rzadko występujące, ale trudne do zdiagnozowania błędy. Właściwym sposobem uzyskania dostępu do powiązanych urządzeń jest użycie funkcji IoEnumerateDeviceObjectList.