ScsiPortGetUncachedExtension 함수(srb.h)

ScsiPortGetUncachedExtension 루틴은 DMA용 CPU 및 버스 마스터 HBA 또는 공유 데이터에 사용할 수 있는 메모리를 할당합니다.

참고 SCSI 포트 드라이버 및 SCSI 미니포트 드라이버 모델은 나중에 변경되거나 사용할 수 없습니다. 대신 Storport 드라이버Storport 미니포트 드라이버 모델을 사용하는 것이 좋습니다.

구문

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, AutoRequestSenseSrbExtensionSize 멤버를 입력해야 합니다.

EISA 버스 마스터 어댑터의 DmaChannel 과 같이 HBA와 관련이 없는 멤버는 그대로 두어야 합니다.

[in] NumberOfBytes

할당할 캐시되지 않은 확장의 크기(바이트)를 나타냅니다. Windows XP 및 이전 운영 체제의 드라이버는 100킬로바이트 이상의 캐시되지 않은 확장을 할당해서는 안 되며 최대 절전 모드 파일 또는 크래시 덤프 파일에서 I/O 작업에 참여하는 경우 할당된 캐시되지 않은 확장의 양을 32킬로바이트 미만으로 제한해야 합니다.

반환 값

ScsiPortGetUncachedExtension 은 캐시되지 않은 확장에 대한 가상 주소 포인터를 반환합니다. 요청된 메모리를 할당할 수 없는 경우 NULL을 반환합니다.

설명

ScsiPortGetUncachedExtension 은 미니포트 드라이버의 HwScsiFindAdapter 루틴에서만 호출할 수 있으며 버스 마스터 HBA에 대해서만 호출할 수 있습니다. 다른 미니포트 드라이버 루틴에서 호출하면 호출자에 대한 시스템 오류 또는 잘못된 작업이 발생합니다.

고급 머신에는 캐시와 큰 메모리가 있으므로 HBA와 CPU 간에 공유할 메모리는 특별히 할당되어야 합니다. 시스템 메모리의 사서함 또는 I/O 요청 큐는 이러한 유형의 공유 메모리의 예입니다.

미니포트 드라이버는 SrbExtensionSize를 설정해야 합니다. ScsiPortGetUncachedExtension을 호출하기 전에 NumberOfPhysicalBreaks에 따라 요청당 스토리지의 크기를 변경합니다.

HwScsiFindAdapter 루틴은 미니포트 드라이버가 지원하는 각 버스 마스터 HBA에 대해 ScsiPortGetUncachedExtension을 한 번만 호출할 수 있습니다.

HBA에서 사용할 수 있는 캐시되지 않은 확장의 실제 주소를 가져오려면 ScsiPortGetPhysicalAddress를 호출합니다.

ScsiPort 드라이버는 어댑터 디바이스가 중지될 때 ScsiPortGetUncachedExtension 에서 할당한 메모리를 해제합니다.

요구 사항

   
대상 플랫폼 바탕 화면
헤더 srb.h(Miniport.h, Scsi.h 포함)
라이브러리 Scsiport.lib

참조

HwScsiFindAdapter

PORT_CONFIGURATION_INFORMATION(SCSI)

ScsiPortGetPhysicalAddress