SCSI_WMI_REQUEST_BLOCK 구조체(srb.h)
이 구조는 WMI 명령에 사용할 SCSI_REQUEST_BLOCK 특별한 버전입니다.
구문
typedef struct _SCSI_WMI_REQUEST_BLOCK {
USHORT Length;
UCHAR Function;
UCHAR SrbStatus;
UCHAR WMISubFunction;
UCHAR PathId;
UCHAR TargetId;
UCHAR Lun;
UCHAR Reserved1;
UCHAR WMIFlags;
UCHAR Reserved2[2];
ULONG SrbFlags;
ULONG DataTransferLength;
ULONG TimeOutValue;
PVOID DataBuffer;
PVOID DataPath;
PVOID Reserved3;
PVOID OriginalRequest;
PVOID SrbExtension;
ULONG Reserved4;
ULONG Reserved6;
UCHAR Reserved5[16];
} SCSI_WMI_REQUEST_BLOCK, *PSCSI_WMI_REQUEST_BLOCK;
멤버
Length
이 구조체의 크기(바이트)를 지정합니다.
Function
SRB_FUNCTION_WMI 요청이 WMI 요청임을 지정합니다. 이 멤버가 SRB_FUNCTION_WMI 설정되지 않은 경우 미니포트 드라이버가 요청에 실패해야 합니다.
SrbStatus
완료된 요청의 상태 반환합니다. 이 멤버는 요청Complete를 사용하여 ScsiPortNotification을 호출하여 요청이 완료되었음을 OS 관련 드라이버에 알리기 전에 미니포트 드라이버에서 설정해야 합니다. 이 멤버의 값은 SCSI_REQUEST_BLOCK SrbStatus 에 나열된 값일 수 있습니다.
WMISubFunction
수행할 WMI 작업을 나타냅니다. 미니포트 드라이버는 MinorFunction이 이 값으로 설정된 ScsiPortWmiDispatchFunction을 호출합니다. 하위 함수 값은 WMI 작업을 식별하는 WMI 부 IRP 번호에 해당합니다.
PathId
요청에 대한 SCSI 포트 또는 버스를 나타냅니다. 이 값은 0부터 시작합니다. SRB_WMI_FLAGS_ADAPTER_REQUEST WMIFlags에서 설정된 경우 이 멤버는 예약됩니다.
TargetId
버스의 대상 컨트롤러 또는 디바이스를 나타냅니다. SRB_WMI_FLAGS_ADAPTER_REQUEST WMIFlags에서 설정된 경우 이 멤버는 예약됩니다.
Lun
디바이스의 논리적 단위 번호를 나타냅니다. SRB_WMI_FLAGS_ADAPTER_REQUEST WMIFlags에서 설정된 경우 이 멤버는 예약됩니다.
Reserved1
시스템 사용을 위해 예약되었으며 미니포트 드라이버에서 사용할 수 없습니다.
WMIFlags
SRB_WMI_FLAGS_ADAPTER_REQUEST 설정되고 PathId, TargetId 및 Lun이 예약된 경우 WMI 요청이 어댑터용임을 나타냅니다. 그렇지 않으면 WMIFlags 는 NULL이 되며, 이는 요청이 PathId, TargetId 및 Lun으로 지정된 디바이스에 대한 요청임을 나타냅니다.
Reserved2[2]
시스템 사용을 위해 예약되었으며 미니포트 드라이버에서 사용할 수 없습니다.
SrbFlags
요청에 대한 다양한 매개 변수 및 옵션을 나타냅니다. SrbFlags 는 읽기 전용입니다. 이 멤버는 다음 플래그 중 하나 이상으로 설정됩니다.
SRB_FLAGS_DATA_IN
데이터가 디바이스에서 시스템으로 전송됨을 나타냅니다.
SRB_FLAGS_DATA_OUT
데이터가 시스템에서 디바이스로 전송됨을 나타냅니다.
SRB_FLAGS_NO_DATA_TRANSFER
이 요청을 사용하여 데이터 전송이 없음을 나타냅니다. 이 설정이 설정되면 플래그 SRB_FLAGS_DATA_OUT, SRB_FLAGS_DATA_IN 및 SRB_FLAGS_UNSPECIFIED_DIRECTION 명확합니다.
SRB_FLAGS_DISABLE_SYNCH_TRANSFER
가능한 경우 HBA가 이 전송 요청에 대해 비동기 I/O를 수행해야 했음을 나타냅니다. 이전에 동기 I/O가 협상된 경우 HBA는 전송을 수행하기 전에 비동기 I/O에 대해 재협상해야 합니다.
SRB_FLAGS_DISABLE_DISCONNECT
HBA가 이 요청을 처리하는 동안 대상이 SCSI 버스에서 연결을 끊을 수 없도록 허용해서는 안 됨을 나타냅니다.
DataTransferLength
데이터 버퍼의 크기(바이트)를 나타냅니다. 미니포트 드라이버는 BufferSize가 이 값으로 설정된 ScsiPortWmiDispatchFunction을 호출합니다. 언더런이 발생하는 경우 미니포트 드라이버는 이 멤버를 실제로 전송된 바이트 수로 업데이트해야 합니다.
TimeOutValue
OS 관련 포트 드라이버에서 시간 초과를 고려할 수 있기 전에 요청이 실행될 수 있는 간격(초)을 나타냅니다. 포트 드라이버가 이미 수행하므로 미니포트 드라이버는 요청 시간을 초과할 필요가 없습니다.
DataBuffer
데이터 버퍼를 가리킵니다. 미니포트 드라이버는 버퍼가 이 값으로 설정된 ScsiPortWmiDispatchFunction을 호출합니다. 미니포트 드라이버는 HBA에 대한 PORT_CONFIGURATION_INFORMATION MapBuffers 값에 관계없이 이 값을 데이터 포인터로 사용할 수 있습니다. 미니포트 드라이버는 DMA를 사용하여 데이터를 버퍼로 직접 전송할 수 없습니다.
DataPath
이 요청에 대한 WMI 데이터 경로를 지정합니다. 미니포트 드라이버는 DataPath가 이 값으로 설정된 ScsiPortWmiDispatchFunction을 호출합니다.
Reserved3
시스템 사용을 위해 예약되었으며 미니포트 드라이버에서 사용할 수 없습니다.
OriginalRequest
이 요청에 대한 IRP를 가리킵니다. 이 멤버는 드라이버를 최소화하는 것은 관련이 없습니다.
SrbExtension
Srb 확장을 가리킵니다. 미니포트 드라이버는 HW_INITIALIZATION_DATA SrbExtensionSize 를 0으로 설정하는 경우 이 멤버를 사용하지 않아야 합니다. SrbExtension의 메모리는 OS 관련 포트 드라이버에 의해 초기화되지 않으며, 미니포트 드라이버 결정 데이터는 HBA에서 직접 액세스할 수 있습니다. 해당 물리적 주소는 SrbExtension 포인터를 사용하여 ScsiPortGetPhysicalAddress를 호출하여 가져올 수 있습니다.
Reserved4
시스템 사용을 위해 예약되었으며 미니포트 드라이버에서 사용할 수 없습니다.
Reserved6
시스템 사용을 위해 예약되었으며 미니포트 드라이버에서 사용할 수 없습니다. 이 멤버는 WINDOWS Server 2003 SP1부터 유효합니다.
Reserved5[16]
시스템 사용을 위해 예약되었으며 미니포트 드라이버에서 사용할 수 없습니다.
설명
Windows NT 스토리지 클래스 및 필터 드라이버는 WMI SRB를 시스템 포트 드라이버로 보낼 수 있습니다. 시스템 포트 드라이버는 미니포트 드라이버를 대신하여 특정 WMI 요청을 처리합니다. 포트 드라이버가 WMI 요청을 처리할 수 없는 경우 미니포트 드라이버에 요청을 전달합니다.
미니포트 드라이버는 미니포트 드라이버가 PORT_CONFIGURATION_INFORMATION 구조에서 WmiDataProvider 를 설정한 경우에만 포트 드라이버에서 WMI 요청을 받습니다. 미니포트 드라이버가 요청을 지원하는 경우 먼저 RequestComplete를 사용하여 ScsiPortNotification을 두 번 호출한 다음 NextRequest(또는 NextLuRequest)를 사용하여 요청을 처리하고 완료해야 합니다.
미니포트 드라이버에서 WMI를 지원하는 방법에 대한 자세한 내용은 Windows 관리 계측을 참조하세요.
요구 사항
요구 사항 | 값 |
---|---|
헤더 | srb.h(Storport.h, Srb.h, Storport.h, Minitape.h 포함) |