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