RtlInitAnsiString 함수(wdm.h)
RtlInitAnsiString 루틴은 계산된 ANSI 문자 문자열을 초기화합니다.
구문
NTSYSAPI VOID RtlInitAnsiString(
[out] PANSI_STRING DestinationString,
[in, optional] __drv_aliasesMem PCSZ SourceString
);
매개 변수
[out] DestinationString
초기화할 ANSI_STRING 구조체에 대한 포인터입니다.
[in, optional] SourceString
null로 끝나는 문자열에 대한 포인터입니다. 이 문자열은 DestinationString에서 가리키는 계산된 문자열을 초기화하는 데 사용됩니다.
반환 값
없음
설명
이 루틴은 계산된 문자열을 초기화합니다.
루틴은 SourceString 포인터 값을 DestinationString이 가리키는 ANSI_STRING 구조체의 Buffer 멤버에 복사합니다. 이 구조체의 Length 멤버는 종료 null을 제외한 원본 문자열의 길이(바이트)로 설정됩니다. 구조체의 MaximumLength 멤버는 종료 null을 포함하여 원본 문자열의 길이(바이트)로 설정됩니다. SourceString이 NULL이면 Length 및 MaximumLength가 모두 0으로 설정됩니다.
RtlInitAnsiString 은 SourceString이 가리키는 원본 문자열을 변경하지 않습니다.
원본 문자열이 MAXUSHORT - 1바이트보다 긴 경우 RtlInitAnsiString은 DestinationString이 가리키는 ANSI_STRING 구조체의 Length 멤버를 MAXUSHORT - 1로 설정하고 이 구조체의 MaximumLength 멤버를 MAXUSHORT로 설정합니다. 이 경우 Length 및 MaximumLength 값은 null로 끝나는 원본 문자열의 길이를 잘못 나타내며 이러한 값의 정확도에 의존하는 것은 잠재적으로 위험할 수 있습니다.
DestinationString 버퍼를 연결할 수 없는 경우 RtlInitAnsiString의 호출자는 IRQL <= DISPATCH_LEVEL 실행할 수 있습니다. 대부분의 다른 RtlXxx문자열 루틴은 IRQL PASSIVE_LEVEL 호출할 수 없으므로 일반적으로 호출자는 IRQL > = PASSIVE_LEVEL 실행됩니다.
RTL_CONSTANT_STRING 매크로는 계산된 문자열을 저장할 문자열 또는 유니코드 문자열 구조를 만듭니다.
STRING RTL_CONSTANT_STRING(
[in] PCSZ SourceString
);
UNICODE_STRING RTL_CONSTANT_STRING(
[in] PCWSTR SourceString
);
RTL_CONSTANT_STRING 문자열 구조 또는 유니코드 문자열 구조를 반환합니다.
RTL_CONSTANT_STRING 매크로는 상수 문자열을 전달할 때 RtlInitAnsiString, RtlInitString 및 RtlInitUnicodeString 루틴을 대체합니다.
RTL_CONSTANT_STRING 사용하여 전역 변수를 초기화할 수 있습니다.
요구 사항
요구 사항 | 값 |
---|---|
대상 플랫폼 | 유니버설 |
헤더 | wdm.h(Wdm.h, Ntddk.h, Ntifs.h 포함) |
라이브러리 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | 모든 수준(설명 섹션 참조) |