FltAllocateContext 함수(fltkernel.h)
FltAllocateContext 루틴은 지정된 컨텍스트 형식에 대한 컨텍스트 구조를 할당합니다.
구문
NTSTATUS FLTAPI FltAllocateContext(
[in] PFLT_FILTER Filter,
[in] FLT_CONTEXT_TYPE ContextType,
[in] SIZE_T ContextSize,
[in] POOL_TYPE PoolType,
[out] PFLT_CONTEXT *ReturnedContext
);
매개 변수
[in] Filter
호출자에 대한 불투명 필터 포인터입니다. 이 매개 변수는 필수이며 NULL 일 수 없습니다. (이 매개 변수를 잘못된 값으로 설정하면 시스템에서 확인된 빌드에서 ASSERT를 실행합니다.)
[in] ContextType
할당할 컨텍스트의 형식입니다. ContextType 은 다음 중 하나일 수 있습니다.
- FLT_FILE_CONTEXT(Windows Vista부터 시작)
- FLT_INSTANCE_CONTEXT
- FLT_SECTION_CONTEXT(Windows 8 시작)
- FLT_STREAM_CONTEXT
- FLT_STREAMHANDLE_CONTEXT
- FLT_TRANSACTION_CONTEXT(Windows Vista부터 시작)
- FLT_VOLUME_CONTEXT
[in] ContextSize
미니 필터 드라이버에서 정의한 컨텍스트 부분의 크기(바이트)입니다. 0보다 크고 MAXUSHORT 보다 작거나 같아야 합니다. 고정 크기 컨텍스트의 경우 FLT_CONTEXT_REGISTRATION 구조에 지정된 크기 보다 작거나 같아야 합니다. 미니 필터 드라이버는 컨텍스트의 이 부분을 사용하여 미니 필터 드라이버와 관련된 컨텍스트 정보를 유지 관리합니다. 필터 관리자는 컨텍스트 구조의 이 부분을 불투명으로 처리합니다. 이 매개 변수는 필수이며 0일 수 없습니다.
[in] PoolType
할당할 풀의 유형입니다. 이 매개 변수는 필수이며 다음 중 하나여야 합니다.
- NonPagedPool
- PagedPool(ContextType 이 FLT_VOLUME_CONTEXT 경우 NonPagedPool 이어야 합니다.)
이 매개 변수를 잘못된 값으로 설정하면 시스템에서 확인된 빌드에서 ASSERT를 실행합니다.
[out] ReturnedContext
새로 할당된 컨텍스트의 주소를 수신하는 호출자 할당 변수에 대한 포인터입니다. 호출자는 더 이상 필요하지 않은 경우 FltReleaseContext 를 호출하여 이 컨텍스트를 해제할 책임이 있습니다.
반환 값
FltAllocateContext 는 다음 중 하나와 같은 STATUS_SUCCESS 또는 적절한 NTSTATUS 값을 반환합니다.
| 반환 코드 | 설명 |
|---|---|
| STATUS_FLT_CONTEXT_ALLOCATION_NOT_FOUND | 지정된 형식의 컨텍스트에 대한 할당 정보는 필터 등록 시 제공되지 않았습니다. 또는 고정 크기 컨텍스트의 경우 요청된 ContextSize 가 지정된 ContextType 의 FLT_CONTEXT_REGISTRATION 구조에 지정된 크기 보다 큽니다. |
| STATUS_FLT_DELETING_OBJECT | 필터 매개 변수에 지정된 미니 필터 드라이버가 삭제되고 있습니다. 오류 코드입니다. |
| STATUS_INSUFFICIENT_RESOURCES | FltAllocateContext 에서 풀 할당 오류가 발생했습니다. 오류 코드입니다. |
| STATUS_INVALID_BUFFER_SIZE | ContextSize 는 MAXUSHORT 보다 클 수 없습니다. 오류 코드입니다. |
| STATUS_INVALID_PARAMETER | ContextType 또는 ContextSize 매개 변수에 잘못된 값이 지정되었습니다. 오류 코드입니다. |
| STATUS_NOT_SUPPORTED | 파일 시스템은 스트림별 컨텍스트를 지원하지 않습니다. 오류 코드입니다. |
설명
컨텍스트에 대한 자세한 내용은 미니 필터 컨텍스트 정보를 참조하세요.
FltAllocateContext 는 지정된 풀에서 지정된 형식의 컨텍스트를 할당합니다. 반환된 컨텍스트의 내용이 0이 아닙니다.
컨텍스트가 할당된 후 다음 표에서 적절한 set-context 루틴에 ReturnedContext 포인터를 전달하여 개체에 설정할 수 있습니다.
| 컨텍스트 유형 | Set-Context 루틴 |
|---|---|
| FLT_FILE_CONTEXT | FltSetFileContext(Windows Vista부터) |
| FLT_INSTANCE_CONTEXT | FltSetInstanceContext |
| FLT_SECTION_CONTEXT | FltCreateSectionForDataScan(Windows 8 이상만 해당) |
| FLT_STREAM_CONTEXT | FltSetStreamContext |
| FLT_STREAMHANDLE_CONTEXT | FltSetStreamHandleContext |
| FLT_TRANSACTION_CONTEXT | FltSetTransactionContext(Windows Vista부터) |
| FLT_VOLUME_CONTEXT | FltSetVolumeContext |
미니 필터 드라이버가 DriverEntry 루틴에서 FltRegisterFilter를 호출하는 경우 사용하는 각 컨텍스트 형식을 등록해야 합니다. 자세한 내용은 FLT_CONTEXT_REGISTRATION 구조체에 대한 참조 항목 및 컨텍스트 형식 등록을 참조하세요.
FltAllocateContext 는 미니 필터 드라이버와 관련된 컨텍스트 구조 부분의 콘텐츠를 초기화하지 않습니다.
개체의 컨텍스트를 얻으려면 다음 표에서 FltGetContexts 또는 적절한 get-context 루틴을 호출합니다.
| 컨텍스트 유형 | Get-Context 루틴 |
|---|---|
| FLT_FILE_CONTEXT | FltGetFileContext(Windows Vista부터) |
| FLT_INSTANCE_CONTEXT | FltGetInstanceContext |
| FLT_SECTION_CONTEXT | FltGetSectionContext(Windows 8 시작) |
| FLT_STREAM_CONTEXT | FltGetStreamContext |
| FLT_STREAMHANDLE_CONTEXT | FltGetStreamHandleContext |
| FLT_TRANSACTION_CONTEXT | FltGetTransactionContext(Windows Vista부터) |
| FLT_VOLUME_CONTEXT | FltGetVolumeContext |
컨텍스트는 참조 횟수이며 FltAllocateContext 에서 성공적으로 반환되면 ReturnContext 가 가리키는 컨텍스트가 1의 참조 수를 갖도록 초기화되었습니다. 참조 수가 0에 도달하면 컨텍스트가 자동으로 해제됩니다. 컨텍스트에서 참조 횟수를 증가하려면 FltReferenceContext를 호출합니다.
컨텍스트에서 참조 수를 감소하려면 FltReleaseContext를 호출합니다.
컨텍스트는 참조 횟수이므로 일반적으로 컨텍스트를 삭제할 필요가 없습니다. 컨텍스트를 명시적으로 삭제하려면 다음 표에서 FltDeleteContext 또는 적절한 삭제 컨텍스트 루틴을 호출합니다.
| 컨텍스트 유형 | Delete-Context 루틴 |
|---|---|
| FLT_FILE_CONTEXT | FltDeleteFileContext(Windows Vista부터) |
| FLT_INSTANCE_CONTEXT | FltDeleteInstanceContext |
| FLT_SECTION_CONTEXT | FltCloseSectionForDataScan(Windows 8 시작) |
| FLT_STREAM_CONTEXT | FltDeleteStreamContext |
| FLT_STREAMHANDLE_CONTEXT | FltDeleteStreamHandleContext |
| FLT_TRANSACTION_CONTEXT | FltDeleteTransactionContext(Windows Vista부터) |
| FLT_VOLUME_CONTEXT | FltDeleteVolumeContext |
요구 사항
| 대상 플랫폼 | 유니버설 |
| 헤더 | fltkernel.h(Fltkernel.h 포함) |
| 라이브러리 | FltMgr.lib |
| DLL | Fltmgr.sys |
| IRQL | <= APC_LEVEL |
참고 항목
피드백
다음에 대한 사용자 의견 제출 및 보기