스토리지 클래스 드라이버의 디바이스 확장 설정
스토리지 클래스 드라이버에서 만든 각 디바이스 개체의 디바이스 확장에서 해당 드라이버는 AddDevice에 전달된 PDO에 대한 포인터, IoAttachDeviceToDeviceStack에서 반환된 디바이스 개체에 대한 포인터, 자체 디바이스 개체에 대한 백 포인터 등 디바이스에 대한 I/O 요청을 관리하는 데 사용하는 드라이버 결정 데이터에 대한 스토리지를 제공합니다. 등등.
대부분의 스토리지 클래스 드라이버는 다음 정보에 대한 스토리지도 제공합니다.
디바이스 유형별 제한 시간 값
클래스 드라이버는 포트 드라이버에 보내는 SRB의 제한 시간 값을 전달할 수 있으며, 각 클래스 드라이버를 대신하여 SRB_FUNCTION_EXECUTE_SCSI 요청( SCSI_REQUEST_BLOCK 참조)을 횟수로 표시합니다. 포트 드라이버는 SrbStatus 멤버가 SRB_STATUS_TIMEOUT 설정된 SRB를 반환합니다. 포트 드라이버가 기본 드라이버에 요청을 보낼 때와 요청이 완료될 때 사이의 간격이 지정된 제한 시간 값을 초과하는 경우입니다.
클래스 드라이버의 오류 처리 루틴에 대한 포인터
스토리지 클래스 드라이버의 오류 처리에 대한 자세한 내용은 스토리지 클래스 드라이버의 IoCompletion 루틴 을 참조하세요.
드라이버가 디바이스에서 버스 프로토콜 오류를 유지 관리하는 수
센스 데이터에 대한 드라이버 할당 버퍼에 대한 포인터
클래스 드라이버는 캐시 정렬되고 페이지가 지정되지 않은 풀에서 반환된 센스 데이터에 대한 메모리를 할당해야 합니다. 드라이버 버퍼에 대한 메모리 할당에 대한 자세한 내용은 System-Space 메모리 할당을 참조하세요.
클래스 드라이버가 SRB에서 설정하는 SrbFlags 에 대한 드라이버 결정 기본값
드라이버가 할당하는 SRB에 대한 lookaside 목록을 설정하는 경우 lookaside 목록 헤더에 대한 포인터
자세한 내용은 Lookaside 목록 사용을 참조하세요.
페이징 작업 및 오류 복구 작업(예: 스토리지 클래스 드라이버의 ReleaseQueue 루틴에서 수행하는 작업)의 경우 메모리 부족 조건에서도 성공해야 하는 요청에 대해 할당되고 예약된 SRB 및 IRP에 대한 포인터
포트 드라이버가 HBA에서 수집한 STORAGE_ADAPTER_DESCRIPTOR 및 STORAGE_DEVICE_DESCRIPTOR 데이터에 대한 포인터
클래스 드라이버가 이 데이터를 가져와 사용하는 방법에 대한 자세한 내용은 스토리지 클래스 드라이버의 GetDescriptor 루틴을 참조하세요.
디바이스의 상태 간 전환을 관리하기 위해 이전 및 현재 PnP 상태를 나타내는 플래그
중복 전원 요청을 처리하는 추가 작업을 방지하기 위해 현재 디바이스 전원 상태를 나타내는 플래그
드라이버에서 수신한 페이징 알림 요청에 따라 디바이스에서 시스템 페이징 파일(있는 경우)의 수입니다( IRP_MN_DEVICE_USAGE_NOTIFICATION IRP_MJ_PNP).
스토리지 클래스 드라이버는 IoAttachDeviceToDeviceStack 에서 반환되고 드라이버의 AddDevice 루틴에 의해 디바이스 확장에 저장된 디바이스 개체 포인터를 사용하지 않고 스토리지 포트 드라이버를 통해 디바이스에 요청을 보낼 수 없습니다.