Код пишется в wdk для драйвера фильтра. Код (Text): void foo(CHAR* sName){ CHAR s1[100]; strcpy(s1,sName); } build выводит ошибку "error C2220: warning treated as error - no 'object' file generated" на строке с "strcpy(s1,sName);" Подскажите в чем может быть дело? В ДДК для сервера2003 такого не было... Наверное я подзабыл основы С и теперь не пойму из-за чего происходит ошибка. Пробывал strcpyn, strcpy(&s1,sName)... Помогите кто может.
после использования включения #include <strsafe.h> при сборке free build появляется ошибка c:\winddk\6001.18002\inc\crt\stdio.h(268) : error C2220: warning treated as error - no 'object' file generated порядок модулей: #include <fltkernel.h> #include <dontuse.h> #include <suppress.h> #include <ntddk.h> #include <strsafe.h> так ли необходима компиляция в free build?
блин, эта ошибка означает что предупреждение согласно правилам сборки посчиталось за ошибку. но НИЖЕ идет текст самого предупреждения. следующую строчку с ворнингом тоже надо показывать, если хочешь ответа
Полный оутпут: Код (Text): BUILD: Compile and Link for x86 BUILD: Loading c:\winddk\6001.18002\build.dat... BUILD: Computing Include file dependencies: BUILD: Start time: Tue Jun 09 13:58:58 2009 BUILD: Examining j:\drivers\testfiltr directory for files to compile. BUILD: Saving c:\winddk\6001.18002\build.dat... BUILD: Compiling and Linking j:\drivers\testfiltr directory _NT_TARGET_VERSION SET TO WINXP Compiling - nullfilter.c errors in directory j:\drivers\testfiltr c:\winddk\6001.18002\inc\crt\stdio.h(268) : error C2220: warning treated as error - no 'object' file generated Linking Executable - objfre_wxp_x86\i386\nullfilter.sys link : error LNK1181: cannot open input file 'j:\drivers\testfiltr\objfre_wxp_x86\i386\nullfilter.obj' BUILD: Finish time: Tue Jun 09 13:59:05 2009 BUILD: Done 3 files compiled - 15 Warnings - 1 Error - 713 LPS 1 executable built - 1 Error Файл сурсес: Код (Text): TARGETNAME=nullFilter TARGETTYPE=DRIVER DRIVERTYPE=FS TARGETLIBS= $(TARGETLIBS) \ $(IFSKIT_LIB_PATH)\fltMgr.lib SOURCES=nullFilter.c \ nullFilter.rc
фу функция гипотетическая и написана только для форума, чтобы показать на чем ошибка. Но дело не в том... а в том, что ошибку выдает на системной библиотеке. Как бы она не является ошибкой, а просто предупреждением и фри сборка более критична к предупреждениям поэтому и дает ошибку в отличе от чекед сборки, которая игнорирует предупреждения. Так ли оно опасно?
А вот у меня мой чистый C-компилятор не допускает локальные переменные такие как массив, т.е. должно быть так: Код (Text): CHAR s1[100]; void foo(CHAR* sName){ strcpy(s1,sName); }
int2eh Я так понимаю, если уж переполнять буфер так масштабно, а не внутри функции... -------- Подскажите по реальному коду: Код (Text): FltCancelFileOpen( FltObjects->Instance, FltObjects->FileObject ); Data->IoStatus.Status = STATUS_ACCESS_DENIED; Data->IoStatus.Information = 0; status = FLT_POSTOP_FINISHED_PROCESSING; return status; Почему он вызывает бсод с PAGE_FAULT_IN_NONPAGED_AREA и кодом 50. Использовал кусок кода из рабочего примера минифильтра scanner из вдк. Причем ошибка может и не появится... Но как правило все-таки происходит.
А почему ты запрещаешь операцию в Post-create, а не в Pre-create? Для этого есть какие-то особые причины? Если нет, тогда это следует делать в Pre-create. Уже обсуждалось.