다음을 통해 공유


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를 호출하여 이 루틴의 주소를 가져옵니다. IoGetDmaAdapterNULL을 반환하는 경우 플랫폼에서 루틴을 사용할 수 없습니다.

드라이버가 디바이스에 쓸 분산/수집 목록을 만들 때 시스템은 기록할 데이터의 복사본을 만들고 해당 복사본을 사용하여 DMA 작업을 수행할 수 있습니다. 이 루틴을 사용하여 해당 위치가 복사본인지 여부에 관계없이 분산/수집 목록의 메모리 위치에 액세스합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows XP 이상 버전의 Windows에서 사용할 수 있습니다.
대상 플랫폼 데스크톱
머리글 wdm.h(Wdm.h 포함)
IRQL <= DISPATCH_LEVEL
DDI 규정 준수 규칙 IrqlDispatch(wdm)

추가 정보

BuildScatterGatherList

DEVICE_DESCRIPTION

DMA_ADAPTER

DMA_OPERATIONS

IoGetDmaAdapter

SCATTER_GATHER_LIST