IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES IOCTL (ntddstor.h)
This IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES request is used to send a data set management request to a storage device.
Major code
Input buffer
The buffer at Irp->AssociatedIrp.SystemBuffer contains a DEVICE_DSM_INPUT structure. Depending on the Action member of this structure, the input buffer might additionally include a parameter block and block of data set ranges. See DEVICE_DSM_ACTION Descriptions for descriptions of all possible actions.
Input buffer length
Parameters.DeviceIoControl.InputBufferLength in the I/O stack location of the IRP indicates the size, in bytes, of the buffer, which must be at least sizeof(DEVICE_DSM_INPUT).
Output buffer
Depending on the value set in the Action member of DEVICE_DSM_INPUT, the request may return data in the buffer at Irp->AssociatedIrp.SystemBuffer. The system buffer will contain valid DEVICE_DSM_OUTPUT data if the DSM operation returns output and Parameters.DeviceIoControl.OutputBufferLength > 0. Depending on Action, the output buffer might additionally include an output block.
Output buffer length
The length in bytes of the output buffer, if any. If output is returned, the output buffer must be at least sizeof(DEVICE_DSM_OUTPUT).
Status block
The Status field can be set to STATUS_SUCCESS, or possibly to STATUS_INVALID_DEVICE_REQUEST, STATUS_BUFFER_TOO_SMALL, STATUS_BUFFER_OVERFLOW, or some other error status.
Remarks
Due to memory pool requirements by the storage driver stack, completion of the IRP containing this IOCTL must be at IRQL < DISPATCH_LEVEL.
See Data Set Management Overview for more information.
Requirements
Requirement | Value |
---|---|
Header | ntddstor.h (include Ntddstor.h) |
IRQL | IRQL < DISPATCH_LEVEL (See Remarks section.) |