Další oprava v projektech ObInit a ObjView

Poslední dobou představuje programování ovladačů a šťourání se v jádře Windows prakticky můj denní chleba. Přibližně před měsícem jsem se rozhodl použít rozhraní pro práci s datovými strukturami Správce objektů (Object Manager), dosud využívané pouze v projektech ObInit a ObjView, i v rámci dalšího projektu. Díky tomuto rozhodnutí došlo k testování některých částí rozhraní, což vedlo k odstranění jedné chyby.

Chyba se týkala procesu konverze jména objektu jádra na jeho adresu. Způsobovala zvyšování počtu referencí na objekt adresáře, jehož název byl obsažen ve jménu cílového objektu jako poslední. Problém byl odstraněn a aktualizace rozhraní vedla k vydání nových verzí projektů ObInit a ObjView.

Při té příležitosti jsem se rozhodl trochu upravit strukturu zdrojového kódu obou projektů. Hlavní nevýhodu dosavadního uspořádání představovaly dvě kopie zdrojového kódu rozhraní pro práci s datovými strukturami Správce objektů. Jedna kopie se nacházela ve složce projektu ObInit, druhá v adresáři se zdrojovými kódy ovladače pro ObjView. Důvodem vzniku této situace je neschopnost překladače z balíku Windows Driver Kit (WDK) kompilovat zdrojové kódy, které se nacházejí v různých adresářích. Je pravda, že jak ObInit tak ObjView lze otevřít ve vývojovém prostředí Microsoft Visual Studio. K vytvoření příslušných souborů byl použit plugin VisualDDK nakonfigurováný tak, aby nové projekty používaly překladač z WDK.

V rámci rekompilace obou projektů jsem se rozhodl problém popsaný v předchozím odstavci alespoň částečně vyřešit. Zdrojové kódy rozhraní pro práci s datovými strukturami Správce objektů byly přesunuty do adresáře shared/libob a ObInit a ObjView byly na tuto složku nasměrovány. Zároveň zanikly adresáře obinit/obinit a objview/objview; projektové soubory pro Visual Studio se přesunuly do adresářů obinit/sys a objview/sys ke zdrojovým kódům ovladačů. Oba projekty nyní pro překlad používají překladač Visual Studia, tudíž se nevyskytuje problém s překladem zdrojových kódu nacházejících se ve více složkách.

Leave a Reply

Your email address will not be published.