FltGetStreamHandleContext의 세 번째 매개 변수 구조가 사용자 정의 구조입니까? FltGetStreamHandleContext를 통해 컨텍스트를 가져 오기 전에 FltSetStreamHandleContext 함수를 통해 컨텍스트를 미리 정의해야합니까? 번역기 사용에 불편을 끼쳐 드려 죄송합니다.FltGetStreamHandleContext 및 FltSetStreamHandleContext 함수
0
A
답변
0
예, 점 PFLT_CONTEXT
은 사용자 정의 구조입니다. 따라서 사용자는 직접 콘텐츠를 디자인합니다. 전화 FltAllocateContext
로 할당해야합니다. 정말이 기능은 FsRtlInsertPerStreamContext
또는 FsRtlInsertPerFileObjectContext
이상 FltSetStream[Handle]Context
쉘 (자세히보기 Tracking Per-Stream Context in a Legacy File System Filter Driver) 때문에 (이 동일한 초기에는 1) 및 FSRTL_PER_STREAM_CONTEXT
당신이 FltGetStream[Handle]Context
전에 FltSetStream[Handle]Context
를 호출 할 경우 할당 된 상황에 홀드 참조 횟수에 대한 더 다음 ContextSize 매개 변수를 할당 - 당신은 (더 정확하게 FltGetStream[Handle]Context
반환 오류 STATUS_NOT_FOUND
)를 NULL_CONTEXT
(또는 단순히 0)를 가지고
그래서 다시는 012에서 컨텍스트를 상속 기존의 미니 필터 드라이버에서 정의 된 구조 (필요가있다 컨텍스트하지만 minifiletrs이 캡슐화 됨)
일반적으로 다음 코드를 사용합니다.
MY_STREAM_CONTEXT* Ctx;// your custom data
if (0 <= FltGetStreamHandleContext(FltObjects->Instance, FltObjects->FileObject, (PFLT_CONTEXT*)&Ctx))
{
//.. use Ctx
FltReleaseContext(Ctx);
}