FsRtlInitPerStreamContext 매크로(ntifs.h)
FsRtlInitPerStreamContext 매크로는 필터 드라이버 컨텍스트 구조를 초기화합니다.
구문
void FsRtlInitPerStreamContext(
_fc,
_owner,
_inst,
_cb
);
매개 변수
_fc
파일 스트림에 대한 컨텍스트 정보를 유지하는 데 사용할 호출자가 할당한 FSRTL_PER_STREAM_CONTEXT 구조체에 대한 포인터입니다. 이 구조체는 가 있는 그대로 사용하거나 드라이버 정의 스트림별 컨텍스트 구조에 포함할 수 있습니다. 두 구조체 형식은 일반적으로 ExAllocatePoolWithTag를 호출하여 할당됩니다.
_owner
스트림별 컨텍스트 구조의 소유자를 고유하게 식별하는 호출자가 할당한 변수에 대한 포인터입니다. 이 변수의 형식은 필터 드라이버 - 특정입니다. 필터 작성기는 드라이버 개체 또는 디바이스 개체의 주소와 같이 의미 있고 편리한 값을 선택해야 합니다. 호출자는 이 매개 변수에 NULL 이 아닌 값을 지정해야 합니다.
_inst
필터 드라이버에 대한 포인터 - 동일한 필터 드라이버에서 만든 스트림별 컨텍스트 구조를 구분하는 데 사용할 수 있는 할당된 변수입니다. 이 변수의 형식은 필터 드라이버 - 특정입니다. 필터 작성기는 파일 스트림에 대한 스트림 컨텍스트 개체의 주소와 같이 의미 있고 편리한 값을 선택해야 합니다. 파일 개체에서 이 주소를 얻으려면 FsRtlGetPerStreamContextPointer 매크로를 사용합니다. 이 매개 변수는 선택 사항이며 NULL일 수 있습니다.
_cb
스트림당 컨텍스트 구조를 해제하는 콜백 루틴에 대한 포인터입니다. 호출자는 이 매개 변수에 NULL 이 아닌 값을 지정해야 합니다. 이 루틴 및 해당 매개 변수는 다음과 같이 정의됩니다.
typedef VOID (*PFREE_FUNCTION) ( IN PVOID Buffer ); |
- Buffer
해제할 스트림별 컨텍스트 구조에 대한 포인터입니다. FreeCallback 루틴은 일반적으로 이 포인터를 적절한 구조 포인터 형식으로 캐스팅하고 ExFreePool을 호출하여 해제합니다.
반환 값
없음
설명
파일 시스템 필터 드라이버는 FsRtlInitPerStreamContext 매크로를 사용하여 새로 할당된 스트림별 컨텍스트 구조를 초기화한 후 파일 스트림과 연결합니다. 초기화된 컨텍스트 구조를 FsRtlInsertPerStreamContext에 매개 변수로 전달할 수 있습니다.
FsRtlInitPerStreamContext 는 FreeCallback 루틴의 주소를 FSRTL_PER_STREAM_CONTEXT 구조의 FreeCallback 멤버에 저장합니다.
FreeCallback 루틴은 IRQL <= APC_LEVEL 호출됩니다. 일반적으로 IRQL PASSIVE_LEVEL 호출됩니다.
컨텍스트 구조가 파일 스트림과 연결되면 FsRtlLookupPerStreamContext 를 호출하여 검색하거나 FsRtlRemovePerStreamContext를 호출하여 제거할 수 있습니다.
자세한 내용은 레거시 파일 시스템 필터 드라이버에서 Per-Stream 컨텍스트 추적을 참조하세요.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows XP; Windows 2000 SP4(서비스 팩 4)에 대한 업데이트 롤업 |
대상 플랫폼 | 데스크톱 |
머리글 | ntifs.h(Ntifs.h 포함) |
IRQL | 모든 수준 |
추가 정보
FsRtlGetPerStreamContextPointer