다음을 통해 공유


PFREE_FUNCTION 함수 포인터

파일 시스템 레거시 필터 드라이버는 PFREE_FUNCTION 형식화된 루틴을 필터의 FreeCallback 콜백 루틴으로 등록할 수 있습니다. 파일 시스템에서 FsRtlTeardownPerFileContexts를 사용하여 파일 컨텍스트 개체를 제거하거나 FsRtlTeardownPerStreamContexts를 사용하여 스트림 컨텍스트 개체를 제거할 때 파일 시스템은 FreeCallback을 호출합니다.

FREE_FUNCTION 형식을 사용하여 콜백 루틴을 선언해야 합니다. 자세한 내용은 설명 섹션의 예제를 참조하세요.

구문

typedef VOID ( *FreeCallback)(
  _In_ PVOID Buffer
);

매개 변수

반환 값

없음

설명

파일 시스템이 파일에 대한 파일별 컨텍스트 개체를 중단하는 경우 FsRtlTeardownPerFileContexts를 호출해야 합니다. 이 루틴은 파일과 연결된 모든 파일별 컨텍스트 구조의 FreeCallback 루틴을 호출합니다. 이 콜백 루틴은 FSRTL_PER_FILE_CONTEXT 개체에 사용되는 모든 메모리와 연결된 컨텍스트 정보를 해제해야 합니다. FsRtlTeardownPerStreamContexts가 호출되고 FreeCallbackFSRTL_PER_STREAM_CONTEXT 개체에 사용되는 메모리를 해제할 때 스트림별 컨텍스트의 경우도 마찬가지입니다.

FreeCallback을 호출하는 동안 파일별 컨텍스트 개체 또는 스트림별 컨텍스트 개체에 대한 액세스를 동기화하는 방법에 대한 설명은 FsRtlTeardownPerFileContextsFsRtlTeardownPerStreamContexts를 참조하세요.

참고

FreeCallback 루틴은 파일 시스템에 재귀적으로 호출하거나 파일 시스템 리소스를 가져올 수 없습니다.

MyFreeFunction이라는 FreeCallback 콜백 함수를 정의하려면 먼저 SDV(정적 드라이버 검증 도구) 및 기타 확인 도구에 필요한 함수 선언을 다음과 같이 제공해야 합니다.

FREE_FUNCTION MyFreeFunction;

그런 다음 다음과 같이 콜백 함수를 구현합니다.

VOID
 MyFreeFunction (
 __in PVOID Buffer
    )
  {...}

요구 사항

요구 사항 유형 요구 사항
지원되는 최소 클라이언트 Windows Vista
헤더 Wdm.h ( Wdm.h 또는 Ntddk.h 포함)
IRQL <= APC_LEVEL

추가 정보

FsRtlTeardownPerFileContexts

FsRtlTeardownPerStreamContexts

FSRTL_PER_FILE_CONTEXT

FSRTL_PER_STREAM_CONTEXT

레거시 파일 시스템 필터 드라이버에서 Per-File 컨텍스트 추적

레거시 파일 시스템 필터 드라이버에서 Per-Stream 컨텍스트 추적