C28175

警告 C28175: この構造体メンバーには、ドライバーからアクセスできません

この警告は、ドキュメント化されておらずドライバーからのアクセスが許可されていない構造体メンバーに、ドライバーがアクセスしたことを示します。

ドキュメント化されていない指定の構造体メンバーには、ドライバーからアクセスできません。 不透明または部分的に不透明な構造体で、ドキュメント化されていないほとんどのメンバーについては、この禁止は絶対的なものです。 ただしドライバーは、特定のルーチン内からであれば、ドキュメント化されていない特定の構造体メンバーにアクセスできます。 たとえば、ドライバーは、DRIVER_INITIALIZE または DRIVER_UNLOAD ルーチン内でのみ、部分的に不透明な DRIVER_OBJECT 構造体のドキュメント化されていないメンバーにアクセスできます。

この規則が特定のメンバーに適用される理由は、一見わかりにくいことがあります。 たとえば、これに該当する例の 1 つとして、_DEVICE_OBJECTNextDevice メンバーがあります。 この例でのリンク付きリストに安全にアクセスするにはロックを使用する必要がありますが、ドライバーはこのロックを使用できません。 その場合に、この規則に違反すると、診断が困難な障害がまれに発生します。 関連するデバイスにアクセスする適切な方法は、IoEnumerateDeviceObjectList 関数を使用することです。