Strsafe.h 정보
버퍼 오버런을 포함하는 많은 보안 문제에 버퍼 처리가 잘못되었습니다. Strsafe.h에 정의된 함수는 코드에서 적절한 버퍼 처리를 위한 추가 처리를 제공합니다. 이러한 이유로 기본 제공 C/C++ 대응과 특정 Windows 구현을 대체하기 위한 것입니다. Strsafe.h는 Windows XP SP2(서비스 팩 2)부터 Windows SDK에서 사용할 수 있습니다.
Strsafe 함수의 장점은 다음과 같습니다.
대상 버퍼의 크기는 함수가 버퍼의 끝을 지나서 작성되지 않도록 항상 함수에 제공됩니다.
버퍼는 작업이 의도한 결과를 자르더라도 null로 종료되도록 보장됩니다.
모든 함수는 가능한 성공 코드(S_OK)만 사용하여 HRESULT 값을 반환합니다.
각 함수는 해당 문자 수("cch") 또는 바이트 수("cb") 버전에서 사용할 수 있습니다.
대부분의 함수에는 고급 기능에 사용할 수 있는 확장("Ex") 버전이 있습니다.
자세한 내용은 다음 섹션을 참조하세요.
문자 수 함수
다음 함수는 바이트 개수가 아닌 문자 수를 사용합니다.
함수 | 대체 |
---|---|
, | |
바이트 수 함수
다음 함수는 문자 수가 아닌 바이트 수를 사용합니다.
함수 | 대체 |
---|---|
Strsafe.h 사용
Strsafe 함수를 인라인으로 사용하려면 다른 모든 헤더 파일에 대한 #include 문에 따라 여기에 표시된 대로 헤더 파일을 포함합니다.
#include <strsafe.h>
라이브러리 형식의 함수를 사용하려면 Strsafe.h를 포함하기 전에 다음 문을 포함합니다. 그러나 인라인 함수를 사용하는 것이 좋습니다.
#define STRSAFE_LIB
참고 항목
: StringCbGets, StringCbGetsEx, StringCchGets 및 StringCchGetsEx 함수를 인라인 함수로 사용해야 합니다.
파일에 Strsafe.h를 포함하면 Strsafe.h 함수로 대체된 이전 함수는 더 이상 사용되지 않습니다. 이러한 이전 함수를 사용하려고 하면 최신 함수를 사용하라는 컴파일러 오류가 발생합니다. 이 동작을 재정의하려면 Strsafe.h를 포함하기 전에 다음 문을 포함합니다.
#define STRSAFE_NO_DEPRECATE
문자 수 함수만 허용하려면 Strsafe.h를 포함하기 전에 다음 문을 포함합니다.
#define STRSAFE_NO_CB_FUNCTIONS
바이트 개수 함수만 허용하려면 Strsafe.h를 포함하기 전에 다음 문을 포함합니다.
#define STRSAFE_NO_CCH_FUNCTIONS
참고 항목
STRSAFE_NO_CB_FUNCTIONS 또는 STRSAFE_NO_CCH_FUNCTIONS 정의할 수 있지만 둘 다 정의할 수는 없습니다.
일부 Strsafe 함수에는 로캘 인식 버전이 있습니다. 기본적으로 헤더는 이러한 함수를 선언하지 않습니다. 이러한 선언을 사용하려면 Strsafe.h를 포함하기 전에 다음 매크로 문을 포함합니다.
#define STRSAFE_LOCALE_FUNCTIONS
지원되는 최대 문자열 길이는 2,147,483,647(STRSAFE_MAX_CCH) 문자(ANSI 또는 유니코드)입니다.
관련 항목