PBUILD_MDL_FROM_SCATTER_GATHER_LIST 콜백 함수(wdm.h)
BuildMdlFromScatterGatherList 루틴은 시스템에서 할당한 분산/수집 목록에서 MDL을 빌드합니다.
이 루틴은 시스템 사용을 위해 예약되어 있습니다.
구문
PBUILD_MDL_FROM_SCATTER_GATHER_LIST PbuildMdlFromScatterGatherList;
NTSTATUS PbuildMdlFromScatterGatherList(
[in] PDMA_ADAPTER DmaAdapter,
[in] PSCATTER_GATHER_LIST ScatterGather,
[in] PMDL OriginalMdl,
[out] PMDL *TargetMdl
)
{...}
매개 변수
[in] DmaAdapter
버스 master 어댑터 또는 DMA 컨트롤러를 나타내는 IoGetDmaAdapter에서 반환된 DMA_ADAPTER 구조체에 대한 포인터입니다.
[in] ScatterGather
드라이버의 AdapterListControl 루틴에 전달된 SCATTER_GATHER_LIST 구조체에 대한 포인터입니다.
[in] OriginalMdl
드라이버가 분산/수집 목록을 작성하는 데 사용한 원래 MDL에 대한 포인터입니다.
[out] TargetMdl
루틴이 산점/수집 목록에 설명된 버퍼를 보유하기 위해 만든 MDL을 반환하는 데 사용하는 변수에 대한 포인터입니다. 반환된 값은 OriginalMdl과 같을 수 있습니다.
반환 값
BuildMdlFromScatterGatherList는 다음 상태 코드 중 하나를 반환합니다.
반환 코드 | 설명 |
---|---|
STATUS_SUCCESS | 작업에 성공했습니다. |
STATUS_INVALID_PARAMETER | OriginalMdl 매개 변수는 NULL입니다. |
STATUS_INSUFFICIENT_RESOURCES | 새 MDL을 할당하는 데 사용할 수 있는 메모리가 부족합니다. |
STATUS_NONE_MAPPED | 시스템에서 분산/수집 목록의 메모리 위치에 대한 새 MDL을 이미 만들었습니다. (루틴이 동일한 분산/수집 목록에서 두 번 호출되는 경우에만 발생합니다.) |
설명
BuildMdlFromScatterGatherList 는 이름으로 직접 호출할 수 있는 시스템 루틴이 아닙니다. 이 루틴은 DMA_OPERATIONS 구조에서 반환된 주소의 포인터로만 호출할 수 있습니다. 드라이버는 DeviceDescription 매개 변수의 Version 멤버가 DEVICE_DESCRIPTION_VERSION2 설정된 IoGetDmaAdapter를 호출하여 이 루틴의 주소를 가져옵니다. IoGetDmaAdapter가 NULL을 반환하는 경우 플랫폼에서 루틴을 사용할 수 없습니다.
드라이버가 디바이스에 쓸 분산/수집 목록을 만들 때 시스템은 기록할 데이터의 복사본을 만들고 해당 복사본을 사용하여 DMA 작업을 수행할 수 있습니다. 이 루틴을 사용하여 해당 위치가 복사본인지 여부에 관계없이 분산/수집 목록의 메모리 위치에 액세스합니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows XP 이상 버전의 Windows에서 사용할 수 있습니다. |
대상 플랫폼 | 데스크톱 |
머리글 | wdm.h(Wdm.h 포함) |
IRQL | <= DISPATCH_LEVEL |
DDI 규정 준수 규칙 | IrqlDispatch(wdm) |