3.2.4.22 Application Requests Sending an IOCTL to a File or Device

The application MUST supply a Client.Open representing the open file or device, as well as the IOCTL category and function. The client MUST use either of the following commands to transfer the IOCTL to the server:

  • SMB_COM_IOCTL (obsolescent) (section 2.2.4.35)

    The client MUST construct the SMB_COM_IOCTL Request (section 2.2.4.35.1) message.

  • NT_TRANSACT_IOCTL

    The application provides the following:

    • An input buffer, _NT_Trans_Data, to be passed to the fsctl or ioctl function.

      The client MUST construct the NT_TRANSACT_IOCTL Request (section 2.2.7.2.1) message, with the following additional requirements:

    • The SMB_Parameters.Words.Setup.IsFsctl flag is set to 0x01.

    • The SMB_Parameters.Words.Setup.IsFlags flag is set to 0x01 if Client.TreeConnect.IsDfsShare is TRUE; otherwise, it is set to 0x00.

    • The SMB_Data.Bytes.NT_Trans_Data field contains NT_Trans_Data supplied by the application.

      The request MUST be transported to the server using the NT Transaction subprotocol.

The format of the IOCTL data and parameters are determined by the specific IOCTL function being called. The request MUST be sent to the server as described in section 3.2.4.1.