FltGetSwappedBufferMdlAddress 함수(fltkernel.h)
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을 만들 때 발생합니다.
또한 FltGetSwappedBufferMdlAddress는 호출자가 사전 운용 콜백 루틴의 새 버퍼에서 교환하지 않은 경우에도 NULL이 아닌 MDL 값을 반환할 수 있습니다. 이는 버퍼가 NULL이고 호출자가 새 MDL 주소로 교환되는 페이징 I/O와 같은 작업에서 발생합니다.
호출자가 교환한 버퍼에 대한 MDL은 작업 후 콜백 루틴이 반환될 때 필터 관리자에 의해 자동으로 해제됩니다. 이 MDL이 해제되지 않도록 하려면 FltRetainSwappedBufferMdlAddress를 호출합니다.
FltGetSwappedBufferMdlAddress 는 사후 콜백 루틴에서만 호출할 수 있습니다.
요구 사항
요구 사항 | 값 |
---|---|
대상 플랫폼 | 유니버설 |
헤더 | fltkernel.h(Fltkernel.h 포함) |
라이브러리 | FltMgr.lib |
DLL | Fltmgr.sys |
IRQL | 모든 수준 |