2.1.5.15.7 FileModeInformation

InputBuffer is of type FILE_MODE_INFORMATION, as described in [MS-FSCC] section 2.4.26.

Pseudocode for the operation is as follows:

  • If InputBufferSize is less than the size, in bytes, of the FILE_MODE_INFORMATION structure, the operation MUST be failed with STATUS_INFO_LENGTH_MISMATCH.

  • The operation MUST be failed with STATUS_INVALID_PARAMETER under any of the following conditions:

    • InputBuffer.Mode contains any flag, as defined in [MS-FSCC] section 2.4.26, other than the following:

      • FILE_WRITE_THROUGH

      • FILE_SEQUENTIAL_ONLY

      • FILE_SYNCHRONOUS_IO_ALERT

      • FILE_SYNCHRONOUS_IO_NONALERT

    • InputBuffer.Mode contains either FILE_SYNCHRONOUS_IO_ALERT or FILE_SYNCHRONOUS_IO_NONALERT, but Open.Mode contains neither FILE_SYNCHRONOUS_IO_ALERT nor FILE_SYNCHRONOUS_IO_NONALERT.

    • Open.Mode contains either FILE_SYNCHRONOUS_IO_ALERT or FILE_SYNCHRONOUS_IO_NONALERT, but InputBuffer.Mode contains neither the FILE_SYNCHRONOUS_IO_ALERT nor FILE_SYNCHRONOUS_IO_NONALERT flags.

    • InputBuffer.Mode contains both FILE_SYNCHRONOUS_IO_ALERT and FILE_SYNCHRONOUS_IO_NONALERT.

  • If Open.Mode does not contain FILE_NO_INTERMEDIATE_BUFFERING:

    • If InputBuffer.Mode contains FILE_WRITE_THROUGH, set Open.Mode.FILE_WRITE_THROUGH to TRUE; otherwise set it to FALSE.

  • EndIf

  • If InputBuffer.Mode contains FILE_SEQUENTIAL_ONLY, set Open.Mode.FILE_SEQUENTIAL_ONLY to TRUE; otherwise set it to FALSE.

  • If Open.Mode contains either FILE_SYNCHRONOUS_IO_ALERT or FILE_SYNCHRONOUS_IO_NONALERT:

    • If InputBuffer.Mode contains FILE_SYNCHRONOUS_IO_ALERT, set Open.Mode.FILE_SYNCHRONOUS_IO_ALERT to TRUE; otherwise set it to FALSE.

    • If InputBuffer.Mode contains FILE_SYNCHRONOUS_IO_NONALERT, set Open.Mode.FILE_SYNCHRONOUS_IO_NONALERT to TRUE; otherwise set it to FALSE.

  • EndIf

  • The operation returns STATUS_SUCCESS.