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 경계에 있어야 합니다.
또한 IoCheckEaBufferValidity EA 버퍼를 확인하여 다음 조건이 충족되는지 확인합니다.
EaLength 전달된 길이는 버퍼의 실제 길이와 일치합니다.
실제 버퍼 길이는 음수입니다.
유효하려면 EA 버퍼가 이러한 모든 조건을 충족해야 합니다.
IoCheckEaBufferValidityEaBuffer 내용이 비동기적으로 변경되지 않도록 동기화를 수행하지 않습니다. 사용자 모드 애플리케이션이 다른 스레드의 버퍼에 액세스할 수 있는 경우 IoCheckEaBufferValidity 실행되는 동안 애플리케이션이 버퍼를 변경할 수 있습니다. 이 변경으로 인해 루틴이 잘못된 정보를 반환할 수 있습니다. 이 시나리오를 방지하려면 드라이버는 IoCheckEaBufferValidity호출하기 전에 버퍼를 복사해야 합니다. 버퍼의 유효성을 검사한 후 호출자는 원래 버퍼가 아닌 유효성이 검사된 복사본만 사용해야 합니다.
요구 사항
요구 | 값 |
---|---|
대상 플랫폼 | 보편적 |
헤더 | ntifs.h(Ntifs.h 포함) |
라이브러리 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | < DISPATCH_LEVEL |