ошибка: 'IOCTL_STORAGE_QUERY_PROPERTY' не был объявлен в этой области - PullRequest
1 голос
/ 01 октября 2011

Я включил winioctl.h и в этом файле нет #define для IOCTL_STORAGE_QUERY_PROPERTY!http://www.osronline.com/ddkx/storage/k307_8z3m.htm говорит, что в ntddstor.h Но я не могу найти ntddstor.h на моей Windows XP.Однако IOCTL_STORAGE_QUERY_PROPERTY упоминает, что он должен работать с Windows XP (мне не нужно> Vista Specifc Queries), и упоминает только winioctl.h!(Я не использую Visual C ++, я использую Qt с MinGW)

Ответы [ 2 ]

1 голос
/ 01 октября 2011

Я вижу определение IOCTL_STORAGE_QUERY_PROPERTY в WinIoCtl.h, и оно компилируется без каких-либо условий #ifdef.Какая у вас версия этого файла, как он установлен?Я использую WinIoCtl.h из VC ++ 2010. Возможно, вам нужно установить Windows SDK.

Возможно, ваш WinIoCtl.h поставляется из старой Visual Studio или SDK.Установите последнюю версию Visual Studio, если это невозможно - установите последнюю версию Microsoft Windows SDK и убедитесь, что ее каталог include указан первым в вашем компиляторе.

0 голосов
/ 01 октября 2011

Я использовал 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.

...