ntddscsi.h header

This header is used by storage. For more information, see:

ntddscsi.h contains the following programming interfaces:

IOCTLs

 
IOCTL_ATA_PASS_THROUGH

Allows an application to send almost any ATA command to a target device, with the following restrictions:_If a class driver for the target type of device exists, the application must send the request to the class driver.
IOCTL_ATA_PASS_THROUGH_DIRECT

Learn how IOCTL_ATA_PASS_THROUGH_DIRECT allows an application to send almost any ATA command to a target device.
IOCTL_MINIPORT_PROCESS_SERVICE_IRP

This IOCTL is used by a user-mode application or kernel-mode driver that requires notification when something of interest happens in the virtual miniport.
IOCTL_MINIPORT_SIGNATURE_ENDURANCE_INFO

IOCTL_MINIPORT_SIGNATURE_ENDURANCE_INFO is the system-defined signature used in conjunction with the IOCTL_SCSI_MINIPORT control code to request that a miniport return endurance data for a target device.
IOCTL_MINIPORT_SIGNATURE_SET_PROTOCOL

IOCTL_MINIPORT_SIGNATURE_SET_PROTOCOL is the signature used in conjunction with the IOCTL_SCSI_MINIPORT control code to send protocol-specific data to a miniport.
IOCTL_MPIO_PASS_THROUGH_PATH

This I/O control code allows an application or kernel driver to send a SCSI command to a designated real LUN.
IOCTL_MPIO_PASS_THROUGH_PATH_DIRECT

Learn how this I/O control code allows an application or kernel driver to send a SCSI command to a designated real LUN.
IOCTL_MPIO_PASS_THROUGH_PATH_DIRECT_EX

The IOCTL_MPIO_PASS_THROUGH_PATH_DIRECT_EX control code request is the extended version of the IOCTL_MPIO_PASS_THROUGH_PATH_DIRECT request. This request provides support for bidirectional data transfers and allows a command data block (CDB) > 16 bytes.
IOCTL_MPIO_PASS_THROUGH_PATH_EX

The IOCTL_MPIO_PASS_THROUGH_PATH_EX control code request is the extended version of the IOCTL_MPIO_PASS_THROUGH_PATH request. This request provides support for bidirectional data transfers and allows a command data block (CDB) > 16 bytes.
IOCTL_SCSI_GET_ADDRESS

Returns the address information, such as the target ID (TID) and the logical unit number (LUN) of a particular SCSI target.
IOCTL_SCSI_GET_CAPABILITIES

Returns the capabilities and limitations of the underlying SCSI HBA.
IOCTL_SCSI_GET_INQUIRY_DATA

Returns the SCSI inquiry data for all devices on a given SCSI host bus adapter (HBA).
IOCTL_SCSI_MINIPORT

Sends a special control function to an HBA-specific miniport driver.
IOCTL_SCSI_MINIPORT_DIAGNOSTIC

The IOCTL_SCSI_MINIPORT_DIAGNOSTIC control code is use to perform a diagnostic request to the Miniport.
IOCTL_SCSI_MINIPORT_HYBRID

The IOCTL_SCSI_MINIPORT_HYBRID control code sends a hybrid disk control request to an HBA-specific miniport driver.
IOCTL_SCSI_MINIPORT_NVCACHE

The NV Cache Management operations that are defined here can be invoked by user-mode application code running with administrator privileges, using DeviceIoControl and the IOCTL_SCSI_MINIPORT control code.
IOCTL_SCSI_PASS_THROUGH

Allows an application to send almost any SCSI command to a target device, with the following restrictions:Multitarget commands, such as COPY, are not allowed.Bidirectional data transfer operations are not supported.If a class driver for the target type of device exists, the request must be sent to that class driver. Thus, an application can send this request directly to the system port driver for a target logical unit (LU) only if there is no class driver for the type of device that is connected to that LU. The system port driver does not check to determine if a device has been claimed by a class driver before it processes a pass-through request. Therefore, if an application bypasses a class driver that has claimed a device and sends a pass-through request for that device directly to the port driver, a conflict for control of the device can occur between the class driver and the application. If a pass-through request is sent to an adapter device object and if it originates from user mode and targets an LU that is claimed by a class driver, Storport fails the request with STATUS_INVALID_DEVICE_REQUEST. If the request is sent to an LU device object, originates in kernel mode, or targets an unclaimed LU, it is passed to the miniport driver.This request cannot be used if the CDB might require the underlying miniport driver to access memory directly. If the caller's CDB might require direct access to memory, use IOCTL_SCSI_PASS_THROUGH_DIRECT instead. Applications must not attempt to send a pass-through request asynchronously. All pass-through requests must be synchronous. Applications do not require administrative privileges to send a pass-through request to a device, but they must have read/write access to the device. The calling application creates the SCSI command descriptor block, which can include a request for request-sense data if a CHECK CONDITION occurs. IOCTL_SCSI_PASS_THROUGH is a buffered device control request. To bypass buffering in system memory, callers should use IOCTL_SCSI_PASS_THROUGH_DIRECT. When handling an IOCTL_SCSI_PASS_THROUGH_DIRECT request, the system locks down the buffer in user memory and the device accesses this memory directly. This request is typically used for transferring small amounts of data (<16K).Applications can send this request by means of an IRP_MJ_DEVICE_CONTROL request.Storage class drivers set the minor IRP number to IRP_MN_SCSI_CLASS to indicate that the request has been processed by a storage class driver.
IOCTL_SCSI_PASS_THROUGH_DIRECT

Allows an application to send almost any SCSI command to a target device, with the following restrictions:Multitarget commands, such as COPY, are not allowed.Bidirectional data transfer operations are not supported.If a class driver for the target type of device exists, the request must be sent to that class driver. Thus, an application can send this request directly to the system port driver for a target logical unit only if there is no class driver for the type of device connected to that LU.This request must be made if the input CDB might require the underlying miniport driver to access memory directly.The calling application creates the SCSI command descriptor block, which can include a request for request-sense data if a CHECK CONDITION occurs. If the CDB requests a data transfer operation, the caller must set up an adapter device aligned buffer from which or into which the miniport driver can transfer data directly. This request is typically used for transferring larger amounts of data (>16K).Applications can send this request by means of an IRP_MJ_DEVICE_CONTROL request. Storage class drivers set the minor IRP number to IRP_MN_SCSI_CLASS to indicate that the request has been processed by a storage class driver.
IOCTL_SCSI_PASS_THROUGH_DIRECT_EX

The IOCTL_SCSI_PASS_THROUGH_DIRECT_EX control code request is the extended version of the IOCTL_SCSI_PASS_THROUGH_DIRECT request. This request provides support for bidirectional data transfers and allows a command data block (CDB) > 16 bytes.
IOCTL_SCSI_PASS_THROUGH_EX

The IOCTL_SCSI_PASS_THROUGH_EX control code request is the extended version of the IOCTL_SCSI_PASS_THROUGH request. This request provides support for bidirectional data transfers and allows a command data block (CDB) > 16 bytes.
IOCTL_SCSI_RESCAN_BUS

Rescans the LUNs on the bus(es).

Structures

 
ATA_PASS_THROUGH_DIRECT

The ATA_PASS_THROUGH_DIRECT structure is used in conjunction with an IOCTL_ATA_PASS_THROUGH_DIRECT request to instruct the port driver to send an embedded ATA command to the target device.
ATA_PASS_THROUGH_EX

The ATA_PASS_THROUGH_EX structure is used in conjunction with an IOCTL_ATA_PASS_THROUGH request to instruct the port driver to send an embedded ATA command to the target device.
HYBRID_INFORMATION

The HYBRID_INFORMATION structure contains hybrid disk capability information.
IO_SCSI_CAPABILITIES

The IO_SCSI_CAPABILITIES structure is used in conjunction with the IOCTL_SCSI_GET_CAPABILITIES request to retrieve the capabilities and limitations of the underlying SCSI host adapter.Note  The SCSI port driver and SCSI miniport driver models may be altered or unavailable in the future. Instead, we recommend using the Storport driver and Storport miniport driver models.
MPIO_PASS_THROUGH_PATH

The MPIO_PASS_THROUGH_PATH structure is used together with an IOCTL_MPIO_PASS_THROUGH_PATH request to instruct the port driver to send an embedded SCSI command to the target device.
MPIO_PASS_THROUGH_PATH_DIRECT

The MPIO_PASS_THROUGH_PATH_DIRECT structure is used together with an IOCTL_MPIO_PASS_THROUGH_PATH_DIRECT request to instruct the port driver to send an embedded SCSI command to the target device.
MPIO_PASS_THROUGH_PATH_DIRECT_EX

The MPIO_PASS_THROUGH_PATH_DIRECT_EX structure is used together with an IOCTL_MPIO_PASS_THROUGH_PATH_DIRECT_EX request to instruct the port driver to send an embedded SCSI command to the target device.
MPIO_PASS_THROUGH_PATH_EX

The MPIO_PASS_THROUGH_PATH_EX structure is used together with an IOCTL_MPIO_PASS_THROUGH_PATH_EX request to instruct the port driver to send an embedded SCSI command to the target device.
NTSCSI_UNICODE_STRING

Storage port drivers can use the NTSCSI_UNICODE_STRING structure to define Unicode strings.
NV_FEATURE_PARAMETER

The NV_FEATURE_PARAMETER structure is used in conjunction with the IOCTL_SCSI_MINIPORT_NVCACHE request to get NV Cache Manager feature support information from the device.
NVCACHE_REQUEST_BLOCK

The NVCACHE_REQUEST_BLOCK structure is used in conjunction with the IOCTL_SCSI_MINIPORT request to manage hybrid-hard disk drive (H-HDD) devices (for example, Microsoft ReadyDrive technology).
SCSI_ADAPTER_BUS_INFO

The SCSI_ADAPTER_BUS_INFO structure is used in conjunction with the IOCTL_SCSI_GET_INQUIRY_DATA request to retrieve the SCSI inquiry data for all devices on a given SCSI bus.
SCSI_ADDRESS

The SCSI_ADDRESS structure is used in conjunction with the IOCTL_SCSI_GET_ADDRESS request to retrieve the address information, such as the target ID (TID) and the logical unit number (LUN) of a particular SCSI target.
SCSI_BUS_DATA

The SCSI_BUS_DATA structure is used in conjunction with the IOCTL_SCSI_GET_INQUIRY_DATA request and the SCSI_ADAPTER_BUS_INFO structure to retrieve the SCSI inquiry data for all devices on a given SCSI bus.
SCSI_INQUIRY_DATA

The SCSI_INQUIRY_DATA structure is used in conjunction with the IOCTL_SCSI_GET_INQUIRY_DATA request to retrieve the SCSI inquiry data for all devices on a given SCSI bus.
SCSI_PASS_THROUGH

The SCSI_PASS_THROUGH structure is used in conjunction with an IOCTL_SCSI_PASS_THROUGH request to instruct the port driver to send an embedded SCSI command to the target device.
SCSI_PASS_THROUGH_DIRECT

The SCSI_PASS_THROUGH_DIRECT structure is used in conjunction with an IOCTL_SCSI_PASS_THROUGH_DIRECT request to instruct the port driver to send an embedded SCSI command to the target device.
SCSI_PASS_THROUGH_DIRECT_EX

The SCSI_PASS_THROUGH_DIRECT_EX structure is used in conjunction with an IOCTL_SCSI_PASS_THROUGH_DIRECT_EX request to instruct the port driver to send an embedded SCSI command to the target device.
SCSI_PASS_THROUGH_EX

The SCSI_PASS_THROUGH_EX structure is used in conjunction with an IOCTL_SCSI_PASS_THROUGH_EX request to instruct the port driver to send an embedded SCSI command to the target device.
SRB_IO_CONTROL

SRB_IO_CONTROL structure
STORAGE_DIAGNOSTIC_MP_REQUEST

Describes a diagnostic request to Miniport. The STORAGE_DIAGNOSTIC_MP_REQUEST structure is provided in the input/output buffer of an IOCTL_SCSI_MINIPORT_DIAGNOSTIC request.
STORAGE_ENDURANCE_DATA_DESCRIPTOR

A miniport uses STORAGE_ENDURANCE_DATA_DESCRIPTOR to report a device's endurance information to the storage port driver.
STORAGE_ENDURANCE_INFO

A miniport uses the STORAGE_ENDURANCE_INFO structure to report a device's endurance information.

Enumerations

 
MP_STORAGE_DIAGNOSTIC_LEVEL

The MP_STORAGE_DIAGNOSTIC_LEVEL enumeration allows the caller to control what kinds of data the provider should return.
MP_STORAGE_DIAGNOSTIC_TARGET_TYPE

The MP_STORAGE_DIAGNOSTIC_TARGET_TYPE enumeration specifies the target type of a storage diagnostic.