FsRtlRemovePerStreamContext 함수(ntifs.h)

FsRtlRemovePerStreamContext 는 파일 스트림과 연결된 스트림별 컨텍스트 목록에서 스트림별 컨텍스트 구조를 제거합니다.

구문

PFSRTL_PER_STREAM_CONTEXT FsRtlRemovePerStreamContext(
  [in]           PFSRTL_ADVANCED_FCB_HEADER StreamContext,
  [in, optional] PVOID                      OwnerId,
  [in, optional] PVOID                      InstanceId
);

매개 변수

[in] StreamContext

파일 스트림의 FSRTL_ADVANCED_FCB_HEADER 구조체에 대한 포인터입니다. 파일 개체에서 이 포인터를 얻으려면 FsRtlGetPerStreamContextPointer 매크로를 사용합니다.

[in, optional] OwnerId

컨텍스트 정보를 특정 필터 드라이버에 속하는 것으로 식별하는 데 사용됩니다.

[in, optional] InstanceId

스트림별 컨텍스트의 특정 인스턴스를 검색하는 데 사용됩니다. 제공되지 않으면 필터 드라이버가 소유한 컨텍스트가 제거되고 반환됩니다.

OwnerIdInstanceId가 모두 제공되지 않으면 연결된 스트림별 컨텍스트가 제거되고 반환됩니다.

반환 값

FsRtlRemovePerStreamContext 는 제거된 스트림별 컨텍스트에 대한 포인터를 반환합니다. 일치하는 항목이 없거나 파일 시스템에서 필터 컨텍스트를 지원하지 않는 경우 FsRtlRemovePerStreamContextNULL을 반환합니다.

설명

파일 시스템 필터 드라이버는 FsRtlRemovePerStreamContext 를 호출하여 파일 스트림과 연결된 스트림별 컨텍스트 목록에서 자체 스트림별 컨텍스트 구조를 제거합니다.

NoteFsRtlRemovePerStreamContext는 발견된 첫 번째 일치하는 스트림별 컨텍스트 구조만 제거합니다. 스트림당 일치하는 컨텍스트가 추가로 있는 경우 필터 드라이버는 FsRtlRemovePerStreamContext 를 모두 제거하는 데 필요한 횟수만큼 호출해야 합니다.
이 루틴은 필터 드라이버가 스트림이 열려 있는 동안 파일 스트림과 연결된 컨텍스트 정보를 삭제해야 하는 경우에만 사용해야 합니다. 예를 들어 필터 드라이버는 다음 경우에 FsRtlRemovePerStreamContext 를 호출할 수 있습니다.
  • 사용자 모드 애플리케이션에서 특정 볼륨에 대한 I/O 요청 로깅을 중지하라는 요청을 수신하는 경우
  • 파일 또는 디렉터리의 이름이 변경되었음을 감지하는 경우
파일 스트림이 닫힌 경우 파일 시스템은 해당 스트림과 연결된 모든 스트림별 컨텍스트가 제거되고 해제되도록 합니다. 이렇게 하려면 파일 시스템에서 FsRtlTeardownPerStreamContexts 를 FCB(파일 제어 블록) 또는 파일 스트림에 대한 다른 스트림 컨텍스트 개체에서 호출해야 합니다. FsRtlTeardownPerStreamContexts 는 FilterContexts 목록을 안내하여 각 항목을 제거하고 FreeCallback 루틴을 호출합니다.

따라서 파일 시스템 필터 드라이버는 IRP_MJ_CLOSE 또는 IRP_MJ_PNP 디스패치 루틴 내에서 FsRtlRemovePerStreamContext 를 호출해서는 안 됩니다. 이러한 호출은 불필요할 뿐만 아니라 FsRtlTeardownPerStreamContexts에 대한 파일 시스템의 호출을 방해할 수도 있습니다.

참고 파일 시스템 필터 드라이버는 스트림별 컨텍스트 구조의 FreeCallback 루틴 내에서 FsRtlRemovePerStreamContext를 호출하면 안 됩니다. 이는 기본 파일 시스템이 FilterContexts 목록에서 컨텍스트 구조를 이미 제거한 후 FreeCallback 루틴을 호출하기 때문입니다.
스트림별 컨텍스트 구조를 초기화하려면 FsRtlInitPerStreamContext 매크로를 사용합니다.

초기화된 스트림별 컨텍스트 구조를 파일 스트림과 연결하려면 FsRtlInsertPerStreamContext를 호출합니다.

파일 스트림과 연결된 스트림별 컨텍스트 구조를 검색하려면 FsRtlLookupPerStreamContext를 호출합니다.

FsRtlRemovePerStreamContext 는 필터 컨텍스트를 지원하는 파일 시스템에서만 사용할 수 있습니다.

자세한 내용은 레거시 파일 시스템 필터 드라이버에서 Per-Stream 컨텍스트 추적을 참조하세요.

요구 사항

   
지원되는 최소 클라이언트 이 루틴은 Windows 2000 SP4(서비스 팩 4) 업데이트 롤업 및 Microsoft Windows XP 이상에서 사용할 수 있습니다.
대상 플랫폼 유니버설
헤더 ntifs.h(Ntifs.h 포함)
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

참고 항목

FSRTL_ADVANCED_FCB_HEADER

FSRTL_PER_STREAM_CONTEXT

FsRtlGetPerStreamContextPointer

FsRtlInitPerStreamContext

FsRtlInsertPerStreamContext

FsRtlLookupPerStreamContext

FsRtlSetupAdvancedHeader

FsRtlSupportsPerStreamContexts

FsRtlTeardownPerStreamContexts

IRP_MJ_CLOSE

IRP_MJ_PNP