Форум программистов, компьютерный форум, киберфорум
Программирование драйверов
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
117 / 121 / 42
Регистрация: 25.08.2012
Сообщений: 1,294

Множественные ошибки в заголовочных файлах

14.10.2015, 13:14. Показов 3313. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Компилятор DDK выдает кучу ошибок в его же заголовках — winbase.h, wdm.h, ntdef.h, там выходит около сотни ошибок. Основная масса жалуется на переопределение. Вот список заголовков:

C
1
2
3
4
5
6
7
8
#include <Windows.h>
#include <initguid.h>
#include <ndis.h>
#include <wdm.h>
#include <fwpmk.h>
#include <fwpsk.h>
#include <stdio.h>
#include <time.h>
Может, порядок перепутан? Или забыл чего подключить.

DDK последний вроде, 7600.16385.1

Добавлено через 8 минут
Может, библиотеки подключить нужно какие?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.10.2015, 13:14
Ответы с готовыми решениями:

Ошибки в стандартных заголовочных файлах при компиляции проекта
Старый проект на С++ пытаюсь скомпилировать в VS2008 выдает 66 ошибкок в файлах: string.h atalloc.h wchar.h atlchecked.h ...

Про добавление заголовочных файлов в заголовочных файлах
В который раз эта вещь засовывает мозги в блендер! Я про то, что не могу однозначно запомнить (основываясь на моих знаниях о директиве...

Константы в заголовочных файлах
declare.h #pragma once extern const size_t rows; extern const size_t cols; double initMatrixInput(double matrix);

17
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
14.10.2015, 13:17
Довольно жутковато видеть в одном "седле" и Windows.h, и wdm.h, и stdio.h...
printf в драйвере, да ? И еще там же будет NET_BUFFER с list control ?
0
117 / 121 / 42
Регистрация: 25.08.2012
Сообщений: 1,294
14.10.2015, 13:47  [ТС]
Это, кхм, отладочная версия. Конечно, там fprintf, для ведения какого-то подобия лога работы — надо ведь знать, чем там драйвер занимается.

Добавлено через 19 минут
Все то же самое, он хрен знает откуда берет переопределения для объектов. Хм... Может, я неправильно компилирую. Это обычная программа, добавляющая фильтр, в WFP, компилирую через стандартный компилятор VS 2015. Впрочем, то же самое и с драйвером, только ошибки в той консольке.
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
14.10.2015, 13:58
В ядре нет fprintf. Надо писать в лог или в отладчик - используй
DbgPrint/KdPrint или WPP Tracing или Event Log.
Если собирается драйвер, включать <windows.h>, <cstdio> и
прочие стандартные заголовки из WinSDK, C или C++ нельзя,
только <wdm.h>, <ntifs.h>, <ntddk.h> и т.п. И наоборот: для
обычных десктопных проектов драйверные заголовки не подойдут.
1
117 / 121 / 42
Регистрация: 25.08.2012
Сообщений: 1,294
14.10.2015, 19:13  [ТС]
Убежденный, не знал, спасибо. Так или иначе, ничего не изменилось. Ладно, попробую переустановить ddk, авось

Добавлено через 4 часа 7 минут
Убежденный, нет, не помогло. Компиляция драйвера выблевывает тонны ошибок в заголовочных файлах, а их там всего три:
C
1
2
#include <fwpsk.h>
#include <wdm.h>
+ ndis.h, который подключается через первый файл.

Самое интересное, опять не поддерживаются NET_BUFFER-структуры и связанные с ним макросы. По работе условной компиляции можно предположить, что компилятор тупо не видит, что у меня версия NDIS больше шести. Я уже не знаю, что тут происходит. Тестовый драйвер идет без проблем, только WFP уровня ядра никак не идет. Нет идей?
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
14.10.2015, 19:26
Цитата Сообщение от tnk500 Посмотреть сообщение
Нет идей?
1) Выложить весь код, воспроизводящий проблему.
2) Написать, какие инструменты/IDE используются и каким образом.

Из текста выше непонятно даже, какая версия VS/WDK/DDK используется...
0
117 / 121 / 42
Регистрация: 25.08.2012
Сообщений: 1,294
14.10.2015, 20:04  [ТС]
Убежденный, код:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
#include <fwpsk.h>
#include <wdm.h>
 
#define WorkError(fnName, label) \
    if (status != STATUS_SUCCESS) \
    { \
        DbgPrint(#fnName ": Error 0x%08X\n", status); \
        goto label; \
    } \
 
/* ****************************************
*   Prototypes of functions                                   *
******************************************/
 
void UnLoad(IN DRIVER_OBJECT* DObject);
void NTAPI InjectionCompletionFn(
    IN void* context,
    IN OUT NET_BUFFER_LIST* netBufferList,
    IN BOOLEAN dispatchLevel
)
{
    FwpsFreeCloneNetBufferList0(netBufferList, 0);
}
void _stdcall OnClassify(
    __in    FWPS_INCOMING_VALUES0 const           * pInFixedValues,
    __in    FWPS_INCOMING_METADATA_VALUES0 const  * pInMetaValues,
    __out   VOID                                  * pLayerData,
    __in    FWPS_FILTER0 const                    * pFilter,
    __in    UINT64                                  FlowContext,
    __out   FWPS_CLASSIFY_OUT0                    * pClassifyOut);
 
NTSTATUS _stdcall OnNotify(
    IN FWPS_CALLOUT_NOTIFY_TYPE notifyType,
    IN const GUID  *filterKey,
    __inout FWPS_FILTER0  *filter);
 
void _stdcall OnFlowDelete(
    IN UINT16  layerId,
    IN UINT32  calloutId,
    IN UINT64  flowContext);
 
/* End of Prototypes */
 
/* ****************************************
*   Data Block                                                     *
******************************************/
 
static const GUID CALLOUT_KEY =
{ 0x4352b792, 0xe38c, 0x4e9a, { 0xb5, 0xf3, 0x24, 0x23, 0x79, 0x10, 0x2a, 0xbf } };
 
HANDLE inject;
PDEVICE_OBJECT pObj;
UINT32 calloutID;
 
const FWPS_CALLOUT0 Callout =
{
    { 0x4352b792, 0xe38c, 0x4e9a, { 0xb5, 0xf3, 0x24, 0x23, 0x79, 0x10, 0x2a, 0xbf } },
    0,       // Callout-specific flags (none set here)
    OnClassify,
    OnNotify,
    OnFlowDelete
};
 
/* End of Data Block */
 
 
NTSTATUS NTAPI DriverEntry(IN PDRIVER_OBJECT DObj,
                     IN PUNICODE_STRING RegPath)
{
    DbgPrint("The begining of the session.\n");
    
    DObj->DriverUnload = UnLoad;
 
    NTSTATUS status = IoCreateDevice(DObj, 0, 0, FILE_DEVICE_UNKNOWN,
        FILE_DEVICE_SECURE_OPEN, 0, &pObj);
    WorkError(IoCreateDevice, CleanInEntry);
 
    status = FwpsCalloutRegister0((void*)pObj, &Callout, &calloutID);
    WorkError(FwpsCalloutRegister0, CleanInEntry);
 
 
CleanInEntry:
    return status;
}
 
VOID UnLoad(IN DRIVER_OBJECT* DObject)
{
    NTSTATUS status = FwpsCalloutUnregisterById(calloutID);
    if (status == STATUS_DEVICE_BUSY)
    {
        
    }
    
    WorkError(FwpsCalloutUnregisterById0, CleanInClose);
    status = FwpsInjectionHandleDestroy0(inject);
    WorkError(FwpsInjectionHandleDestroy0, CleanInClose);
 
CleanInClose:
    IoDeleteDevice(pObj);
    DbgPrint("\nThe end of a session.\n-------------------------------------\n\n");
}
 
 
NTSTATUS _stdcall OnNotify(
    IN FWPS_CALLOUT_NOTIFY_TYPE notifyType,
    IN const GUID  *filterKey,
    IN const FWPS_FILTER0  *filter)
{
    switch (notifyType)
    {
        case FWPS_CALLOUT_NOTIFY_ADD_FILTER:
            DbgPrint("Filter %lld has been added.\n", filter->filterId);
            break;
        case FWPS_CALLOUT_NOTIFY_DELETE_FILTER:
            DbgPrint("Filter %lld has been deleted.\n", filter->filterId);      
    }
 
    return STATUS_SUCCESS;
}
 
void
NTAPI
InjectionCompletionFn(
    IN void* context,
    IN OUT NET_BUFFER_LIST* netBufferList,
    IN BOOLEAN dispatchLevel)
{
    tt = time(0);
    if (netBufferList->Status == NDIS_STATUS_SUCCESS)   
        DbgPrint("Injection has been completed.\n");
    else
        DbgPrint("Injection has been failed.\n");
    FwpsFreeCloneNetBufferList0(netBufferList, 0);
}
 
void _stdcall OnClassify(
    __in    FWPS_INCOMING_VALUES0 const           * pInFixedValues,
    __in    FWPS_INCOMING_METADATA_VALUES0 const  * pInMetaValues,
    __out   VOID                                  * pLayerData,
    __in    FWPS_FILTER0 const                    * pFilter,
    __in    UINT64                                  FlowContext,
    __out   FWPS_CLASSIFY_OUT0                    * pClassifyOut)
{
    NTSTATUS status = STATUS_SUCCESS;
 
    NET_BUFFER_LIST* netBufferList = (NET_BUFFER_LIST*)pLayerData;
    NET_BUFFER_LIST* clonedNetBufferList = NULL;
    FWPS_PACKET_INJECTION_STATE injectionState;
 
    injectionState = FwpsQueryPacketInjectionState0(
        inject,
        netBufferList,
        NULL);
 
    if (injectionState == FWPS_PACKET_INJECTED_BY_SELF ||
        injectionState == FWPS_PACKET_PREVIOUSLY_INJECTED_BY_SELF)
    {
        pClassifyOut->actionType = FWP_ACTION_PERMIT;
        pClassifyOut->rights &= ~FWPS_RIGHT_ACTION_WRITE;
        return;
    }
    if (!(pClassifyOut->rights & FWPS_RIGHT_ACTION_WRITE))
        goto Exit;
 
    NET_BUFFER* buf;
    int sizeOfPackage = 0;
 
    if (FWPS_IS_METADATA_FIELD_PRESENT(pInMetaValues, FWPS_METADATA_FIELD_TRANSPORT_HEADER_SIZE))
        sizeOfPackage -= pInMetaValues->transportHeaderSize;
    for (buf = NET_BUFFER_LIST_FIRST_NB(netBufferList); buf != 0;
        buf = NET_BUFFER_NEXT_NB(buf))
        sizeOfPackage += NET_BUFFER_DATA_LENGTH(NET_BUFFER_LIST_FIRST_NB(netBufferList));
    
    if (sizeOfPackage < 190 || pInFixedValues->layerId != FWPS_LAYER_DATAGRAM_DATA_V4)
    {
        pClassifyOut->actionType = FWP_ACTION_PERMIT;
        goto Exit;
    }
    
    status = FwpsAllocateCloneNetBufferList0(netBufferList, 0, 0,
        0, &clonedNetBufferList);
    
    int j = 0, where;
    char strr[14];
 
    for (buf = NET_BUFFER_LIST_FIRST_NB(clonedNetBufferList); buf != 0;
        buf = NET_BUFFER_NEXT_NB(buf))
    {
        int sizeOfBlock = NET_BUFFER_DATA_LENGTH(buf) - (buf == NET_BUFFER_LIST_FIRST_NB(clonedNetBufferList) ?
            (FWPS_IS_METADATA_FIELD_PRESENT(pInMetaValues, FWPS_METADATA_FIELD_TRANSPORT_HEADER_SIZE) ?
            pInMetaValues->transportHeaderSize : 0) : 0);
                 
                        .....       
    }   
Exit:
    if (clonedNetBufferList)
        FwpsFreeCloneNetBufferList(clonedNetBufferList, 0);
    if (!NT_SUCCESS(status))
    {
        pClassifyOut->actionType = FWP_ACTION_BLOCK;
        pClassifyOut->rights &= ~FWPS_RIGHT_ACTION_WRITE;
    }
}
VS 2015, пока компилирую с помощью DDK 7.1.0
Код, понятно, в студии пишу ради автокомплита и т.д. Компиляция — с помощью Build Environments. Ошибки замечаются только в заголовочных файлах. Файл sources тривиален:
Code
1
2
3
TARGETNAME=CalloutDriver
TARGETTYPE=DRIVER
SOURCES=DriverEntry.c
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
14.10.2015, 20:16
Какие ошибки-то ?
0
117 / 121 / 42
Регистрация: 25.08.2012
Сообщений: 1,294
14.10.2015, 20:27  [ТС]
Лог-файл
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
...
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1902) : error C2081: 'NET_BUFFER_LIST' : name in formal parameter list illegal
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1902) : error C2081: 'NET_BUFFER_LIST' : name in formal parameter list illegal
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1916) : error C2143: syntax error : missing ')' before '*'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1916) : error C2081: 'NET_BUFFER_LIST' : name in formal parameter list illegal
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1916) : error C2081: 'NET_BUFFER_LIST' : name in formal parameter list illegal
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1917) : error C2059: syntax error : ')'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1917) : error C2059: syntax error : ')'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1917) : error C2040: 'netBufferList' : 'int **' differs in levels of indirection from 'int *'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1917) : error C2040: 'netBufferList' : 'int **' differs in levels of indirection from 'int *'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1923) : error C2143: syntax error : missing '{' before '*'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1923) : error C2143: syntax error : missing '{' before '*'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1924) : error C2059: syntax error : ')'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1924) : error C2059: syntax error : ')'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1930) : error C2143: syntax error : missing ')' before '*'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1930) : error C2143: syntax error : missing ')' before '*'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1930) : error C2143: syntax error : missing '{' before '*'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1930) : error C2143: syntax error : missing '{' before '*'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1931) : error C2040: 'NDIS_HANDLE' : 'int' differs in levels of indirection from 'PVOID'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1931) : error C2040: 'NDIS_HANDLE' : 'int' differs in levels of indirection from 'PVOID'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1931) : error C2146: syntax error : missing ';' before identifier 'netBufferListPoolHandle'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1931) : error C2146: syntax error : missing ';' before identifier 'netBufferListPoolHandle'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1932) : error C2059: syntax error : 'type'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1932) : error C2059: syntax error : 'type'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1935) : error C2059: syntax error : ')'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1935) : error C2059: syntax error : ')'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1941) : error C2143: syntax error : missing ')' before '*'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1941) : error C2143: syntax error : missing ')' before '*'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1941) : error C2143: syntax error : missing '{' before '*'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1941) : error C2143: syntax error : missing '{' before '*'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1942) : warning C4142: benign redefinition of type
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1942) : warning C4142: benign redefinition of type
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1942) : error C2370: 'ULONG' : redefinition; different storage class
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1942) : error C2370: 'ULONG' : redefinition; different storage class
1> c:\winddk\7600.16385.1\inc\api\ntdef.h(561) : see declaration of 'ULONG'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1942) : error C2146: syntax error : missing ';' before identifier 'freeCloneFlags'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1942) : error C2146: syntax error : missing ';' before identifier 'freeCloneFlags'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1943) : error C2059: syntax error : ')'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1943) : error C2059: syntax error : ')'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1952) : error C2143: syntax error : missing ')' before '*'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1952) : error C2143: syntax error : missing ')' before '*'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1952) : error C2081: 'NET_BUFFER_LIST' : name in formal parameter list illegal
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1952) : error C2081: 'NET_BUFFER_LIST' : name in formal parameter list illegal
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1952) : error C2143: syntax error : missing '{' before '*'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1952) : error C2143: syntax error : missing '{' before '*'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1953) : error C2040: 'NDIS_HANDLE' : 'int' differs in levels of indirection from 'PVOID'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1953) : error C2040: 'NDIS_HANDLE' : 'int' differs in levels of indirection from 'PVOID'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1953) : error C2146: syntax error : missing ';' before identifier 'netBufferAndNetBufferListPoolHandle'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1953) : error C2146: syntax error : missing ';' before identifier 'netBufferAndNetBufferListPoolHandle'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1954) : error C2059: syntax error : 'type'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1954) : error C2059: syntax error : 'type'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1957) : error C2059: syntax error : ')'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1957) : error C2059: syntax error : ')'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1969) : error C2143: syntax error : missing ')' before '*'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1969) : error C2143: syntax error : missing ')' before '*'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1969) : error C2081: 'NET_BUFFER_LIST' : name in formal parameter list illegal
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1969) : error C2081: 'NET_BUFFER_LIST' : name in formal parameter list illegal
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1969) : error C2143: syntax error : missing '{' before '*'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1969) : error C2143: syntax error : missing '{' before '*'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1970) : error C2146: syntax error : missing ';' before identifier 'completionFn'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1970) : error C2146: syntax error : missing ';' before identifier 'completionFn'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1971) : error C2059: syntax error : 'type'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1971) : error C2059: syntax error : 'type'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1972) : error C2059: syntax error : ')'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1972) : error C2059: syntax error : ')'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1984) : error C2143: syntax error : missing ')' before '*'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1984) : error C2143: syntax error : missing ')' before '*'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1984) : error C2081: 'NET_BUFFER_LIST' : name in formal parameter list illegal
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1984) : error C2081: 'NET_BUFFER_LIST' : name in formal parameter list illegal
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1984) : error C2143: syntax error : missing '{' before '*'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1984) : error C2143: syntax error : missing '{' before '*'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1985) : error C2146: syntax error : missing ';' before identifier 'completionFn'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1985) : error C2146: syntax error : missing ';' before identifier 'completionFn'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1986) : error C2059: syntax error : 'type'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1986) : error C2059: syntax error : 'type'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1987) : error C2059: syntax error : ')'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1987) : error C2059: syntax error : ')'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1996) : warning C4142: benign redefinition of type
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1996) : warning C4142: benign redefinition of type
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1996) : error C2370: 'ULONG' : redefinition; different storage class
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1996) : error C2370: 'ULONG' : redefinition; different storage class
1> c:\winddk\7600.16385.1\inc\api\ntdef.h(561) : see declaration of 'ULONG'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1996) : error C2146: syntax error : missing ';' before identifier 'headerIncludeHeaderLength'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1996) : error C2146: syntax error : missing ';' before identifier 'headerIncludeHeaderLength'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1997) : error C2059: syntax error : 'type'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(1997) : error C2059: syntax error : 'type'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(2008) : error C2059: syntax error : ')'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(2008) : error C2059: syntax error : ')'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(2023) : error C2143: syntax error : missing ')' before '*'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(2023) : error C2143: syntax error : missing ')' before '*'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(2023) : error C2081: 'NET_BUFFER_LIST' : name in formal parameter list illegal
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(2023) : error C2081: 'NET_BUFFER_LIST' : name in formal parameter list illegal
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(2023) : error C2143: syntax error : missing '{' before '*'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(2023) : error C2143: syntax error : missing '{' before '*'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(2024) : error C2146: syntax error : missing ';' before identifier 'completionFn'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(2024) : error C2146: syntax error : missing ';' before identifier 'completionFn'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(2025) : error C2059: syntax error : 'type'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(2025) : error C2059: syntax error : 'type'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(2026) : error C2059: syntax error : ')'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(2026) : error C2059: syntax error : ')'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(2041) : error C2143: syntax error : missing ')' before '*'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(2041) : error C2143: syntax error : missing ')' before '*'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(2041) : error C2081: 'NET_BUFFER_LIST' : name in formal parameter list illegal
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(2041) : error C2081: 'NET_BUFFER_LIST' : name in formal parameter list illegal
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(2041) : error C2143: syntax error : missing '{' before '*'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(2041) : error C2143: syntax error : missing '{' before '*'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(2042) : error C2146: syntax error : missing ';' before identifier 'completionFn'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(2042) : error C2146: syntax error : missing ';' before identifier 'completionFn'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(2043) : error C2059: syntax error : 'type'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(2043) : error C2059: syntax error : 'type'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(2044) : error C2059: syntax error : ')'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(2044) : error C2059: syntax error : ')'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(2060) : error C2143: syntax error : missing ')' before '*'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(2060) : error C2143: syntax error : missing ')' before '*'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(2060) : error C2081: 'NET_BUFFER_LIST' : name in formal parameter list illegal
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(2060) : error C2081: 'NET_BUFFER_LIST' : name in formal parameter list illegal
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(2060) : error C2143: syntax error : missing '{' before '*'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(2075) : error C2143: syntax error : missing ')' before '*'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(2075) : error C2081: 'NET_BUFFER_LIST' : name in formal parameter list illegal
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(2075) : error C2081: 'NET_BUFFER_LIST' : name in formal parameter list illegal
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(2075) : error C2143: syntax error : missing '{' before '*'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(2075) : error C2143: syntax error : missing '{' before '*'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(2076) : error C2146: syntax error : missing ';' before identifier 'completionFn'
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(2148) : fatal error C1003: error count exceeds 100; stopping compilation
1>c:\winddk\7600.16385.1\inc\api\fwpsk.h(2148) : error C1003: error count exceeds 100; stopping compilation
1> C:\WinDDK\7600.16385.1\Bin\x86\oacr\oacrlink /out:c:\users\abdulla\documents\projects\wpfdriverw32\wpfdriverw32\objfre_win7_x86\i386\CalloutDriver.sys /machine:ix86 @c:\users\abdulla\documents\projects\wpfdriverw32\wpfdriverw32\objfre_win7_x86\i386\lnk.rsp
1>Microsoft (R) Incremental Linker Version 9.00.30729.207
1>Copyright (C) Microsoft Corporation.  All rights reserved.
1>/MERGE:_PAGE=PAGE 
1>/MERGE:_TEXT=.text 
1>/SECTION:INIT,d 
1>/OPT:REF 
1>/OPT:ICF 
1>/IGNORE:4198,4010,4037,4039,4065,4070,4078,4087,4089,4221 
1>/INCREMENTAL:NO 
1>/release 
1>/NODEFAULTLIB 
1>/WX 
1>/debug 
1>/debugtype:cv,fixup,pdata 
1>/version:6.1 
1>/osversion:6.1 
1>/functionpadmin:5 
1>/safeseh 
1>/pdbcompress 
1>/STACK:0x40000,0x1000 
1>/driver 
1>/base:0x10000 
1>/subsystem:native,6.01 
1>/entry:GsDriverEntry@8 
1>/out:c:\users\abdulla\documents\projects\wpfdriverw32\wpfdriverw32\objfre_win7_x86\i386\CalloutDriver.sys 
1>c:\users\abdulla\documents\projects\wpfdriverw32\wpfdriverw32\objfre_win7_x86\i386\driverentry.obj 
1>C:\WinDDK\7600.16385.1\lib\win7\i386\BufferOverflowK.lib 
1>C:\WinDDK\7600.16385.1\lib\win7\i386\ntoskrnl.lib 
1>C:\WinDDK\7600.16385.1\lib\win7\i386\hal.lib 
1>C:\WinDDK\7600.16385.1\lib\win7\i386\wmilib.lib 
1>LINK : fatal error LNK1181: cannot open input file 'c:\users\abdulla\documents\projects\wpfdriverw32\wpfdriverw32\objfre_win7_x86\i386\driverentry.obj'
1>link : error LNK1181: cannot open input file 'c:\users\abdulla\documents\projects\wpfdriverw32\wpfdriverw32\objfre_win7_x86\i386\driverentry.obj'


Тут заметил, что большая часть относится к NET_BUFFER-структурам, то ли не определяются они, то ли еще что. Как я писал, условный компилятор в VISUAL STUDIO считает, что у меня версия NDIS меньше 6, правда, не знаю, как дела обстоят с компилятором WDDK
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
14.10.2015, 21:15
Лучший ответ Сообщение было отмечено tnk500 как решение

Решение

Добавь в файл sources вот такую строчку:
Code
1
C_DEFINES=$(C_DEFINES) -DNDIS_SUPPORT_NDIS6
1
117 / 121 / 42
Регистрация: 25.08.2012
Сообщений: 1,294
14.10.2015, 21:24  [ТС]
Убежденный, замечательно, молодец :)

Стоп, там что, стандарт Си 89 года используется?!
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
14.10.2015, 21:35
В Windows драйверы принято писать на C (хотя при желании
можно и на C++, на Delphi и даже на PureBasic, например).
0
117 / 121 / 42
Регистрация: 25.08.2012
Сообщений: 1,294
14.10.2015, 21:43  [ТС]
Убежденный, нет, я имею в виду, здесь нельзя объявлять переменные посередине блока, а только в самом начале области. Бреееед, 2015 год на дворе...
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
14.10.2015, 21:47
Цитата Сообщение от tnk500 Посмотреть сообщение
Бреееед
Ах, как много еще впереди удивительных разочарований открытий !
))
0
117 / 121 / 42
Регистрация: 25.08.2012
Сообщений: 1,294
14.10.2015, 21:56  [ТС]
Убежденный, например? Не люблю сюрпризов, особенно от Microsoft
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
14.10.2015, 22:34
Например, Kernel Patch Protection, Driver Signature Enforcement,
Device Guard, Win8.1 PPL, TDI Deprecation, SHA-1 Deprecation,
Secure Boot, Virtual Secure Mode, SMEP, Code Integrity Policy,
Exploit Mitigations и еще много всего.

Microsoft с каждым релизом Windows все больше и больше
"зажимает гайки". Например, удаляет какой-нибудь полезный API
из системы, а взамен ничего не дает.

Программирование в ядре - это выживание в условиях крайнего севера:
либо ты приспосабливаешься, либо замерзаешь.
1
117 / 121 / 42
Регистрация: 25.08.2012
Сообщений: 1,294
14.10.2015, 23:04  [ТС]
Убежденный, в UNIX-системах та же обстановка?
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
14.10.2015, 23:05
Без понятия.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.10.2015, 23:05
Помогаю со студенческими работами здесь

О стандартных заголовочных файлах
Не знаю в какую категорию отнести данное нубство, но все же: Часто использую некоторые возможности/функции для которых не делал...

Массивы в заголовочных файлах
в заголовочном файле в описании класса пишу: int _const_iMas = {0x63,0x7c,0x78,0x79}; В итоге компилятор подчёркивает знак '='...

Линковка, реализация в заголовочных файлах
Ситуация следующая. Представим себет хедер, который содержит некоторый функционал и должен использоваться в нескольких проектах. Причем ...

Определение переменных в заголовочных файлах
Здорова! Определил переменную в заголовочном фале от так #pragma once #ifndef _imya_zagol_fayla #define _imya_zagol_fayla ...

Расположение определения функций в заголовочных файлах
grizlik78, Часто вижу что приватную секцию указывают внизу, интересно, зачем? Вроде удобнее расположить приватные члены класса в самом...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
[В процессе разработки] SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru