Программирование драйверов Windows

       

Соглашения об именах функций драйвера и системных вызовов


Не последнюю роль в разработке программного продукта играют правила составления идентификаторов и размещения исходного текста в файлах. Если хорошие правила вырабатываются годами участия в крупных проектах, то плохие каждый может сформулировать без труда: называйте функции и переменные случайным образом, а еще лучше &#8212 x1, x2, function133 и т.п.

Поскольку Microsoft следует определенным правилам составления имен своих вызовов, то системные функции отличить в тексте драйвера несложно: они имеют префикс из числа представленных в таблице 4.1, например, HalGetInterruptVector, вызов, относящийся к множеству аппаратных абстракций, что обозначено префиксом Hal. Правда, Microsoft все-таки не до конца последовательно проводит эту линию в жизнь. Например, в именах функций, обслуживающих объект адаптера (структура DMA_OPERATIONS), нет уже никаких префиксов такого типа, как, скажем, в именах FreeAdapterChannel, CalculateScatterGatherList

и AllocateCommonBuffer.

В пакете DDK все имена типов данных и все макроопределения вводятся прописными (большими) буквами, например, PVOID, PHYSICAL_ADDRESS, READ_PORT_UCHAR. Упоминание о так называемой венгерской нотации в DDK практически не встречается, однако, Microsoft рекомендует разработчикам драйверов использовать собственные короткие префиксы для обозначения собственных функций и, возможно, идентификаторов переменных.



Содержание раздела