PFREE_FUNCTION 함수 포인터
파일 시스템 레거시 필터 드라이버는 PFREE_FUNCTION 형식화된 루틴을 필터의 FreeCallback 콜백 루틴으로 등록할 수 있습니다. 파일 시스템에서 FsRtlTeardownPerFileContexts를 사용하여 파일 컨텍스트 개체를 제거하거나 FsRtlTeardownPerStreamContexts를 사용하여 스트림 컨텍스트 개체를 제거할 때 파일 시스템은 FreeCallback을 호출합니다.
FREE_FUNCTION 형식을 사용하여 콜백 루틴을 선언해야 합니다. 자세한 내용은 설명 섹션의 예제를 참조하세요.
구문
typedef VOID ( *FreeCallback)(
_In_ PVOID Buffer
);
매개 변수
- 버퍼 [in]: 해제할 FSRTL_PER_FILE_CONTEXT 또는 FSRTL_PER_STREAM_CONTEXT 구조체에 대한 포인터입니다.
반환 값
없음
설명
파일 시스템이 파일에 대한 파일별 컨텍스트 개체를 중단하는 경우 FsRtlTeardownPerFileContexts를 호출해야 합니다. 이 루틴은 파일과 연결된 모든 파일별 컨텍스트 구조의 FreeCallback 루틴을 호출합니다. 이 콜백 루틴은 FSRTL_PER_FILE_CONTEXT 개체에 사용되는 모든 메모리와 연결된 컨텍스트 정보를 해제해야 합니다. FsRtlTeardownPerStreamContexts가 호출되고 FreeCallback이 FSRTL_PER_STREAM_CONTEXT 개체에 사용되는 메모리를 해제할 때 스트림별 컨텍스트의 경우도 마찬가지입니다.
FreeCallback을 호출하는 동안 파일별 컨텍스트 개체 또는 스트림별 컨텍스트 개체에 대한 액세스를 동기화하는 방법에 대한 설명은 FsRtlTeardownPerFileContexts 및 FsRtlTeardownPerStreamContexts를 참조하세요.
참고
FreeCallback 루틴은 파일 시스템에 재귀적으로 호출하거나 파일 시스템 리소스를 가져올 수 없습니다.
MyFreeFunction이라는 FreeCallback 콜백 함수를 정의하려면 먼저 SDV(정적 드라이버 검증 도구) 및 기타 확인 도구에 필요한 함수 선언을 다음과 같이 제공해야 합니다.
FREE_FUNCTION MyFreeFunction;
그런 다음 다음과 같이 콜백 함수를 구현합니다.
VOID
MyFreeFunction (
__in PVOID Buffer
)
{...}
요구 사항
요구 사항 유형 | 요구 사항 |
---|---|
지원되는 최소 클라이언트 | Windows Vista |
헤더 | Wdm.h ( Wdm.h 또는 Ntddk.h 포함) |
IRQL | <= APC_LEVEL |
추가 정보
FsRtlTeardownPerStreamContexts