다음을 통해 공유


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을 포함하여 원본 문자열의 길이(바이트)로 설정됩니다. SourceStringNULL이면 LengthMaximumLength가 모두 0으로 설정됩니다.

RtlInitAnsiStringSourceString이 가리키는 원본 문자열을 변경하지 않습니다.

원본 문자열이 MAXUSHORT - 1바이트보다 긴 경우 RtlInitAnsiStringDestinationString이 가리키는 ANSI_STRING 구조체의 Length 멤버를 MAXUSHORT - 1로 설정하고 이 구조체의 MaximumLength 멤버를 MAXUSHORT로 설정합니다. 이 경우 LengthMaximumLength 값은 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, RtlInitStringRtlInitUnicodeString 루틴을 대체합니다.

RTL_CONSTANT_STRING 사용하여 전역 변수를 초기화할 수 있습니다.

요구 사항

요구 사항
대상 플랫폼 유니버설
헤더 wdm.h(Wdm.h, Ntddk.h, Ntifs.h 포함)
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL 모든 수준(설명 섹션 참조)

추가 정보

ANSI_STRING