2017-03-11 6 views
0

FltGetStreamHandleContext의 세 번째 매개 변수 구조가 사용자 정의 구조입니까? FltGetStreamHandleContext를 통해 컨텍스트를 가져 오기 전에 FltSetStreamHandleContext 함수를 통해 컨텍스트를 미리 정의해야합니까? 번역기 사용에 불편을 끼쳐 드려 죄송합니다.FltGetStreamHandleContext 및 FltSetStreamHandleContext 함수

답변

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); 
}