ScsiPortGetUncachedExtension 함수(srb.h)
ScsiPortGetUncachedExtension 루틴은 CPU 및 DMA용 버스 master HBA 또는 공유 데이터에 모두 사용할 수 있는 메모리를 할당합니다.
구문
SCSIPORT_API PVOID ScsiPortGetUncachedExtension(
[in] PVOID HwDeviceExtension,
[in] PPORT_CONFIGURATION_INFORMATION ConfigInfo,
[in] ULONG NumberOfBytes
);
매개 변수
[in] HwDeviceExtension
하드웨어 디바이스 확장에 대한 포인터입니다. 포트 드라이버가 미니포트 드라이버를 대신하여 할당하고 초기화하는 HBA별 스토리지 영역입니다. 미니포트 드라이버는 일반적으로 HBA 상태 및 HBA의 매핑된 액세스 범위와 같은 HBA 관련 정보를 이 확장에 저장합니다. 이 영역은 미니포트 드라이버가 ScsiPortInitialize를 호출한 직후 HBA 디바이스 개체의 DeviceExtension-HwDeviceExtension> 멤버의 미니포트 드라이버에서 사용할 수 있습니다. 포트 드라이버는 디바이스를 제거할 때 이 메모리를 해제합니다.
[in] ConfigInfo
HBA의 DMA 기능에 대한 정보를 지정합니다. DmaChannel 또는 DmaPort, DmaWidth, DmaSpeed, MaximumTransferLength, ScatterGather, Master set to TRUE, NumberOfPhysicalBreaks, AdapterInterfaceType, Dma32BitAddresses, SystemIoBusNumber, AutoRequestSense 및 SrbExtensionSize 멤버를 채워야 합니다.
EISA 버스 master 어댑터의 DmaChannel과 같이 HBA와 관련이 없는 멤버는 있는 그대로 두어야 합니다.
[in] NumberOfBytes
할당할 캐시되지 않은 확장의 크기(바이트)를 나타냅니다. Windows XP 및 이전 운영 체제의 드라이버는 100KB 이상의 캐시되지 않은 확장을 할당해서는 안 되며 최대 절전 모드 파일 또는 크래시 덤프 파일에서 I/O 작업에 참여하는 경우 할당된 캐시되지 않은 확장의 양을 32KB 미만으로 제한해야 합니다.
반환 값
ScsiPortGetUncachedExtension 은 캐시되지 않은 확장에 대한 가상 주소 포인터를 반환합니다. 요청된 메모리를 할당할 수 없는 경우 NULL을 반환합니다.
설명
ScsiPortGetUncachedExtension은 미니포트 드라이버의 HwScsiFindAdapter 루틴에서만 호출할 수 있으며 버스 master HBA에 대해서만 호출할 수 있습니다. 다른 미니포트 드라이버 루틴에서 호출하면 호출자에 대한 시스템 오류 또는 잘못된 작업이 발생합니다.
고급 머신에는 캐시와 큰 메모리가 있으므로 HBA와 CPU 간에 공유할 메모리는 특별히 할당되어야 합니다. 시스템 메모리의 사서함 또는 I/O 요청 큐는 이러한 유형의 공유 메모리의 예입니다.
미니포트 드라이버는 SrbExtensionSize 를 설정해야 합니다. ScsiPortGetUncachedExtension 을 호출하기 전에 NumberOfPhysicalBreaks에 따라 요청당 스토리지의 크기를 변경합니다.
HwScsiFindAdapter 루틴은 미니포트 드라이버가 지원하는 각 버스 master HBA에 대해 ScsiPortGetUncachedExtension을 한 번만 호출할 수 있습니다.
HBA에서 사용할 수 있는 캐시되지 않은 확장의 실제 주소를 가져오려면 ScsiPortGetPhysicalAddress를 호출합니다.
ScsiPort 드라이버는 어댑터 디바이스가 중지될 때 ScsiPortGetUncachedExtension 에서 할당한 메모리를 해제합니다.
요구 사항
요구 사항 | 값 |
---|---|
대상 플랫폼 | 데스크톱 |
머리글 | srb.h(Miniport.h, Scsi.h 포함) |
라이브러리 | Scsiport.lib |