다음을 통해 공유


IsBadStringPtrA 함수(winbase.h)

호출 프로세스에서 지정된 메모리 범위에 대한 읽기 권한이 있는지 확인합니다.

중요 이 함수는 사용되지 않으므로 사용하면 안 됩니다. 이름에도 불구하고 포인터가 유효하거나 가리키는 메모리가 안전하게 사용되도록 보장하지는 않습니다. 자세한 내용은 이 페이지의 비고를 참조하세요.
 

통사론

BOOL IsBadStringPtrA(
  [in] LPCSTR   lpsz,
  [in] UINT_PTR ucchMax
);

매개 변수

[in] lpsz

Null로 끝나는 문자열(유니코드 또는 ASCII)에 대한 포인터입니다.

[in] ucchMax

TCHAR문자열의 최대 크기입니다. 함수는 문자열의 종료 null 문자까지 또는 이 매개 변수로 지정된 문자 수까지의 모든 문자에서 읽기 액세스를 확인합니다. 이 매개 변수가 0이면 반환 값은 0입니다.

반환 값

호출 프로세스에서 문자열의 종료 null 문자까지 또는 ucchMax지정된 문자 수까지 모든 문자에 대한 읽기 권한이 있는 경우 반환 값은 0입니다.

호출 프로세스에서 문자열의 종료 null 문자 또는 ucchMax지정된 문자 수까지 모든 문자에 대한 읽기 권한이 없는 경우 반환 값은 0이 아닙니다.

애플리케이션이 디버깅 버전으로 컴파일되고 프로세스에 지정된 전체 메모리 범위에 대한 읽기 권한이 없는 경우 함수는 어설션을 발생시키고 디버거에 침입합니다. 디버거를 벗어나면 함수는 평소와 같이 계속되며 0이 아닌 값을 반환합니다. 이 동작은 디버깅 보조 기능으로 디자인되었습니다.

발언

이 함수는 일반적으로 타사 라이브러리에서 반환된 포인터로 작업할 때 사용되며, 타사 DLL에서 메모리 관리 동작을 확인할 수 없습니다.

프로세스의 스레드는 다른 스레드가 필요로 하는 메모리를 확보하지 않는 방식으로 협력해야 합니다. 이 함수를 사용하면 이 작업을 수행할 필요가 없습니다. 이 작업이 수행되지 않으면 애플리케이션이 예측할 수 없는 방식으로 실패할 수 있습니다.

잠재적으로 잘못된 포인터를 역참조하면 다른 스레드에서 스택 확장을 사용하지 않도록 설정할 수 있습니다. 스택 확장을 사용하지 않도록 설정한 경우 스택이 소진되는 스레드는 팝업 오류 창이나 진단 정보 없이 부모 프로세스가 즉시 종료됩니다.

호출 프로세스에서 지정된 메모리 범위의 일부(전부는 아님)에 대한 읽기 권한이 있는 경우 반환 값은 0이 아닙니다.

선점 멀티태스킹 환경에서는 일부 다른 스레드가 테스트 중인 메모리에 대한 프로세스의 액세스를 변경할 수 있습니다. 함수가 프로세스에 지정된 메모리에 대한 읽기 권한이 있음을 나타내는 경우에도 메모리에 액세스하려고 할 때 구조적 예외 처리 사용해야 합니다. 구조적 예외 처리를 사용하면 시스템에서 액세스 위반 예외가 발생할 경우 프로세스에 알릴 수 있으므로 프로세스에서 예외를 처리할 수 있습니다.

메모

winbase.h 헤더는 ISBadStringPtr을 유니코드 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입대한 규칙을 참조하세요.

요구 사항

요구
지원되는 최소 클라이언트 Windows XP [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 winbase.h(Windows.h 포함)
라이브러리 Kernel32.lib
DLL Kernel32.dll

참고 항목

IsBadCodePtr

isBadReadPtr

isBadWritePtr