IoCheckEaBufferValidity 함수(ntifs.h)
IoCheckEaBufferValidity 루틴은 지정된 EA(확장 특성) 버퍼가 유효한지 여부를 확인합니다.
구문
NTSTATUS IoCheckEaBufferValidity(
[in] PFILE_FULL_EA_INFORMATION EaBuffer,
[in] ULONG EaLength,
[out] PULONG ErrorOffset
);
매개 변수
[in] EaBuffer
확인할 EA가 포함된 버퍼에 대한 포인터입니다.
[in] EaLength
EaBuffer의 길이(바이트)입니다.
[out] ErrorOffset
오류가 발견되면 EA 버퍼에서 잘못된 항목의 오프셋을 수신하는 변수에 대한 포인터입니다. 이 변수는 오류가 발생하는 경우에만 유효합니다.
반환 값
IoCheckEaBufferValidity 는 EA 버퍼가 유효한 경우 STATUS_SUCCESS 반환합니다. 그렇지 않으면 STATUS_EA_LIST_INCONSISTENT 반환합니다.
설명
IoCheckEaBufferValidity 는 지정된 EA 버퍼의 각 FILE_FULL_EA_INFORMATION 항목을 검사하여 다음 조건이 충족되는지 확인합니다.
- 전체 항목은 버퍼 내에 있어야 합니다.
- EaName 값은 null로 끝나는 문자 배열이어야 합니다.
- EaNameLength 값은 EaName 배열의 길이(0-종결자 포함 안 됨)의 길이(바이트)와 일치해야 합니다.
- 마지막 항목을 제외한 모든 항목의 경우 NextEntryOffset 값은 0보다 커야 하며 ULONG 경계에 있어야 합니다.
- EaLength에서 전달된 길이는 버퍼의 실제 길이와 일치합니다.
- 실제 버퍼 길이는 무수합니다.
경고 IoCheckEaBufferValidity 는 EaBuffer 의 내용이 비동기적으로 변경되지 않도록 동기화를 수행하지 않습니다. 사용자 모드 애플리케이션이 다른 스레드의 버퍼에 액세스할 수 있는 경우 IoCheckEaBufferValidity 가 실행되는 동안 애플리케이션이 버퍼를 변경할 수 있습니다. 이 변경으로 인해 루틴이 잘못된 정보를 반환할 수 있습니다. 이 시나리오를 방지하려면 드라이버가 IoCheckEaBufferValidity를 호출하기 전에 버퍼를 복사해야 합니다. 버퍼의 유효성을 검사한 후 호출자는 원래 버퍼가 아닌 유효성이 검사된 복사본만 사용해야 합니다.
요구 사항
| 대상 플랫폼 | 유니버설 |
| 헤더 | ntifs.h(Ntifs.h 포함) |
| 라이브러리 | NtosKrnl.lib |
| DLL | NtosKrnl.exe |
| IRQL | < DISPATCH_LEVEL |
참고 항목
피드백
다음에 대한 사용자 의견 제출 및 보기