ntstrsafe.h

Jan 24, 2011 22:44

пошел на поводу у 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 .

url, windows, programming, driver coding environment, c

Previous post Next post
Up