Я использовал MinGW для компиляции таких программ.Это может быть не так легко найти, потому что, честно говоря, сайт MinGW довольно беспорядочный, но он обеспечивает много заголовков DDK безболезненно.Затем я просто копирую / вставляю структуры и определения, которые мне нужны и которые я не могу найти в заголовках SDK.Макросы, я определяю их условно, чтобы избежать конфликтов, на всякий случай.
Например, ваш IOCTL_STORAGE_QUERY_PROPERTY находится в mingw / include / ddk / ntddstor.h
#define IOCTL_STORAGE_QUERY_PROPERTY \
CTL_CODE(IOCTL_STORAGE_BASE, 0x0500, METHOD_BUFFERED, FILE_ANY_ACCESS)
Поэтому я добавляюв моих проектах:
#ifndef IOCTL_STORAGE_QUERY_PROPERTY
#define IOCTL_STORAGE_QUERY_PROPERTY \
CTL_CODE(IOCTL_STORAGE_BASE, 0x0500, METHOD_BUFFERED, FILE_ANY_ACCESS)
#endif
Это особенно полезно, если вы собираетесь публиковать свой код, так как большинство людей не имеют заголовков DDK и настаивают на использовании VisualStudio вместо MinGW.