다음을 통해 공유


PORT_CONFIGURATION_INFORMATION 구조체(srb.h)

SCSI(PORT_CONFIGURATION_INFORMATION)에는 HBA에 대한 구성 정보가 포함되어 있습니다. OS 관련 포트 드라이버는 이 구조를 할당하고 초기화하고, 가능한 한 많은 HBA 관련 구성 정보를 제공하고, 미니포트 드라이버의 HwScsiFindAdapter 루틴에 구조를 전달합니다. 포트 드라이버는 미니포트 드라이버의 HW_INITIALIZATION_DATA 구조에서 이 구조체에 대한 일부 정보를 가져옵니다. 미니포트 드라이버의 HwScsiFindAdapter 루틴은 미니포트 드라이버가 HBA를 지원할 수 있는지 여부를 결정하고, 그렇다면 PORT_CONFIGURATION_INFORMATION 구조의 관련 나머지 정보를 채우는 역할을 합니다.

참고

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

구문

typedef struct _PORT_CONFIGURATION_INFORMATION {
  ULONG           Length;
  ULONG           SystemIoBusNumber;
  INTERFACE_TYPE  AdapterInterfaceType;
  ULONG           BusInterruptLevel;
  ULONG           BusInterruptVector;
  KINTERRUPT_MODE InterruptMode;
  ULONG           MaximumTransferLength;
  ULONG           NumberOfPhysicalBreaks;
  ULONG           DmaChannel;
  ULONG           DmaPort;
  DMA_WIDTH       DmaWidth;
  DMA_SPEED       DmaSpeed;
  ULONG           AlignmentMask;
  ULONG           NumberOfAccessRanges;
  ACCESS_RANGE( )   *AccessRanges[];
  PVOID           Reserved;
  UCHAR           NumberOfBuses;
  UCHAR           InitiatorBusId[8];
  BOOLEAN         ScatterGather;
  BOOLEAN         Master;
  BOOLEAN         CachesData;
  BOOLEAN         AdapterScansDown;
  BOOLEAN         AtdiskPrimaryClaimed;
  BOOLEAN         AtdiskSecondaryClaimed;
  BOOLEAN         Dma32BitAddresses;
  BOOLEAN         DemandMode;
  BOOLEAN         MapBuffers;
  BOOLEAN         NeedPhysicalAddresses;
  BOOLEAN         TaggedQueuing;
  BOOLEAN         AutoRequestSense;
  BOOLEAN         MultipleRequestPerLu;
  BOOLEAN         ReceiveEvent;
  BOOLEAN         RealModeInitialized;
  BOOLEAN         BufferAccessScsiPortControlled;
  UCHAR           MaximumNumberOfTargets;
  UCHAR           ReservedUchars[2];
  ULONG           SlotNumber;
  ULONG           BusInterruptLevel2;
  ULONG           BusInterruptVector2;
  KINTERRUPT_MODE InterruptMode2;
  ULONG           DmaChannel2;
  ULONG           DmaPort2;
  DMA_WIDTH       DmaWidth2;
  DMA_SPEED       DmaSpeed2;
  ULONG           DeviceExtensionSize;
  ULONG           SpecificLuExtensionSize;
  ULONG           SrbExtensionSize;
  UCHAR           Dma64BitAddresses;
  BOOLEAN         ResetTargetSupported;
  UCHAR           MaximumNumberOfLogicalUnits;
  BOOLEAN         WmiDataProvider;
} PORT_CONFIGURATION_INFORMATION, *PPORT_CONFIGURATION_INFORMATION;

멤버

Length

이 구조체의 크기를 바이트 단위로 지정합니다. 실제로 OS 관련 포트 드라이버에서 항상 초기화되는 이 멤버는 포트 드라이버에서 사용하는 이 구조체의 버전을 나타냅니다.

SystemIoBusNumber

HBA가 연결된 I/O 버스의 시스템 할당 번호를 지정합니다. OS 관련 포트 드라이버는 항상 이 멤버를 초기화합니다. 플랫폼에 지정된 AdapterInterfaceType의 여러 I/O 버스가 있을 수 있으므로 해당 값은 시스템 할당입니다.

AdapterInterfaceType

I/O 버스 인터페이스를 식별합니다. OS 관련 포트 드라이버는 항상 이 멤버를 HW_INITIALIZATION_DATA(SCSI) 구조의 미니포트 드라이버에 지정된 값으로 설정합니다.

BusInterruptLevel

버스 상대 인터럽트 요청 수준을 지정합니다. OS 관련 포트 드라이버는 HBA의 인터럽트 사용에 대해 가정하지 않으므로 기본값은 0입니다. 지정된 AdapterInterfaceType 및 HBA에 따라 이 멤버에 대해 설정된 값은 IsaMicroChannel 유형 버스와 같이 버스의 IRQL에 해당할 수 있습니다. 어댑터가 수준 구분 인터럽트용으로 구성된 경우 Eisa HBA의 드라이버는 이 값을 HBA의 버스 상대 IRQL로 설정해야 합니다.

BusInterruptVector

HBA에서 반환하는 버스 상대 벡터를 지정합니다. OS 관련 포트 드라이버는 HBA의 인터럽트 사용에 대해 가정하지 않으므로 기본값은 0입니다. 이 멤버는 HBA에 대해 BusInterruptLevel 멤버를 설정한 드라이버와 관련이 없습니다. 이는 PCIBus와 같은 인터럽트 벡터를 사용하는 I/O 버스 유형에 대한 HBA와 관련이 있습니다.

InterruptMode

HBA가 LevelSensitive 또는 래치( "에지 트리거"라고도 함) 인터럽트 사용 여부를 지정합니다. OS 관련 포트 드라이버는 이 멤버를 버스 및 디바이스에 적합한 값(예: PCIBusLevelSensitive)으로 초기화합니다. Eisa HBA의 드라이버는 어댑터가 수준 구분 인터럽트용으로 구성된 경우 이 값을 다시 설정해야 합니다. MicroChannel 유형 버스와 같이 레벨에 민감한 인터럽트(예: I/O 버스)의 HBA 드라이버가 있어야 합니다.

MaximumTransferLength

HBA가 단일 전송 작업에서 전송할 수 있는 최대 바이트 수를 지정합니다. 기본적으로 이 멤버의 값은 무제한 최대 전송 크기를 나타내는 SP_UNINITIALIZED_VALUE. HBA의 전송 지원이 더 제한된 경우 미니포트 드라이버는 HBA의 전송 용량에 따라 이 멤버를 다시 설정해야 합니다. 미니포트 드라이버의 HwScsiInterrupt 루틴이 HBA에서 인터럽트를 사용하지 않도록 설정할 수 없는 경우 드라이버 개발 중에 이 멤버를 조정하여 해당 미니포트 드라이버의 ISR에 소요된 시간이 마우스가 "점프" 또는 직렬/병렬 처리량이 사용자 눈에 띄는 수준으로 떨어지지 않도록 할 수 있습니다.

NumberOfPhysicalBreaks

HBA가 분산/수집을 지원하는 경우 데이터 버퍼가 가질 수 있는 주소 범위 간의 최대 나누기 수를 지정합니다. 즉, 분산/수집 목록 수에서 1을 뺀 값입니다. 기본적으로 이 멤버의 값은 SP_UNINITIALIZED_VALUE, 이는 HBA가 무제한의 물리적 변조를 지원할 수 있음을 나타냅니다. 포트 드라이버가 이 멤버에 대한 값을 설정하는 경우 미니포트 드라이버는 값을 낮게 조정할 수 있지만 더 높은 값은 조정할 수 없습니다. 이 멤버가 SP_UNINITIALIZED_VALUE 경우 미니포트 드라이버는 HBA의 분산/수집 용량에 따라 이 멤버를 다시 설정해야 하며 0은 분산/수집 지원이 없음을 나타냅니다.

DmaChannel

하위 HBA에서 사용하는 DMA 채널을 지정합니다. 기본적으로 이 멤버의 값은 SP_UNINITIALIZED_VALUE. HBA가 시스템 DMA 컨트롤러를 사용하고 지정된 AdapterInterfaceTypeMicroChannel을 제외한 모든 값인 경우 미니포트 드라이버는 이 멤버를 다시 설정해야 합니다.

DmaPort

하위 HBA에서 사용하는 DMA 포트를 지정합니다. 기본적으로 이 멤버의 값은 SP_UNINITIALIZED_VALUE. HBA가 시스템 DMA 컨트롤러를 사용하고 지정된 AdapterInterfaceTypeMicroChannel인 경우 미니포트 드라이버는 이 멤버를 설정해야 합니다.

DmaWidth

HBA에서 DMA를 사용하는 경우 DMA 전송의 너비를 지정합니다. 기본적으로 이 멤버의 값은 0입니다. HBA가 DMA를 수행하는 경우 미니포트 드라이버는 이 멤버를 Width8Bits, Width16Bits 또는 Width32Bits 중 하나로 다시 설정해야 합니다.

DmaSpeed

Eisa HBA의 DMA 데이터 전송 속도를 지정합니다. 기본적으로 이 멤버의 값은 호환성 타이밍을 지정합니다. 이 멤버에 허용되는 값은 Compatible, TypeA, TypeB 또는 TypeC입니다.

AlignmentMask

전송 작업에 HBA에 필요한 버퍼에 대한 맞춤 제한을 나타내는 마스크를 포함합니다. 유효한 마스크 값은 다른 버전의 Windows에서 메모리 관리자의 특성에 따라 제한됩니다. Windows 95 또는 Windows 98에서 허용되는 마스크 값은 0(바이트 정렬), 1(단어 정렬) 또는 3(DWORD 맞춤)입니다. Windows NT 및 Windows 2000에서 유효한 마스크 값은 0(바이트 정렬), 1(단어 정렬), 3(DWORD 맞춤) 및 7(이중 DWORD 맞춤)입니다. HBA가 분산/수집을 지원하는 경우 미니포트 드라이버는 이 마스크를 설정해야 합니다.

NumberOfAccessRanges

다음에 설명된 배열의 AccessRanges 요소 수를 지정합니다. OS 관련 포트 드라이버는 항상 이 멤버를 ScsiPortInitialize라는 미니포트 드라이버가 HW_INITIALIZATION_DATA 구조에 전달된 값으로 설정합니다.

AccessRanges

Reserved

시스템 사용을 위해 예약되었으며 미니포트 드라이버에서 사용할 수 없습니다.

NumberOfBuses

HBA에서 제어하는 SCSI 버스 수를 지정합니다. 기본적으로 이 멤버의 값은 0입니다.

InitiatorBusId[8]

초기자 버스 ID를 나타냅니다. 입력 InitiatorBusId[0]에 값이 0이면 HBA에서 HBA를 쿼리하여 결정된 특정 값을 사용할 필요가 없는 경우 미니포트 드라이버가 기본값을 할당할 수 있습니다. 그렇지 않으면 미니포트 드라이버는 가능한 경우 포트 드라이버에서 할당한 0이 아닌 값을 사용해야 합니다. 필요한 경우 HBA를 쿼리하여 적절한 값을 확인하려면 모든 미니포트 드라이버가 HBA에서 사용하는 것과 일치하도록 InitiatorBusId 사양을 업데이트해야 합니다.

미니포트 드라이버는 NumberOfBuses 값으로 표시된 대로 HBA에서 지원하는 각 SCSI 버스에 대한 항목을 설정해야 합니다.

ScatterGather

HBA가 분산/수집을 지원하는 경우 TRUE 를 나타냅니다. FALSE이면 HBA는 분산/수집을 지원하지 않습니다. 기본적으로 이 멤버의 값은 FALSE입니다.

Master

HBA가 버스 master TRUE인 경우를 나타냅니다. FALSE인 경우 HBA는 버스 master 아닙니다. 기본적으로 이 멤버의 값은 FALSE입니다.

CachesData

HBA가 데이터를 캐시하거나 주변 장치에서 캐시된 상태를 유지하는 경우 TRUE 를 나타냅니다. FALSE이면 HBA는 데이터를 캐시하지 않거나 주변 장치에서 캐시된 상태를 유지 관리하지 않습니다. 기본적으로 이 멤버의 값은 FALSE입니다. 이것이 TRUE로 다시 설정되면 OS 관련 포트 드라이버는 파일 시스템 캐시 플러시 및 시스템 종료와 같은 특정 시스템 이벤트가 발생할 때 미니포트 드라이버에 알깁니다. 예를 들어 버스의 컨트롤러가 두 개의 디스크를 미러링하는 경우 미니포트 드라이버는 일반적으로 이 멤버를 TRUE로 설정합니다.

AdapterScansDown

HBA의 BIOS가 SCSI 버스 대상을 7에서 0으로 검색하는 경우 TRUE 를 나타냅니다. FALSE이면 HBA의 BIOS는 ID 0부터 시작하여 MaximumTargetIds까지 위쪽으로 검사하는 SCSI 버스 대상을 찾습니다. 기본적으로 AdapterScansDown 값은 FALSE입니다.

AtdiskPrimaryClaimed

0x1FF 0x1F0 기본 "AT"(WD1003 호환) 디스크 주소 범위가 해당 디바이스에 대한 다른 드라이버에 의해 레지스트리에서 클레임된 경우를 나타냅니다 . OS 관련 포트 드라이버는 항상 이 멤버를 초기화합니다. 이 멤버의 입력 값이 TRUE이면 미니포트 드라이버는 이미 로드된 드라이버가 디바이스 범위를 클레임했다고 가정해야 합니다. 입력 값이 FALSE이면 미니포트 드라이버는 "AT" 디스크 컨트롤러를 에뮬레이트하는 HBA의 주소 범위를 클레임하고 이 멤버를 TRUE로 다시 설정하여 "AT" 디스크 드라이버 또는 이후에 로드된 미니포트 드라이버에 의해 이 범위에 대한 액세스를 방지할 수 있습니다.

AtdiskSecondaryClaimed

디바이스에 대한 다른 드라이버가 레지스트리에서 0x17F 0x170 보조 AT 디스크 주소 범위가 TRUE 인 경우를 나타냅니다. FALSE이면 다른 드라이버가 레지스트리에서 보조 AT 디스크 주소 범위를 클레임하지 않았습니다. OS 관련 포트 드라이버는 항상 이 멤버를 초기화합니다. 미니포트 드라이버는 이 멤버를 AtdiskPrimaryClaimed로 처리해야 합니다.

Dma32BitAddresses

HBA에 32개의 주소 줄이 있고 실제 주소가 0x00FFFFFF 초과하여 메모리에 액세스할 수 있는 경우 TRUE 를 나타냅니다. FALSE이면 HBA에는 32가 아닌 여러 DMA 주소 줄이 있습니다. 기본적으로 이 멤버의 값은 FALSE입니다. 미니포트 드라이버가 Dma64BitAddresses를 설정하는 경우 이 멤버는 FALSE여야 합니다.

DemandMode

TRUE이면 시스템 DMA 컨트롤러가 단일 주기 작업이 아닌 수요 모드로 프로그래밍되어야 합니다. HBA가 하위 디바이스가 아닌 경우 이 멤버는 FALSE여야 합니다.

MapBuffers

TRUE 이면 데이터 버퍼를 시스템 가상 주소 범위에 매핑해야 합니다. FALSE이면 데이터 버퍼를 시스템 가상 주소에 매핑할 필요가 없습니다. OS 관련 포트 드라이버는 항상 이 멤버를 scsiPortInitialize라는 미니포트 드라이버의 경우 SCSI(HW_INITIALIZATION_DATA) 구조에 전달된 값으로 설정합니다. 미니포트 드라이버는 제어하는 특정 HBA에 대해 이 값을 다시 설정할 수 있습니다. FALSE인 경우 미니포트 드라이버는 Srb.DataBuffer에 직접 액세스해서는 안됩니다.

NeedPhysicalAddresses

HBA에서 요구하는 대로 미니포트 드라이버가 가상 주소를 실제 주소로 변환해야 하는 경우 TRUE 를 나타냅니다. FALSE인 경우 미니포트 드라이버는 가상 주소를 실제 주소로 변환할 필요가 없습니다. OS 관련 포트 드라이버는 항상 ScsiPortInitialize라는 미니포트 드라이버가 scsiPortInitialize를 호출할 때 SCSI(HW_INITIALIZATION_DATA) 구조에 전달된 값으로 이 멤버를 설정합니다. 미니포트 드라이버는 제어하는 특정 HBA에 대해 이 값을 다시 설정할 수 있습니다.

TaggedQueuing

HBA가 SCSI 태그를 사용하여 여러 요청의 큐를 지원하는 TRUE 시기를 나타냅니다. FALSE인 경우 HBA는 SCSI 태그가 지정된 큐를 지원하지 않습니다. OS 관련 포트 드라이버는 항상 ScsiPortInitialize라는 미니포트 드라이버가 scsiPortInitialize를 호출할 때 SCSI(HW_INITIALIZATION_DATA) 구조에 전달된 값으로 이 멤버를 설정합니다. 미니포트 드라이버는 제어하는 특정 HBA에 대해 이 값을 다시 설정할 수 있습니다.

AutoRequestSense

HBA가 자동 요청 센스를 지원하는 TRUE 시기를 나타냅니다. FALSE이면 HBA는 자동 요청 센스(sense)를 지원하지 않습니다. OS 관련 포트 드라이버는 항상 ScsiPortInitialize라는 미니포트 드라이버가 scsiPortInitialize를 호출할 때 SCSI(HW_INITIALIZATION_DATA) 구조에 전달된 값으로 이 멤버를 설정합니다. 미니포트 드라이버는 제어하는 특정 HBA에 대해 이 값을 다시 설정할 수 있습니다. 버스 master HBA의 드라이버가 ScsiPortGetUncachedExtension을 호출하기 전에 이 멤버를 TRUE로 설정해야 합니다.

MultipleRequestPerLu

HBA가 논리 단위당 여러 요청을 지원하는 경우 TRUE 를 나타냅니다. FALSE인 경우 HBA는 논리 단위당 여러 요청을 지원하지 않습니다. 어댑터가 요청을 캐시하는 메커니즘은 어댑터 정의입니다. OS 관련 포트 드라이버는 항상 ScsiPortInitialize라는 미니포트 드라이버가 scsiPortInitialize를 호출할 때 SCSI(HW_INITIALIZATION_DATA) 구조에 전달된 값으로 이 멤버를 설정합니다. 미니포트 드라이버는 제어하는 특정 HBA에 대해 이 값을 다시 설정할 수 있습니다.

ReceiveEvent

HBA가 SCSI 수신 이벤트 작업을 지원하는 경우 TRUE 를 나타냅니다. FALSE인 경우 HBA는 SCSI 수신 이벤트 작업을 지원하지 않습니다. OS 관련 포트 드라이버는 항상 ScsiPortInitialize라는 미니포트 드라이버가 scsiPortInitialize를 호출할 때 SCSI(HW_INITIALIZATION_DATA) 구조에 전달된 값으로 이 멤버를 설정합니다. 미니포트 드라이버는 제어하는 특정 HBA에 대해 이 값을 다시 설정할 수 있습니다.

RealModeInitialized

TRUE가 (x86 전용) 실제 모드 드라이버가 이미 HBA를 초기화했음을 나타냅니다. FALSE이면 HBA가 이전에 실제 모드 드라이버에 의해 초기화되지 않았습니다. OS 종속 포트 드라이버는 항상 이 멤버를 초기화합니다. TRUE로 설정된 경우 드라이버의 초기화 시퀀스가 실제 모드 HBA 초기화와 동일한 경우 미니포트 드라이버는 HBA를 초기화하지 않아야 합니다. 이러한 상황에서 HBA를 다시 초기화하지 않을 경우 미니포트 드라이버 로드 속도가 훨씬 빨라집니다. 이 멤버의 값은 x86 기반 플랫폼에서 보호 모드로 실행되는 동안 항상 HBA를 초기화하는 미니포트 드라이버와 CISC 또는 RISC 기반 플랫폼에서 실행되는 모든 미니포트 드라이버와 관련이 없습니다.

BufferAccessScsiPortControlled

미니포트 드라이버가 항상 ScsiPortXxx를 호출하여 SRB의 데이터 버퍼 및/또는 요청 감지 정보에 액세스하여 OS 관련 포트 드라이버가 I/O 요청 처리를 최적화할 수 있도록 하는 TRUE 시기를 나타냅니다. FALSE이면 미니포트 드라이버는 데이터 버퍼 또는 요청 감지 정보에 액세스하기 위해 ScsiPortXxx 루틴을 호출할 필요가 없습니다. 이 멤버를 FALSE 로 설정하면 HBA의 I/O 성능이 저하됩니다. ScsiPortXxx 이외의 루틴을 호출하면 Microsoft 운영 체제에서 미니포트 드라이버를 보고할 수 없게 됩니다.

MaximumNumberOfTargets

HBA가 제어할 수 있는 대상 주변 장치 수를 지정합니다. 기본적으로 이 멤버의 값은 SCSI 표준에 따라 SCSI_MAXIMUM_TARGETS. 미니포트 드라이버는 HBA에 더 제한된 기능이 있거나 더 큰 값으로 이 멤버를 더 작은 값으로 다시 설정할 수 있습니다. 이는 HBA에 와이드 SCSI 또는 파이버 채널 기능이 있음을 나타냅니다. 이 값은 SCSI_MAXIMUM_TARGETS_PER_BUS 제한됩니다.

ReservedUchars[2]

시스템 사용을 위해 예약되었으며 미니포트 드라이버에서 사용할 수 없습니다.

SlotNumber

미니포트 드라이버가 ScsiPortInitialize라고 할 때 HW_INITIALIZATION_DATA(SCSI) 구조에 지정된 VendorIdDeviceId와 일치하는 값을 가진 HBA의 슬롯 번호를 지정합니다.

BusInterruptLevel2

시스템 사용을 위해 예약되었으며 미니포트 드라이버에서 사용할 수 없습니다.

BusInterruptVector2

시스템 사용을 위해 예약되었으며 미니포트 드라이버에서 사용할 수 없습니다.

InterruptMode2

시스템 사용을 위해 예약되었으며 미니포트 드라이버에서 사용할 수 없습니다.

DmaChannel2

시스템 사용을 위해 예약되었으며 미니포트 드라이버에서 사용할 수 없습니다.

DmaPort2

시스템 사용을 위해 예약되었으며 미니포트 드라이버에서 사용할 수 없습니다.

DmaWidth2

시스템 사용을 위해 예약되었으며 미니포트 드라이버에서 사용할 수 없습니다.

DmaSpeed2

시스템 사용을 위해 예약되었으며 미니포트 드라이버에서 사용할 수 없습니다.

DeviceExtensionSize

64K보다 큰 데이터 전송을 처리하기 위해 HBA별 디바이스 확장에 미니포트 드라이버에 필요한 크기(바이트)를 지정합니다. 이 경우 이 드라이버의 레지스트리에 정의된 크기보다 더 큰 분산/수집 목록이 필요할 수 있습니다.

SpecificLuExtensionSize

64K보다 큰 데이터 전송을 처리하기 위해 미니포트 드라이버가 논리 단위별 스토리지(있는 경우)에 필요한 크기(바이트)를 지정합니다. 미니포트 드라이버가 스토리지가 필요한 LU별 정보를 유지 관리하지 않는 경우 이 멤버를 0으로 설정합니다. 이 값은 컨트롤러가 실제로 지원할 수 있는 것과 관계없이 HBA가 32비트 주소를 받을 수 있다는 가정을 기반으로 합니다. 64비트 주소를 처리하기 위해 LUN 또는 SRB 확장에 추가 공간이 필요한 경우 ScsiPortGetUncachedExtension과 같은 루틴과 함께 사용하기 전에 이 값을 적절하게 조정해야 합니다.

SrbExtensionSize

64K보다 큰 데이터 전송을 처리하기 위해 미니포트 드라이버가 요청당 스토리지에 필요한 크기(바이트)를 지정합니다. ScsiPortGetUncachedExtension을 호출하기 전에 이 멤버를 설정하여 NumberOfPhysicalBreaks에 따라 요청당 스토리지의 크기를 변경합니다. 미니포트 드라이버가 스토리지가 필요한 SRB별 정보를 유지 관리하지 않는 경우 이 멤버를 0으로 설정합니다. 이 값은 컨트롤러가 실제로 지원할 수 있는 것과 관계없이 HBA가 32비트 주소를 받을 수 있다는 가정을 기반으로 합니다. 64비트 주소를 처리하기 위해 LUN 또는 SRB 확장에 추가 공간이 필요한 경우 ScsiPortGetUncachedExtension과 같은 루틴과 함께 사용하기 전에 이 값을 적절하게 조정해야 합니다.

Dma64BitAddresses

HBA가 4GB보다 큰 주소에 액세스할 수 있음을 나타내거나 Dma64BitAddresses 에 SCSI_DMA64_MINIPORT_SUPPORTED 값이 포함된 경우 0x0FFFFFFFF. Windows 2000 이전에 ScsiPort는 SCSI(HW_INITIALIZATION_DATA)의 내용에 따라 이 값을 설정했습니다. 더 이상 그렇지 않습니다. Windows 2000에서 Dma64BitAddresses 값은 미니포트 드라이버 콜백 HwScsiFindAdapter 에 의해서만 결정됩니다. 운영 체제에서 64비트 주소 공간을 지원하는 경우 포트 드라이버는 이 멤버의 미니포트 드라이버에 SCSI_DMA64_SYSTEM_SUPPORTED 값을 전달합니다. PORT_CONFIGURATION_INFORMATION 설명한 HBA가 32비트보다 큰 주소 공간도 지원하는 경우 포트/미니포트 드라이버는 전체 64비트 주소 지정을 지원해야 하며, 미니포트 드라이버의 콜백 HwScsiFindAdapter포트 드라이버에서 할당한 이전 값에 SCSI_DMA64_MINIPORT_SUPPORTED 값을 할당하여 이를 나타냅니다. 미니포트 드라이버가 ScsiPortGetUncachedExtension을 호출하기 전에 올바른 값을 Dma64BitAddresses 멤버에 할당해야 합니다.

ResetTargetSupported

사용되지 않습니다. ScsiPort 드라이버는 더 이상 미니포트 드라이버에 SRB_FUNCTION_RESET_DEVICE 요청을 보내지 않습니다. 이 멤버를 사용하지 마세요.

MaximumNumberOfLogicalUnits

HBA가 제어할 수 있는 대상당 최대 논리 단위 수를 지정합니다. 기본적으로 이 멤버의 값은 SCSI_MAXIMUM_LOGICAL_UNITS. 미니포트 드라이버는 HBA에 더 제한된 기능이 있거나 HBA에 SCSI-3 기능이 있음을 나타내는 더 큰 값으로 이 멤버를 더 작은 값으로 다시 설정할 수 있습니다.

WmiDataProvider

미니포트 드라이버가 WMI(Windows Management Instrumentation) 요청에 응답하는 경우 TRUE 를 나타냅니다. FALSE이면 미니포트 드라이버가 WMI(Windows Management Instrumentation) 요청에 응답하지 않습니다. 기본적으로 이 멤버의 값은 FALSE입니다.

설명

초기화된 특정 멤버는 HBA 미니포트 드라이버와 OS 관련 포트 드라이버에서 사용할 수 있는 구성 정보에 따라 달라집니다. OS 관련 포트 드라이버는 미니포트 드라이버의 HwScsiFindAdapter 루틴에 구성 정보를 제공할 수 없는 모든 멤버의 기본값을 설정합니다.

OS 관련 포트 드라이버가 초기화된 모든 값을 전달하지 않는 경우 모든 HBA 미니포트 드라이버에는 관련 멤버에 사용할 기본값 집합이 하나 이상 있어야 합니다.

HwScsiFindAdapter 루틴은 드라이버가 지원하는 HBA와 관련된 모든 멤버를 업데이트해야 합니다.

미니포트 드라이버보다 나중에 로드되는 Windows NT 스토리지 클래스 드라이버는 각 미니포트 드라이버의 HwScsiFindAdapter 루틴에서 제공하는 정보에 따라 후속 I/O 요청을 설정합니다. 예를 들어 각 미니포트 드라이버에서 제공하는 MaximumTransferLengthNumberOfPhysicalBreaks 값은 클래스 드라이버가 HBA의 제한에 맞게 큰 전송 요청을 부분 전송 집합으로 분할해야 하는지 여부를 제어합니다.

PORT_CONFIGURATION_INFORMATION Dma64BitAddresses 멤버는 더 이상 부울 값으로 간주되어서는 안 됩니다. SCSI_DMA64_SYSTEM_SUPPORTED 값은 포트/미니포트 드라이버가 64비트 주소 지정을 지원해야 함을 나타내지만 ScsiPortGetUncachedExtension 루틴은 여전히 0이 아닌 Dma64BitAddresses 값을 64비 트 지원이 필요함을 나타내는 것으로 해석합니다. 즉, Dma64BitAddresses에 BOOLEAN 값을 할당하는 레거시 드라이버에서 호출할 때 ScsiPortGetUncachedExtension이 여전히 제대로 작동합니다.

Dma64BitAddresses 외에도 PORT_CONFIGURATION_INFORMATION 및 HW_INITIALIZATION_DATA 모두 값이 다르게 처리되어야 하는 SpecificLuExtensionSizeSrbExtensionSize라는 멤버 쌍이 있습니다. 미니포트 드라이버는 컨트롤러가 실제로 지원할 수 있는 항목에 관계없이 HBA가 32비트 주소를 수신할 수 있다는 가정하에 HW_INITIALIZATION_DATA SpecificLuExtensionSizeSrbExtensionSize 의 초기 값을 계산해야 합니다. PORT_CONFIGURATION_INFORMATION SpecificLuExtensionSizeSrbExtensionSize 의 기본값은 PORT_CONFIGURATION_INFORMATION 값이 HW_INITIALIZATION_DATA 값에서 파생되기 때문에 32비트 주소 지정을 기반으로 합니다.

즉, 미니포트 드라이버가 64비트 물리적 주소를 처리하기 위해 LUN 확장 또는 SRB 확장에 추가 공간이 필요한 경우 PORT_CONFIGURATION_INFORMATION SpecificLuExtensionSizeSrbExtensionSize 값을 수정하여 이를 고려한 후 scsiPortGetUncachedExtension에 PORT_CONFIGURATION_INFORMATION 전달해야 합니다.

요구 사항

요구 사항
헤더 srb.h(Srb.h, Storport.h, Strmini.h 포함)

추가 정보

ACCESS_RANGE

SCSI(HW_INITIALIZATION_DATA)

HwScsiFindAdapter

ScsiPortGetDeviceBase

ScsiPortGetUncachedExtension

ScsiPortInitialize

ScsiPortValidateRange