CHString::FormatMessageW(UINT,...) 메서드(chstring.h)

[CHString 클래스는 현재 최종 상태로 간주되는 WMI 공급자 프레임워크의 일부로, 이 라이브러리에 영향을 미치는 보안과 관련되지 않은 문제에 대해서는 더 이상 개발, 개선 또는 업데이트가 이루어지지 않습니다. MI API는 모든 새 개발에 사용해야 합니다.]

FormatMessageW 메서드는 메시지 문자열의 형식을 지정합니다.

구문

void  throw(CHeap_Exception) FormatMessageW(
  UINT nFormatID,
  ...  
);

매개 변수

nFormatID

형식이 지정되지 않은 메시지 텍스트를 포함하는 문자열 리소스 식별자입니다.

...

인수 목록입니다.

반환 값

CHeap_Exception

설명

FormatMessageW 메서드에는 메시지 정의가 입력으로 필요합니다. 메시지 정의는 lpszFormat 또는 nFormatID로 식별된 문자열 리소스에서 결정됩니다. 메서드는 형식이 지정된 메시지 텍스트를 CHString 문자열에 복사하여 요청된 경우 포함된 삽입 시퀀스를 처리합니다.

각 삽입에는 lpszFormat 또는 nFormatID 매개 변수 뒤에 해당하는 매개 변수가 있어야 합니다. 메시지 텍스트 내에서 메시지 서식을 동적으로 지정하기 위해 여러 이스케이프 시퀀스가 지원됩니다. 이러한 이스케이프 시퀀스와 그 의미에 대한 설명은 Windows FormatMessage 함수 항목을 참조하세요.

참고 보안 공격에 대한 노출을 줄이려면 항상 FormatMessageW에 형식 문자열을 사용합니다. 예를 들어 FormatMessageW(input) 는 악용 가능하고 FormatMessageW("%s", input) 는 악용할 수 없습니다. 형식 문자열에 대해 사용자가 제공한 문자열을 사용하지 마세요. 형식 문자열이 지역화와 같은 목적으로 저장되는 경우 문자열이 무단 쓰기 액세스로부터 보호되는지 확인합니다. 함수가 표준 출력이 아닌 문자열에 쓰는 경우 형식 문자열에서 후행 "%s"을(를) 사용하지 않아야 할 수 있습니다.

예제

다음 코드 예제에서는 CHString::FormatMessageW를 사용하는 방법을 보여 줍니다.

CHString str;
int nAsked = 5;
int nAgree = 4;

str.FormatMessageW(L"%1!d! of %2!d! developers agree: Golf is %3%!", 
   nAgree, nAsked, L"Best");
assert(str == L"4 of 5 developers agree: Golf is Best!");

요구 사항

요구 사항
헤더 chstring.h

추가 정보

CHString

CHString::Format