FltGetSwappedBufferMdlAddress 루틴은 미니 필터 드라이버에서 교환된 버퍼에 대한 MDL(메모리 설명자 목록) 주소를 반환합니다.
통사론
PMDL FltGetSwappedBufferMdlAddress(
[in] PFLT_CALLBACK_DATA CallbackData
);
매개 변수
[in] CallbackData
작업에 대한 콜백 데이터 구조에 대한 포인터입니다.
반환 값
FltGetSwappedBufferMdlAddress 호출자가 교환한 버퍼의 MDL 주소를 반환합니다. FltGetSwappedBufferMdlAddress 다음과 같은 경우 NULL 반환합니다.
- 이 작업은 빠른 I/O 작업입니다. 빠른 I/O 작업에서 버퍼는 MDL을 가질 수 없습니다.
- 호출자가 교환한 버퍼에 MDL이 없습니다.
- 미니 필터 드라이버는 사전 운용 콜백 루틴에서 버퍼를 교환하지 않았습니다.
발언
사전 작업 콜백 루틴에서 새 버퍼를 교환하는 미니 필터 드라이버는 해당 작업 후 콜백 루틴에서 FltGetSwappedBufferMdlAddress 호출하여 버퍼의 MDL 주소를 가져올 수 있습니다.
FltGetSwappedBufferMdlAddress 루틴은 호출자의 사전 운용 콜백 루틴에 의해 교환된 것이 아니라 원래 버퍼 및 MDL 주소를 포함하는 콜백 데이터 구조를 수신하기 때문에 필요합니다.
FltGetSwappedBufferMdlAddress 호출자가 교환한 버퍼에 대한 MDL을 만들지 않은 경우에도NULL MDL 값을 반환할 수 있습니다. 미니 필터 드라이버, 레거시 필터 드라이버 또는 미니 필터 드라이버 또는 파일 시스템 드라이버 스택의 호출자 아래에 있는 파일 시스템 드라이버가 버퍼에 대해 MDL을 만들 때 발생합니다.
호출자가 사전 운용 콜백 루틴에서 새 버퍼에서 교환하지 않았더라도 FltGetSwappedBufferMdlAddressNULL MDL 값을 반환할 수도 있습니다. 이 작업은 페이징 I/O와 같은 작업에서 발생하며, 여기서 버퍼는 NULL 호출자는 새 MDL 주소로 교환됩니다.
호출자가 교환한 버퍼의 MDL은 사후 콜백 루틴이 반환될 때 필터 관리자에 의해 자동으로 해제됩니다. 이 MDL이 해제되지 않도록 하려면 FltRetainSwappedBufferMdlAddress호출합니다.
FltGetSwappedBufferMdlAddress 사후 콜백 루틴에서만 호출할 수 있습니다.
요구 사항
| 요구 | 값 |
|---|---|
| 대상 플랫폼 | 보편적 |
| 헤더 | fltkernel.h(Fltkernel.h 포함) |
| 라이브러리 | FltMgr.lib |
| DLL | Fltmgr.sys |
| IRQL | 모든 수준 |