Эта проблема может быть не так легко решить, как вы сначала думаете.Почему я не могу объявить переменную, структура которой определена?
FILTER_MESSAGE_HEADER является структура, определенная в заголовочном файле fltUserStructures.h, который является стандартным заголовочный файл Windows SDK находится в SDK включает путь, т.е.
"C:\Program Files (x86)\Windows Kits\8.0\Include\shared\fltUserStructures.h".
typedef struct _FILTER_MESSAGE_HEADER {
//
// OUT
//
// Total buffer length in bytes, including the FILTER_REPLY_HEADER, of
// the expected reply. If no reply is expected, 0 is returned.
//
ULONG ReplyLength;
//
// OUT
//
// Unique Id for this message. This will be set when the kernel message
// satifies this FilterGetMessage or FilterInstanceGetMessage request.
// If replying to this message, this is the MessageId that should be used.
//
ULONGLONG MessageId;
//
// General filter-specific buffer data follows...
//
} FILTER_MESSAGE_HEADER, *PFILTER_MESSAGE_HEADER;
Однако, следующий код не может быть составленный VC++ 2012.
#include <fltUserStructures.h>
int main()
{
//
// error C2065: 'FILTER_MESSAGE_HEADER' : undeclared identifier
//
FILTER_MESSAGE_HEADER v;
}
или
#define NTDDI_VERSION 0x06000000 // Vista or later
#include <FltUser.h>
int main()
{
//
// fltuserstructures.h(27): fatal error C1012:
// unmatched parenthesis : missing ')'
//
FILTER_MESSAGE_HEADER v;
}
Хотя я пробовал много методов, компилятор всегда отклонил приведенный выше код. В чем причина?
Для тех из нас, у кого нет установленных SDK Windows, как выглядит определение структуры? – duskwuff
Попробуйте включить FltUser.h вместо –
@ André, в том числе FltUser.h вместо этого создаст еще одну ошибку: фатальная ошибка C1012: несогласованная скобка: missing ')' – xmllmx