пошел на поводу у OACR - заменил в драйвере sprintf на sprintf_s , сделал #include для этого, а оно перестало собираться:
error LNK2019: unresolved external symbol _sprintf_s referenced in function _KbfInit@4
Порекомендовали включить ntstrsafe.h, после чего sprintf_s по прежнему unresolved, однако спустя некоторое время гугления дошло таки посмотреть поплотнее в ntstrsafe.h и поискать там sprintf - как оказалось в ntsrsafe.h живет дофига замен строковым функциям, но вот только называются они совсем не как для вывода в терминал в юзермоде (например для CRT аналог sprintf - sprintf_s), а RtlString* .
соответственно надо было после всех #include:
// for sprintf & other string functions safe replacements:
#define NTSTRSAFE_LIB
#include
в sources:
TARGETLIBS=$(DDK_LIB_PATH)\ntstrsafe.lib
ну и далее использоваться подходящую RtlString* ф-ию из ntstrsafe.h, а про sprintf_s для ДДК забыть ибо оно токо для CRT, насколько я понял.
In English: Seems that sprintf_s and similar are only for CRT (not for drivers, i.e. not for DDK), and similar to sprintf_s functions are defined in and called RtlString* .
And an explanation from MSDN:
http://msdn.microsoft.com/en-us/library/ff565508%28v=VS.85%29.aspx PS: И еще стоит помнить, что эти ф-ии могут быть RtlString*A и RtlString*W .