다음을 통해 공유


SCSI_REQUEST_BLOCK 구조체(srb.h)

SCSI_REQUEST_BLOCK 구조체는 SRB 함수와 연결됩니다.

참고

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

구문

typedef struct _SCSI_REQUEST_BLOCK {
  USHORT                     Length;
  UCHAR                      Function;
  UCHAR                      SrbStatus;
  UCHAR                      ScsiStatus;
  UCHAR                      PathId;
  UCHAR                      TargetId;
  UCHAR                      Lun;
  UCHAR                      QueueTag;
  UCHAR                      QueueAction;
  UCHAR                      CdbLength;
  UCHAR                      SenseInfoBufferLength;
  ULONG                      SrbFlags;
  ULONG                      DataTransferLength;
  ULONG                      TimeOutValue;
  PVOID                      DataBuffer;
  PVOID                      SenseInfoBuffer;
  struct _SCSI_REQUEST_BLOCK *NextSrb;
  PVOID                      OriginalRequest;
  PVOID                      SrbExtension;
  union {
    ULONG InternalStatus;
    ULONG QueueSortKey;
    ULONG LinkTimeoutValue;
  };
  ULONG                      Reserved;
  UCHAR                      Cdb[16];
} SCSI_REQUEST_BLOCK, *PSCSI_REQUEST_BLOCK;

멤버

Length

이 구조체의 크기(바이트)를 지정합니다.

Function

수행할 작업을 지정합니다. 이 작업은 다음 값 중 하나일 수 있습니다.

작업
SRB_FUNCTION_EXECUTE_SCSI(0x00) SCSI 디바이스 I/O 요청은 대상 논리 단위에서 실행되어야 합니다.
SRB_FUNCTION_ABORT_COMMAND(0x10) NextSrb 멤버가 가리키는 요청을 취소하려면 SCSIMESS_ABORT 메시지를 보내야 합니다. 태그가 지정된 큐 요청인 경우 대신 SCSIMESS_ABORT_WITH_TAG 메시지를 사용해야 합니다. 표시된 요청이 완료된 경우 이 요청은 정상적으로 완료되어야 합니다. SRB 함수, PathId, TargetId, LunNextSrb 멤버만 유효합니다.
SRB_FUNCTION_RESET_DEVICE(0x13) ScsiPort 드라이버는 더 이상 이 SRB를 미니포트로 보내지 않습니다. Storport 미니포트 드라이버만 이 SRB를 사용합니다. SCSI 대상 컨트롤러는 SCSIMESS_BUS_DEVICE_RESET 메시지를 사용하여 다시 설정해야 합니다. 미니포트 드라이버는 대상 컨트롤러에 대한 활성 요청을 완료해야 합니다. SRB 함수, TargetIdPathId 멤버만 유효합니다.
SRB_FUNCTION_RESET_LOGICAL_UNIT(0x20) 가능한 경우 논리 단위를 다시 설정해야 합니다. HBA 미니포트 드라이버는 논리 단위에 대한 활성 요청을 완료해야 합니다. SRB의 함수, PathId, TargetIdLun 멤버만 유효합니다. Storport는 이러한 유형의 재설정을 지원하지만 SCSI 포트는 지원하지 않습니다.
SRB_FUNCTION_RESET_BUS(0x12) SCSI 버스는 SCSIMESS_BUS_DEVICE_RESET 메시지를 사용하여 다시 설정해야 합니다. 미니포트 드라이버는 지정된 요청의 시간이 초과되고 시간 제한 요청을 중단하라는 후속 요청도 시간이 초과된 경우에만 이 요청을 받습니다. SRB 함수PathId 멤버만 유효합니다.
SRB_FUNCTION_TERMINATE_IO(0x14) NextSrb 멤버가 가리키는 요청을 취소하려면 SCSIMESS_TERMINATE_IO_PROCESS 메시지를 보내야 합니다. 표시된 요청이 이미 완료된 경우 이 요청은 정상적으로 완료되어야 합니다. SRB 함수, PathId, TargetId, LunNextSrb 멤버만 유효합니다.
SRB_FUNCTION_RELEASE_RECOVERY(0x11) SCSIMESS_RELEASE_RECOVERY 메시지를 대상 컨트롤러로 보내야 합니다. SRB 함수, PathId, TargetIdLun 멤버만 유효합니다.
SRB_FUNCTION_RECEIVE_EVENT(0x03) HBA는 주소가 지정된 대상에서 비동기 이벤트 알림을 받을 수 있도록 준비해야 합니다. SRB DataBuffer 멤버는 데이터를 배치해야 하는 위치를 나타냅니다.
SRB_FUNCTION_SHUTDOWN(0x07) 시스템이 종료되고 있습니다. 이 요청은 HBA에 대한 PORT_CONFIGURATION_INFORMATION CachesDataTRUE 로 설정한 경우에만 미니포트 드라이버로 전송됩니다. 이러한 미니포트 드라이버는 모든 시스템 작업이 실제로 중지되기 전에 이러한 알림 중 몇 가지를 수신할 수 있습니다. 그러나 마지막 종료 알림은 마지막 시작 I/O 후에 발생합니다. SRB 함수, PathId, TargetIdLun 멤버만 유효합니다.
SRB_FUNCTION_FLUSH(0x08) 미니포트 드라이버는 대상 디바이스에 대해 캐시된 데이터를 플러시해야 합니다. 이 요청은 HBA에 대한 PORT_CONFIGURATION_INFORMATION CachesDataTRUE 로 설정한 경우에만 미니포트 드라이버로 전송됩니다. SRB 함수, PathId, TargetIdLun 멤버만 유효합니다.
SRB_FUNCTION_IO_CONTROL(0x02) 요청은 전용 HBA를 사용하는 사용자 모드 애플리케이션에서 시작된 I/O 제어 요청입니다. SRB DataBuffer 는 SRB_IO_CONTROL 헤더와 데이터 영역을 가리킵니다. DataBuffer의 값은 MapBuffers 값에 관계없이 드라이버에서 사용할 수 있습니다. 미니포트 드라이버가 초기화할 때 SRB 확장을 요청한 경우 SrbExtension 멤버와 함께 SRB 함수, SrbFlags, TimeOutValue, DataBufferDataTransferLength 멤버만 유효합니다. 미니포트 드라이버가 이 요청을 지원하도록 애플리케이션 전용 HBA를 제어하는 경우 미니포트 드라이버는 요청을 실행하고 SRB가 완료될 때 RequestCompleteNextRequest를 사용하여 ScsiPortNotification에 대한 일반적인 호출 메커니즘을 사용하여 OS 관련 포트 드라이버에 알립니다.
SRB_FUNCTION_LOCK_QUEUE(0x18) 일반적으로 전원 요청이 처리되는 동안 포트 드라이버가 특정 논리 단위에 대해 큐에 대기하는 요청을 보유합니다. SRB 길이, 함수, SrbFlagsOriginalRequest 멤버만 유효합니다. 큐가 잠기면 SRB_FLAGS_BYPASS_LOCKED_QUEUE SrbFlags ORed가 있는 요청만 처리됩니다. SCSI 미니포트 드라이버는 SRB_FUNCTION_LOCK_QUEUE 요청을 처리하지 않습니다.
SRB_FUNCTION_UNLOCK_QUEUE(0x19) 이전에 SRB_FUNCTION_LOCK_QUEUE 잠긴 논리 단위에 대한 포트 드라이버 큐를 해제합니다. 잠금 해제 요청의 SrbFlags 는 SRB_FLAGS_BYPASS_LOCKED_QUEUE ORed여야 합니다. SRB 길이, 함수, SrbFlagsOriginalRequest 멤버만 유효합니다. SCSI 미니포트 드라이버는 SRB_FUNCTION_UNLOCK_QUEUE 요청을 처리하지 않습니다.
SRB_FUNCTION_UNLOCK_QUEUE(0x19) 이전에 SRB_FUNCTION_LOCK_QUEUE 잠긴 논리 단위에 대한 포트 드라이버 큐를 해제합니다. 잠금 해제 요청의 SrbFlags 는 SRB_FLAGS_BYPASS_LOCKED_QUEUE ORed여야 합니다. SRB 길이, 함수, SrbFlagsOriginalRequest 멤버만 유효합니다. SCSI 미니포트 드라이버는 SRB_FUNCTION_UNLOCK_QUEUE 요청을 처리하지 않습니다.
SRB_FUNCTION_DUMP_POINTERS(0x26) 이 함수를 사용하는 요청은 크래시 덤프 데이터를 보유하는 디스크를 제어하는 데 사용되는 Storport 미니포트 드라이버로 전송됩니다. 요청은 충돌 덤프 및 최대 절전 모드를 지원하기 위해 미니포트 드라이버에서 필요한 정보를 수집합니다. MINIPORT_DUMP_POINTERS 구조를 참조하세요. 물리적 미니포트 드라이버는 이 함수를 사용하여 요청을 받으려면 HW_INITIALIZATION_DATA FeatureSupport 멤버에서 STOR_FEATURE_DUMP_POINTERS 플래그를 설정해야 합니다.
SRB_FUNCTION_FREE_DUMP_POINTERS(0x27) 이 함수를 사용하는 요청은 이전 SRB_FUNCTION_DUMP_POINTERS 요청 중에 할당된 리소스를 해제하기 위해 Storport 미니포트 드라이버로 전송됩니다.

SrbStatus

완료된 요청의 상태 반환합니다. 이 멤버는 요청Complete를 사용하여 ScsiPortNotification을 호출하여 요청이 완료되었음을 OS 관련 드라이버에 알리기 전에 미니포트 드라이버에서 설정해야 합니다. 이 멤버의 값은 다음 중 하나일 수 있습니다.

의미
SRB_STATUS_PENDING 요청이 진행 중임을 나타냅니다. OS 관련 포트 드라이버는 SrbStatus 를 이 값으로 초기화합니다.
SRB_STATUS_SUCCESS 요청이 성공적으로 완료되었음을 나타냅니다.
SRB_STATUS_ABORTED 포트 드라이버의 지시에 따라 요청이 중단되었음을 나타냅니다. 미니포트 드라이버는 성공적인 SRB_FUNCTION_ABORT_COMMAND 요청에 대해 NextSrb에서 이 상태 설정합니다.
SRB_STATUS_ABORT_FAILED 요청 중단 시도가 실패했음을 나타냅니다. 지정된 요청을 배치할 수 없는 경우 SRB_FUNCTION_ABORT_COMMAND 요청에 대해 이 상태 반환합니다.
SRB_STATUS_ERROR SCSI 버스 상태 오류가 발생해 요청이 완료되었음을 나타냅니다.
SRB_STATUS_BUSY 미니포트 드라이버 또는 대상 디바이스가 현재 요청을 수락할 수 없음을 나타냅니다. OS 관련 포트 드라이버는 나중에 요청을 다시 제출합니다.
SRB_STATUS_INTERNAL_ERROR SCSI 포트 드라이버가 미니포트 드라이버 또는 대상 디바이스에 요청을 전달할 수 없음을 나타냅니다. 이러한 경우 상태 InternalStatus에 기록됩니다.
SRB_STATUS_INVALID_REQUEST 미니포트 드라이버가 지정된 요청을 지원하지 않음을 나타냅니다.
SRB_STATUS_NO_DEVICE 디바이스가 응답하지 않았음을 나타냅니다.
SRB_STATUS_TIMEOUT 요청 시간이 초과되었음을 나타냅니다.
SRB_STATUS_SELECTION_TIMEOUT SCSI 디바이스 선택 시간이 초과되었음을 나타냅니다.
SRB_STATUS_COMMAND_TIMEOUT 대상이 시간 제한 내에서 명령을 완료하지 않았음을 나타냅니다.
SRB_STATUS_MESSAGE_REJECTED 대상이 메시지를 거부했음을 나타냅니다. 이는 일반적으로 SRB_FUNCTION_TERMINATE_IO 같은 메시지 형식 요청에 대해서만 반환됩니다.
SRB_STATUS_BUS_RESET 이 요청이 실행되는 동안 버스 재설정이 발생했음을 나타냅니다.
SRB_STATUS_PARITY_ERROR SCSI 버스에서 패리티 오류가 발생했으며 재시도에 실패했음을 나타냅니다.
SRB_STATUS_REQUEST_SENSE_FAILED 요청 감지 명령이 실패했음을 나타냅니다. 이는 HBA가 자동 요청 센스를 수행하고 미니포트 드라이버가 이 HBA에 대한 PORT_CONFIGURATION_INFORMATION AutoRequestSenseTRUE 로 설정한 경우에만 반환됩니다.
SRB_STATUS_NO_HBA HBA가 응답하지 않음을 나타냅니다.
SRB_STATUS_DATA_OVERRUN 데이터 오버런 또는 언더런 오류가 발생했음을 나타냅니다. 또한 미니포트 드라이버는 SRB의 DataTransferLength 멤버를 업데이트하여 언더런이 발생할 경우 실제로 전송된 데이터의 양을 나타내야 합니다.
SRB_STATUS_UNEXPECTED_BUS_FREE 대상이 예기치 않게 연결 끊김을 나타냅니다.
SRB_STATUS_PHASE_SEQUENCE_FAILURE HBA가 잘못된 단계 시퀀스 오류 오류를 감지했음을 나타냅니다.
SRB_STATUS_REQUEST_FLUSHED 상태 대한 요청이 중지되었음을 나타냅니다.
SRB_STATUS_BAD_FUNCTION SRB 함수 코드가 지원되지 않음을 나타냅니다.
SRB_STATUS_INVALID_PATH_ID SRB에 지정된 PathId 가 없음을 나타냅니다.
SRB_STATUS_INVALID_TARGET_ID SRB의 TargetID 값이 잘못되었음을 나타냅니다.
SRB_STATUS_INVALID_LUN SRB의 Lun 값이 잘못되었음을 나타냅니다.
SRB_STATUS_ERROR_RECOVERY SCSI 버스 상태 오류와 함께 요청이 완료되었으며 SCSI INITIATE RECOVERY 메시지가 수신되었음을 나타냅니다.
SRB_STATUS_AUTOSENSE_VALID SenseInfoBuffer에 반환된 정보가 유효함을 나타냅니다.
SRB_STATUS_QUEUE_FROZEN 미니포트 드라이버는 SrbStatus 멤버를 이 값으로 설정해서는 안 됩니다. Windows 포트 드라이버는 이 값을 설정하여 스토리지 클래스 드라이버에 특정 주변 디바이스에 대한 요청 큐가 고정되었음을 알릴 수 있습니다.

ScsiStatus

HBA 또는 대상 디바이스에서 반환된 SCSI 상태 반환합니다. 상태 SUCCESS가 아닌 경우 미니포트 드라이버는 SrbStatus 멤버를 SRB_STATUS_ERROR 설정해야 합니다.

PathId

요청에 대한 SCSI 포트 또는 버스를 나타냅니다. 이 값은 0부터 시작합니다.

TargetId

버스의 대상 컨트롤러 또는 디바이스를 나타냅니다.

Lun

디바이스의 논리적 단위 번호를 나타냅니다.

QueueTag

OS 관련 포트 드라이버에서 할당한 큐 태그 값을 포함합니다. 이 멤버가 태그가 지정된 큐에 사용되는 경우 HBA는 RU에 대한 요청의 내부 큐를 지원하고 미니포트 드라이버는 이 HBA에 대한 PORT_CONFIGURATION_INFORMATION TaggedQueueing을TRUE 로 설정합니다.

QueueAction

SRB_FLAGS_QUEUE_ACTION_ENABLE 플래그를 설정할 때 사용할 태그가 지정된 큐 메시지를 나타냅니다. 값은 SCSI 사양에 따라 정의된 SRB_SIMPLE_TAG_REQUEST, SRB_HEAD_OF_QUEUE_TAG_REQUEST 또는 SRB_ORDERED_QUEUE_TAG_REQUEST 중 하나일 수 있습니다.

CdbLength

SCSI-2 이상 명령 설명자 블록의 크기(바이트)를 나타냅니다.

SenseInfoBufferLength

요청 감지 버퍼의 크기(바이트)를 나타냅니다. 언더런이 발생하는 경우 미니포트 드라이버는 이 멤버를 실제로 전송된 바이트 수로 업데이트해야 합니다.

SrbFlags

요청에 대한 다양한 매개 변수 및 옵션을 나타냅니다. SrbFlags 는 SRB_FLAGS_UNSPECIFIED_DIRECTION 설정되고 하위 DMA 어댑터의 미니포트 드라이버가 SRB_FLAGS_DATA_IN 또는 SRB_FLAGS_DATA_OUT 업데이트해야 하는 경우를 제외하고 읽기 전용입니다. 이 멤버는 다음 플래그 중 하나 이상을 설정할 수 있습니다.

플래그 의미
SRB_FLAGS_QUEUE_ACTION_ENABLE 태그가 지정된 큐 작업을 사용하도록 설정해야 했음을 나타냅니다.
SRB_FLAGS_DISABLE_AUTOSENSE 요청 감지 정보를 반환해서는 안 됨을 나타냅니다.
SRB_FLAGS_DATA_IN 데이터가 디바이스에서 시스템으로 전송됨을 나타냅니다.
SRB_FLAGS_DATA_OUT 데이터가 시스템에서 디바이스로 전송됨을 나타냅니다.
SRB_FLAGS_UNSPECIFIED_DIRECTION ASPI/CAM SCSI 인터페이스와의 이전 버전과의 호환성을 위해 정의된 이 플래그는 이전 플래그가 모두 설정되었기 때문에 전송 방향이 이전 중 하나일 수 있음을 나타냅니다. 이 플래그가 설정된 경우 미니포트 드라이버는 SCSI 버스의 대상에 대한 데이터 단계를 검사하여 전송 방향을 결정해야 합니다. HBA가 하위 DMA 디바이스인 경우 이러한 미니포트 드라이버는 scsiPortIoMapTransfer를 호출하기 전에 SRB_FLAGS_DATA_OUT 업데이트하거나 올바른 값으로 SRB_FLAGS_DATA_IN 합니다.
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 버스에서 연결을 끊는 것을 허용해서는 안 됨을 나타냅니다.
SRB_FLAGS_BYPASS_FROZEN_QUEUE 미니포트 드라이버와는 관련이 없습니다.
SRB_FLAGS_NO_QUEUE_FREEZE 미니포트 드라이버와는 관련이 없습니다.
SRB_FLAGS_IS_ACTIVE 미니포트 드라이버와는 관련이 없습니다.
SRB_FLAGS_ALLOCATED_FROM_ZONE 미니포트 드라이버와 관련이 없으며 현재 Windows 클래스 드라이버에 사용되지 않습니다. Windows 레거시 클래스 드라이버에 대해 이는 SRB가 영역 버퍼에서 할당되었는지 여부를 나타냅니다. 이 플래그가 설정된 경우 클래스 드라이버는 ExInterlockedFreeToZone 을 호출하여 SRB를 해제해야 합니다. 그렇지 않으면 ExFreePool을 호출해야 합니다. 새 클래스 드라이버는 영역 버퍼 대신 lookaside 목록을 사용해야 합니다.
SRB_FLAGS_SGLIST_FROM_POOL 드라이버를 최소화하는 것은 관련이 없습니다. Windows 클래스 드라이버에 대해 분산/수집 목록에 대한 메모리가 페이지가 없는 풀에서 할당되었음을 나타냅니다. 이 플래그가 설정된 경우 클래스 드라이버는 ExFreePool 을 호출하여 SRB가 완료된 후 메모리를 해제해야 합니다.
SRB_FLAGS_BYPASS_LOCKED_QUEUE 드라이버를 최소화하는 것은 관련이 없습니다. 포트 드라이버에 대해 이 플래그는 논리 단위 큐가 잠겨 있는지 여부를 요청이 처리되어야 했음을 나타냅니다. 상위 수준 드라이버는 SRB_FUNCTION_UNLOCK_QUEUE 요청을 보내도록 이 플래그를 설정해야 합니다.
SRB_FLAGS_NO_KEEP_AWAKE 드라이버를 최소화하는 것은 관련이 없습니다. Windows 클래스 드라이버는 이 플래그를 사용하여 이 요청을 처리하기 위해 디바이스에 전원을 공급하는 대신 포트 드라이버에 유휴 상태를 보고하도록 나타냅니다.
SRB_FLAGS_FREE_SENSE_BUFFER 포트 또는 미니포트 드라이버가 센스 데이터에 대한 버퍼를 할당했음을 나타냅니다. 이렇게 하면 클래스 드라이버가 데이터를 추출한 후 센스 데이터 버퍼를 해제해야 함을 알 수 있습니다.

DataTransferLength

데이터 버퍼의 크기(바이트)를 나타냅니다. 언더런이 발생하는 경우 미니포트 드라이버는 이 멤버를 실제로 전송된 바이트 수로 업데이트해야 합니다.

TimeOutValue

OS 관련 포트 드라이버에서 시간 초과를 고려할 수 있기 전에 요청이 실행될 수 있는 간격(초)을 나타냅니다. 포트 드라이버가 이미 수행하므로 미니포트 드라이버는 요청 시간을 초과할 필요가 없습니다.

DataBuffer

데이터 버퍼를 가리킵니다. 미니포트 드라이버가 HBA에 대한 PORT_CONFIGURATION_INFORMATION MapBuffersTRUE 로 설정하지 않는 한 미니포트 드라이버는 이 값을 데이터 포인터로 사용하면 안 됩니다. 그러나 SRB_FUNCTION_IO_CONTROL 요청의 경우 미니포트 드라이버는 MapBuffers 값에 관계없이 이 값을 데이터 포인터로 사용할 수 있습니다.

SenseInfoBuffer

요청 감지 버퍼를 가리킵니다. 미니포트 드라이버는 CHECK 조건 후에 요청 감지 데이터를 제공할 필요가 없습니다.

NextSrb

이 요청이 적용되는 SCSI_REQUEST_BLOCK 나타냅니다. 요청의 작은 하위 집합만 두 번째 SRB를 사용합니다(예: SRB_FUNCTION_ABORT_COMMAND).

OriginalRequest

이 요청에 대한 IRP를 가리킵니다. 이 멤버는 드라이버를 최소화하는 데 관련이 없습니다.

SrbExtension

Srb 확장을 가리킵니다. 미니포트 드라이버는 SCSI_HW_INITIALIZATION_DATA SrbExtensionSize 를 0으로 설정하는 경우 이 멤버를 사용하지 않아야 합니다. SrbExtension의 메모리는 OS 관련 포트 드라이버에 의해 초기화되지 않으며, 미니포트 드라이버 결정 데이터는 HBA에서 직접 액세스할 수 있습니다. 해당 물리적 주소는 SrbExtension 포인터를 사용하여 ScsiPortGetPhysicalAddress를 호출하여 가져올 수 있습니다.

InternalStatus

SrbStatus 대신 SCSI 포트 드라이버에서 요청이 미니포트 드라이버에 전달될 수 없을 때마다 완료된 요청의 상태 보고하는 데 사용됩니다. 이러한 경우 SrbStatus 는 SRB_STATUS_INTERNAL_ERROR 설정됩니다. 이 멤버는 SCSI 포트와 클래스 드라이버 간의 통신에만 사용되며 미니포트 드라이버에서 사용하면 안 됩니다.

QueueSortKey

대상 디바이스의 유형에 따라 미디어 시작부터 오프셋 또는 0을 지정합니다.

LinkTimeoutValue

링크 시간 제한 값입니다.

Reserved

예약되어 있습니다.

Cdb[16]

대상 디바이스로 보낼 SCSI-2 이상 명령 설명자 블록을 지정합니다.

설명

Windows 스토리지 클래스 및 필터 드라이버는 다음 함수 값이 있는 SRB를 시스템 포트 드라이버로 보낼 수 있습니다.

  • 클래스 드라이버가 PathId, TargetIdLun 멤버에 의해 SRB에서 식별된 주변 장치를 지원함을 나타내는 SRB_FUNCTION_CLAIM_DEVICE.
  • SRB_ATTACH_DEVICE 클래스 드라이버 위에 계층화된 필터 드라이버가 특정 주변 디바이스에 대한 요청을 먼저 필터 드라이버로 라우팅하려고 함을 나타냅니다.
  • 클래스 드라이버가 특정 주변 장치에 대한 클레임을 해제하고 있음을 나타내는 SRB_FUNCTION_RELEASE_DEVICE.
  • SRB_FUNCTION_FLUSH_QUEUE 포트 드라이버에서 현재 큐에 대기 중인 요청의 취소를 특정 주변 장치로 요청합니다.
  • 포트 드라이버가 고정된 요청 큐를 특정 주변 장치로 해제하도록 요청하는 SRB_FUNCTION_RELEASE_QUEUE.

이전 SRB_FUNCTION_XXX 는 SCSI 미니포트 드라이버로 전송된 SRB에서 설정되지 않습니다. SRB_FUNCTION_REMOVE_DEVICE 이후 버전의 시스템에서 사용하도록 정의됩니다. SCSI 미니포트 드라이버로 전송되는 SRB에서도 설정되지 않습니다. SRB_FUNCTION_WMI_REQUEST SCSI_WMI_REQUEST_BLOCK만 유효합니다. 스토리지 클래스 또는 필터 드라이버는 이를 사용하여 포트 드라이버에 WMI 요청을 보냅니다.

요구 사항

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

추가 정보

ExFreePool

ExInterlockedFreeToZone

HW_INITIALIZATION_DATA(SCSI)

SCSI(PORT_CONFIGURATION_INFORMATION)

SCSI_WMI_REQUEST_BLOCK

SRB_IO_CONTROL

ScsiPortGetPhysicalAddress

ScsiPortGetSrb

ScsiPortIoMapTransfer

ScsiPortNotification