RtlUnalignedStringCbLengthW 함수(ntstrsafe.h)
RtlUnalignedStringCbLengthW 함수는 유니코드 문자 문자열에 대한 정렬되지 않은 포인터를 허용하는 RtlStringCbLength 함수의 버전입니다.
구문
NTSTRSAFEDDI RtlUnalignedStringCbLengthW(
[in] STRSAFE_PCUNZWCH psz,
[in] size_t cbMax,
[out, optional] size_t *pcbLength
);
매개 변수
[in] psz
길이 RtlUnalignedStringCbLengthW가 검사 null로 끝나는 문자열이 포함된 버퍼에 대한 포인터를 제공합니다.
[in] cbMax
종료 NULL 문자를 포함하여 psz 가 가리키는 버퍼에서 허용되는 최대 바이트 수를 제공합니다. 이 값은 NTSTRSAFE_MAX_CCH * sizeof(WCHAR)를 초과할 수 없습니다.
[out, optional] pcbLength
선택 사항입니다. 호출자가 NULL 이 아닌 주소 포인터를 제공하는 경우 함수는 psz 가 가리키는 버퍼에 포함된 문자열의 길이(바이트)로 주소를 로드합니다. 길이에는 문자열의 종결 NULL 문자가 포함되지 않습니다.
반환 값
RtlUnalignedStringCbLengthW 는 다음 NTSTATUS 값 중 하나를 반환합니다.
반환 코드 | 설명 |
---|---|
|
이 성공 상태 지정된 psz 매개 변수가 NULL이 아니며 문자열의 길이(종료 NULL 문자 포함)가 cbMax 바이트보다 작거나 같음을 의미합니다. |
|
이 오류 상태 psz의 값이 NULL이고 cbMax가 NTSTRSAFE_MAX_CCH * sizeof(WCHAR)보다 크거나 psz가 cbMax보다 길다는 것을 의미합니다. |
NTSTATUS 값을 테스트하는 방법에 대한 자세한 내용은 NTSTATUS 값 사용을 참조하세요.
설명
RtlUnalignedStringCbLengthW 함수는 Itanium 기반 및 x64 기반과 같은 프로세서 아키텍처에 사용할 수 있으며, 소프트웨어가 정렬되지 않은 데이터에 액세스하려고 할 때 정렬 예외가 발생합니다. 이러한 프로세서에서는 RtlStringCbLength 함수 대신 RtlUnalignedStringCbLengthW 를 사용하여 맞춤 예외 를 방지할 수 있습니다. (정렬 예외를 발생시키지 않는 프로세서의 경우 RtlUnalignedStringCbLengthW 는 RtlStringCbLength와 동일합니다.)
안전한 문자열 함수에 대한 자세한 내용은 안전한 문자열 함수 사용을 참조하세요.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows XP에서 SP1(서비스 팩 1) 이상 버전의 Windows에서 사용할 수 있습니다. |
대상 플랫폼 | 데스크톱 |
머리글 | ntstrsafe.h(Ntstrsafe.h 포함) |
라이브러리 | Ntstrsafe.lib |
IRQL | 조작되는 문자열이 항상 메모리에 상주하는 경우 이고, 그렇지 않으면 PASSIVE_LEVEL |