ntddscsi.h 헤더
이 헤더는 스토리지에서 사용됩니다. 자세한 내용은 다음을 참조하세요.
ntddscsi.h에는 다음과 같은 프로그래밍 인터페이스가 포함되어 있습니다.
IOCTL
IOCTL_ATA_PASS_THROUGH 애플리케이션이 대상 디바이스에 거의 모든 ATA 명령을 보낼 수 있도록 허용합니다. 다음 제한 사항이 있습니다. _If 대상 유형의 디바이스에 대한 클래스 드라이버가 존재하므로 애플리케이션은 클래스 드라이버에 요청을 보내야 합니다. |
IOCTL_ATA_PASS_THROUGH_DIRECT IOCTL_ATA_PASS_THROUGH_DIRECT 통해 애플리케이션이 거의 모든 ATA 명령을 대상 디바이스로 보낼 수 있는 방법을 알아봅니다. |
IOCTL_MINIPORT_PROCESS_SERVICE_IRP 이 IOCTL은 가상 미니포트에서 관심 있는 일이 발생할 때 알림이 필요한 사용자 모드 애플리케이션 또는 커널 모드 드라이버에서 사용됩니다. |
IOCTL_MINIPORT_SIGNATURE_ENDURANCE_INFO IOCTL_MINIPORT_SIGNATURE_ENDURANCE_INFO 대상 디바이스에 대한 미니포트 반환 지구력 데이터를 요청하기 위해 IOCTL_SCSI_MINIPORT 제어 코드와 함께 사용되는 시스템 정의 서명입니다. |
IOCTL_MINIPORT_SIGNATURE_SET_PROTOCOL IOCTL_MINIPORT_SIGNATURE_SET_PROTOCOL 프로토콜별 데이터를 미니포트로 보내기 위해 IOCTL_SCSI_MINIPORT 제어 코드와 함께 사용되는 서명입니다. |
IOCTL_MPIO_PASS_THROUGH_PATH 이 I/O 제어 코드를 사용하면 애플리케이션 또는 커널 드라이버가 SCSI 명령을 지정된 실제 LUN으로 보낼 수 있습니다. |
IOCTL_MPIO_PASS_THROUGH_PATH_DIRECT 이 I/O 제어 코드를 통해 애플리케이션 또는 커널 드라이버가 SCSI 명령을 지정된 실제 LUN으로 보낼 수 있는 방법을 알아봅니다. |
IOCTL_MPIO_PASS_THROUGH_PATH_DIRECT_EX IOCTL_MPIO_PASS_THROUGH_PATH_DIRECT_EX 제어 코드 요청은 IOCTL_MPIO_PASS_THROUGH_PATH_DIRECT 요청의 확장 버전입니다. 이 요청은 양방향 데이터 전송을 지원하고 CDB(명령 데이터 블록)> 16바이트를 허용합니다. |
IOCTL_MPIO_PASS_THROUGH_PATH_EX IOCTL_MPIO_PASS_THROUGH_PATH_EX 제어 코드 요청은 IOCTL_MPIO_PASS_THROUGH_PATH 요청의 확장 버전입니다. 이 요청은 양방향 데이터 전송을 지원하고 CDB(명령 데이터 블록)> 16바이트를 허용합니다. |
IOCTL_SCSI_GET_ADDRESS 특정 SCSI 대상의 TID(대상 ID) 및 LUN(논리 단위 번호)과 같은 주소 정보를 반환합니다. |
IOCTL_SCSI_GET_CAPABILITIES 기본 SCSI HBA의 기능 및 제한 사항을 반환합니다. |
IOCTL_SCSI_GET_INQUIRY_DATA 지정된 SCSI HBA(호스트 버스 어댑터)의 모든 디바이스에 대한 SCSI 조회 데이터를 반환합니다. |
IOCTL_SCSI_MINIPORT 특수 컨트롤 함수를 HBA 특정 미니포트 드라이버에 보냅니다. |
IOCTL_SCSI_MINIPORT_DIAGNOSTIC IOCTL_SCSI_MINIPORT_DIAGNOSTIC 제어 코드는 Miniport에 대한 진단 요청을 수행하는 데 사용합니다. |
IOCTL_SCSI_MINIPORT_HYBRID IOCTL_SCSI_MINIPORT_HYBRID 제어 코드는 HBA 관련 미니포트 드라이버에 하이브리드 디스크 제어 요청을 보냅니다. |
IOCTL_SCSI_MINIPORT_NVCACHE 여기에 정의된 NV 캐시 관리 작업은 DeviceIoControl 및 IOCTL_SCSI_MINIPORT 제어 코드를 사용하여 관리자 권한으로 실행되는 사용자 모드 애플리케이션 코드에서 호출할 수 있습니다. |
IOCTL_SCSI_PASS_THROUGH 애플리케이션이 대상 디바이스에 거의 모든 SCSI 명령을 보낼 수 있도록 허용합니다. COPY와 같은 다중 대상 명령은 허용되지 않습니다. 양방향 데이터 전송 작업은 지원되지 않습니다. 대상 디바이스 유형에 대한 클래스 드라이버가 있는 경우 해당 클래스 드라이버로 요청을 보내야 합니다. 따라서 애플리케이션은 해당 LU에 연결된 디바이스 유형에 대한 클래스 드라이버가 없는 경우에만 이 요청을 LU(대상 논리 단위)에 대한 시스템 포트 드라이버로 직접 보낼 수 있습니다. 시스템 포트 드라이버는 통과 요청을 처리하기 전에 클래스 드라이버가 디바이스를 요청했는지 여부를 확인하지 않습니다. 따라서 애플리케이션이 디바이스를 요청한 클래스 드라이버를 우회하고 해당 디바이스에 대한 통과 요청을 포트 드라이버로 직접 보내는 경우 클래스 드라이버와 애플리케이션 간에 디바이스 제어에 대한 충돌이 발생할 수 있습니다. 통과 요청이 어댑터 디바이스 개체로 전송되고 사용자 모드에서 시작되고 클래스 드라이버가 주장하는 LU를 대상으로 하는 경우 Storport는 STATUS_INVALID_DEVICE_REQUEST 요청을 실패합니다. 요청이 LU 디바이스 개체로 전송되거나, 커널 모드에서 시작되거나, 요청되지 않은 LU를 대상으로 하는 경우 미니포트 드라이버에 전달됩니다. CDB에서 기본 미니포트 드라이버가 메모리에 직접 액세스하도록 요구할 수 있는 경우에는 이 요청을 사용할 수 없습니다. 호출자의 CDB에서 메모리에 직접 액세스해야 하는 경우 대신 IOCTL_SCSI_PASS_THROUGH_DIRECT 사용합니다. 애플리케이션은 통과 요청을 비동기적으로 보내려고 시도해서는 안 됩니다. 모든 통과 요청은 동기적이어야 합니다. 애플리케이션은 디바이스에 통과 요청을 보내는 데 관리자 권한이 필요하지 않지만 디바이스에 대한 읽기/쓰기 권한이 있어야 합니다. 호출 애플리케이션은 CHECK CONDITION이 발생하는 경우 요청 감지 데이터에 대한 요청을 포함할 수 있는 SCSI 명령 설명자 블록을 만듭니다. IOCTL_SCSI_PASS_THROUGH 버퍼링된 디바이스 제어 요청입니다. 시스템 메모리에서 버퍼링을 무시하려면 호출자는 IOCTL_SCSI_PASS_THROUGH_DIRECT 사용해야 합니다. IOCTL_SCSI_PASS_THROUGH_DIRECT 요청을 처리할 때 시스템은 사용자 메모리의 버퍼를 잠그고 디바이스는 이 메모리에 직접 액세스합니다. 이 요청은 일반적으로 소량의 데이터(<16K)를 전송하는 데 사용됩니다. 애플리케이션은 IRP_MJ_DEVICE_CONTROL 요청을 통해 이 요청을 보낼 수 있습니다. 스토리지 클래스 드라이버는 요청이 스토리지 클래스 드라이버에 의해 처리되었음을 나타내기 위해 부 IRP 번호를 IRP_MN_SCSI_CLASS 설정합니다. |
IOCTL_SCSI_PASS_THROUGH_DIRECT 애플리케이션이 대상 디바이스에 거의 모든 SCSI 명령을 보낼 수 있도록 허용합니다. COPY와 같은 다중 대상 명령은 허용되지 않습니다. 양방향 데이터 전송 작업은 지원되지 않습니다. 대상 디바이스 유형에 대한 클래스 드라이버가 있는 경우 해당 클래스 드라이버로 요청을 보내야 합니다. 따라서 애플리케이션은 해당 LU에 연결된 디바이스 유형에 대한 클래스 드라이버가 없는 경우에만 대상 논리 단위에 대한 시스템 포트 드라이버로 직접 이 요청을 보낼 수 있습니다. 입력 CDB에서 기본 미니포트 드라이버가 메모리에 직접 액세스하도록 요구할 수 있는 경우 이 요청을 수행해야 합니다. 호출 애플리케이션은 CHECK CONDITION이 발생하는 경우 요청 감지 데이터에 대한 요청을 포함할 수 있는 SCSI 명령 설명자 블록을 만듭니다. CDB가 데이터 전송 작업을 요청하는 경우 호출자는 미니포트 드라이버가 데이터를 직접 전송할 수 있는 어댑터 디바이스 정렬 버퍼를 설정해야 합니다. 이 요청은 일반적으로 더 많은 양의 데이터(>16K)를 전송하는 데 사용됩니다. 애플리케이션은 IRP_MJ_DEVICE_CONTROL 요청을 통해 이 요청을 보낼 수 있습니다. 스토리지 클래스 드라이버는 요청이 스토리지 클래스 드라이버에 의해 처리되었음을 나타내기 위해 부 IRP 번호를 IRP_MN_SCSI_CLASS 설정합니다. |
IOCTL_SCSI_PASS_THROUGH_DIRECT_EX IOCTL_SCSI_PASS_THROUGH_DIRECT_EX 제어 코드 요청은 IOCTL_SCSI_PASS_THROUGH_DIRECT 요청의 확장 버전입니다. 이 요청은 양방향 데이터 전송을 지원하고 CDB(명령 데이터 블록)> 16바이트를 허용합니다. |
IOCTL_SCSI_PASS_THROUGH_EX IOCTL_SCSI_PASS_THROUGH_EX 제어 코드 요청은 IOCTL_SCSI_PASS_THROUGH 요청의 확장 버전입니다. 이 요청은 양방향 데이터 전송을 지원하고 CDB(명령 데이터 블록)> 16바이트를 허용합니다. |
IOCTL_SCSI_RESCAN_BUS 버스에서 LUN을 다시 검사합니다. |
구조
ATA_PASS_THROUGH_DIRECT ATA_PASS_THROUGH_DIRECT 구조는 포트 드라이버에 포함된 ATA 명령을 대상 디바이스로 보내도록 지시하는 IOCTL_ATA_PASS_THROUGH_DIRECT 요청과 함께 사용됩니다. |
ATA_PASS_THROUGH_EX ATA_PASS_THROUGH_EX 구조는 포트 드라이버에 포함된 ATA 명령을 대상 디바이스로 보내도록 지시하는 IOCTL_ATA_PASS_THROUGH 요청과 함께 사용됩니다. |
HYBRID_INFORMATION HYBRID_INFORMATION 구조에는 하이브리드 디스크 기능 정보가 포함되어 있습니다. |
IO_SCSI_CAPABILITIES IO_SCSI_CAPABILITIES 구조는 기본 SCSI 호스트 어댑터의 기능 및 제한 사항을 검색하기 위해 IOCTL_SCSI_GET_CAPABILITIES 요청과 함께 사용됩니다. SCSI 포트 드라이버 및 SCSI 미니포트 드라이버 모델은 나중에 변경되거나 사용할 수 없습니다. 대신 Storport 드라이버 및 Storport 미니포트 드라이버 모델을 사용하는 것이 좋습니다. |
MPIO_PASS_THROUGH_PATH MPIO_PASS_THROUGH_PATH 구조는 포트 드라이버에 포함된 SCSI 명령을 대상 디바이스로 보내도록 지시하는 IOCTL_MPIO_PASS_THROUGH_PATH 요청과 함께 사용됩니다. |
MPIO_PASS_THROUGH_PATH_DIRECT MPIO_PASS_THROUGH_PATH_DIRECT 구조는 포트 드라이버에 포함된 SCSI 명령을 대상 디바이스로 보내도록 지시하는 IOCTL_MPIO_PASS_THROUGH_PATH_DIRECT 요청과 함께 사용됩니다. |
MPIO_PASS_THROUGH_PATH_DIRECT_EX MPIO_PASS_THROUGH_PATH_DIRECT_EX 구조는 포트 드라이버에 포함된 SCSI 명령을 대상 디바이스로 보내도록 지시하는 IOCTL_MPIO_PASS_THROUGH_PATH_DIRECT_EX 요청과 함께 사용됩니다. |
MPIO_PASS_THROUGH_PATH_EX MPIO_PASS_THROUGH_PATH_EX 구조는 포트 드라이버에 포함된 SCSI 명령을 대상 디바이스로 보내도록 지시하는 IOCTL_MPIO_PASS_THROUGH_PATH_EX 요청과 함께 사용됩니다. |
NTSCSI_UNICODE_STRING 스토리지 포트 드라이버는 NTSCSI_UNICODE_STRING 구조를 사용하여 유니코드 문자열을 정의할 수 있습니다. |
NV_FEATURE_PARAMETER NV_FEATURE_PARAMETER 구조는 IOCTL_SCSI_MINIPORT_NVCACHE 요청과 함께 디바이스에서 NV Cache Manager 기능 지원 정보를 가져오는 데 사용됩니다. |
NVCACHE_REQUEST_BLOCK NVCACHE_REQUEST_BLOCK 구조는 IOCTL_SCSI_MINIPORT 요청과 함께 H-HDD(하이브리드 하드 디스크 드라이브) 디바이스(예: Microsoft ReadyDrive 기술)를 관리하는 데 사용됩니다. |
SCSI_ADAPTER_BUS_INFO SCSI_ADAPTER_BUS_INFO 구조는 지정된 SCSI 버스의 모든 디바이스에 대한 SCSI 조회 데이터를 검색하기 위해 IOCTL_SCSI_GET_INQUIRY_DATA 요청과 함께 사용됩니다. |
SCSI_ADDRESS SCSI_ADDRESS 구조는 TID(대상 ID) 및 특정 SCSI 대상의 LUN(논리 단위 번호)과 같은 주소 정보를 검색하기 위해 IOCTL_SCSI_GET_ADDRESS 요청과 함께 사용됩니다. |
SCSI_BUS_DATA SCSI_BUS_DATA 구조는 지정된 SCSI 버스의 모든 디바이스에 대한 SCSI 조회 데이터를 검색하기 위해 IOCTL_SCSI_GET_INQUIRY_DATA 요청 및 SCSI_ADAPTER_BUS_INFO 구조와 함께 사용됩니다. |
SCSI_INQUIRY_DATA SCSI_INQUIRY_DATA 구조는 지정된 SCSI 버스의 모든 디바이스에 대한 SCSI 조회 데이터를 검색하기 위해 IOCTL_SCSI_GET_INQUIRY_DATA 요청과 함께 사용됩니다. |
SCSI_PASS_THROUGH SCSI_PASS_THROUGH 구조는 포트 드라이버에 포함된 SCSI 명령을 대상 디바이스로 보내도록 지시하는 IOCTL_SCSI_PASS_THROUGH 요청과 함께 사용됩니다. |
SCSI_PASS_THROUGH_DIRECT SCSI_PASS_THROUGH_DIRECT 구조는 포트 드라이버에 포함된 SCSI 명령을 대상 디바이스로 보내도록 지시하는 IOCTL_SCSI_PASS_THROUGH_DIRECT 요청과 함께 사용됩니다. |
SCSI_PASS_THROUGH_DIRECT_EX SCSI_PASS_THROUGH_DIRECT_EX 구조는 포트 드라이버에 포함된 SCSI 명령을 대상 디바이스로 보내도록 지시하는 IOCTL_SCSI_PASS_THROUGH_DIRECT_EX 요청과 함께 사용됩니다. |
SCSI_PASS_THROUGH_EX SCSI_PASS_THROUGH_EX 구조는 포트 드라이버에 포함된 SCSI 명령을 대상 디바이스로 보내도록 지시하는 IOCTL_SCSI_PASS_THROUGH_EX 요청과 함께 사용됩니다. |
SRB_IO_CONTROL SRB_IO_CONTROL 구조체 |
STORAGE_DIAGNOSTIC_MP_REQUEST Miniport에 대한 진단 요청을 설명합니다. STORAGE_DIAGNOSTIC_MP_REQUEST 구조는 IOCTL_SCSI_MINIPORT_DIAGNOSTIC 요청의 입력/출력 버퍼에 제공됩니다. |
STORAGE_ENDURANCE_DATA_DESCRIPTOR 미니포트는 STORAGE_ENDURANCE_DATA_DESCRIPTOR 사용하여 디바이스의 지구력 정보를 스토리지 포트 드라이버에 보고합니다. |
STORAGE_ENDURANCE_INFO 미니포트는 STORAGE_ENDURANCE_INFO 구조를 사용하여 장치의 지구력 정보를 보고합니다. |
STORAGE_FIRMWARE_SLOT_INFO STORAGE_FIRMWARE_SLOT_INFO 구조에 대해 알아봅니다. |
열거형
MP_STORAGE_DIAGNOSTIC_LEVEL MP_STORAGE_DIAGNOSTIC_LEVEL 열거형을 사용하면 호출자가 공급자가 반환해야 하는 데이터의 종류를 제어할 수 있습니다. |
MP_STORAGE_DIAGNOSTIC_TARGET_TYPE MP_STORAGE_DIAGNOSTIC_TARGET_TYPE 열거형은 스토리지 진단의 대상 유형을 지정합니다. |