StorPortBuildScatterGatherList 함수(storport.h)
StorPortBuildScatterGatherList 루틴은 지정된 데이터 버퍼에 대한 분산/수집 목록을 만듭니다.
통사론
ULONG StorPortBuildScatterGatherList(
[in] PVOID HwDeviceExtension,
[in] PVOID Mdl,
[in] PVOID CurrentVa,
[in] ULONG Length,
[in] PPOST_SCATTER_GATHER_EXECUTE ExecutionRoutine,
[in] PVOID Context,
[in] BOOLEAN WriteToDevice,
[in, out] PVOID ScatterGatherBuffer,
[in] ULONG ScatterGatherBufferLength
);
매개 변수
[in] HwDeviceExtension
HBA(호스트 버스 어댑터)의 하드웨어 디바이스 확장에 대한 포인터입니다.
[in] Mdl
데이터 버퍼와 연결된 메모리 페이지를 설명하는 MDL(메모리 설명자 목록)에 대한 포인터입니다.
[in] CurrentVa
데이터 버퍼의 가상 주소입니다.
[in] Length
데이터 버퍼의 길이(바이트)입니다.
[in] ExecutionRoutine
미니포트 드라이버 제공 ExecutionRoutine대한 포인터입니다. Storport 드라이버는 분산/수집 목록을 만든 후 이 루틴을 호출합니다. 미니포트 드라이버는 StorPortBuildScatterGatherList 루틴에 대한 호출을 따르는 코드가 아니라 실행 루틴 내에서 분산/수집 목록을 사용하는 모든 작업을 수행해야 합니다.
ExecutionRoutine 다음과 같이 선언됩니다.
VOID
ExecutionRoutine (
IN PVOID *DeviceObject,
IN PVOID *Irp,
IN PSTOR_SCATTER_GATHER_LIST ScatterGather,
IN PVOID Context
);
DeviceObject
미니포트 드라이버는 이 매개 변수를 무시해야 합니다.
Irp
미니포트 드라이버는 이 매개 변수를 무시해야 합니다.
ScatterGather
지정된 데이터 버퍼에 대한 분산/수집 목록을 포함하는 STOR_SCATTER_GATHER_LIST 구조체에 대한 포인터입니다.
문맥
StorPortBuildScatterGatherList 함수의 Context 매개 변수에 지정된 컨텍스트 값입니다.
Storport 드라이버는 IRQL = DISPATCH_LEVEL 미니포트 드라이버의 ExecutionRoutine 호출합니다.
[in] Context
포트 드라이버가 ExecutionRoutine 매개 변수에 지정된 실행 루틴에 전달하는 컨텍스트 값입니다. 실행 루틴은 이 값을 사용하여 요청을 고유하게 식별합니다.
[in] WriteToDevice
DMA 전송 방향을 나타내는 값입니다. TRUE 값은 데이터 버퍼에서 디바이스로의 전송을 나타내고, FALSE 값은 디바이스에서 데이터 버퍼로의 전송을 나타냅니다.
[in, out] ScatterGatherBuffer
분산/수집 목록을 수신하는 미니포트 제공 버퍼에 대한 포인터입니다. 미니포트 드라이버는 StorPortAllocatePool 루틴을 호출하여 이 버퍼에 대한 메모리를 할당할 수 있습니다.
[in] ScatterGatherBufferLength
ScatterGatherBuffer 매개 변수가 가리키는 버퍼의 크기(바이트)입니다.
반환 값
StorPortBuildScatterGatherList 다음 값 중 하나를 반환합니다.
반환 코드 | 묘사 |
---|---|
|
이 함수는 활성 운영 체제에서 구현되지 않습니다. |
|
루틴이 분산/수집 목록을 성공적으로 만들었임을 나타냅니다.
중요한 '주의'를 참조하세요.
|
|
전달된 HwDeviceExtension NULL . |
|
잘못된 IRQL에서 호출되었습니다. |
|
시스템에 전송에 사용할 수 있는 맵 레지스터가 부족합니다. |
|
Length 매개 변수가 너무 커서 버퍼 내에 맞지 않습니다. |
발언
미니포트 드라이버는 storPortPutScatterGatherList 호출하여 분산/수집 목록을 생성하는 동안 StorPortBuildScatterGatherList 할당된 리소스를 해제합니다.
미니포트 드라이버는 분산/수집 목록에 할당된 메모리를 해제하거나 재사용하기 전에 StorPortPutScatterGatherList 호출해야 합니다.
요구 사항
요구 | 값 |
---|---|
대상 플랫폼 | 보편적 |
헤더 | storport.h(Storport.h 포함) |
IRQL | DISPATCH_LEVEL |