다음을 통해 공유


Read-Only 시스템 메모리 액세스

Windows 메모리 관리자는 쓰기 가능으로 표시되지 않은 페이지의 읽기 전용 액세스를 적용합니다.

읽기 전용 메모리는 항상 사용자 모드에서 보호되었습니다. 그러나 Windows NT 4.0 이전 버전에서는 읽기 전용 메모리가 커널 모드에서 보호되지 않았습니다.

Windows 커널 모드 드라이버 또는 애플리케이션이 읽기 전용 메모리 세그먼트에 쓰려고 하면 시스템에서 버그 검사 발생합니다. 자세한 내용은 버그 검사 0xBE: ATTEMPTED_WRITE_TO_READONLY_MEMORY.

시스템 호출 가로채기

일부 드라이버는 드라이버의 자체 코드를 덮어쓰고 점프 명령 또는 기타 변경 내용을 삽입하여 시스템 호출을 가로챌 수 있습니다. 드라이버의 자체 코드는 읽기 전용이므로 이 기술로 인해 버그 검사 발생합니다.

전역 문자열

전역 문자열을 수정하려면 상수 값에 대한 포인터로 선언해서는 안 됩니다.

CHAR *myString = "This string cannot be modified.";

이 경우 링커는 문자열을 읽기 전용 메모리 세그먼트에 넣을 수 있습니다. 그런 다음 문자열을 수정하려고 하면 버그 검사 발생합니다.

대신 문자열을 L-값 문자의 배열로 명시적으로 선언해야 합니다.

CHAR myString[] = "This string can be modified.";

이 선언은 문자열이 쓰기 가능한 메모리에 배치되도록 합니다.