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