fsOpenMode (ULONG) - input

      The mode of the open function. Possible values are shown in the following list:

      Bit

        Description
      31-16
        Reserved, must be zero.
      15
        OPEN_FLAGS_DASD (0x00008000)
        Direct Open flag:

      • pszFileName represents a file to be opened normally.

      • pszFileName is "drive:" (such as C: or A:), and represents a mounted disk or diskette volume to be opened for direct access.
      14
        OPEN_FLAGS_WRITE_THROUGH (0x00004000)
        Write-Through flag:

      • Writes to the file may go through the file-system driver's cache. The file-system driver writes the sectors when the cache is full or the file is closed.

      • Writes to the file may go through the file-system driver's cache, but the sectors are written (the actual file I/O operation is completed) before a synchronous write call returns. This state of the file defines it as a synchronous file. For synchronous files, this bit must be set, because the data must be written to the medium for synchronous write operations. This bit flag is not inherited by child processes.
      13
        OPEN_FLAGS_FAIL_ON_ERROR (0x00002000)
        Fail-Errors flag. Media I/O errors are handled as follows:

      • Reported through the system critical-error handler.
      • Reported directly to the caller by way of a return code.

        Media I/O errors generated through Category 08h Logical Disk Control IOCtl Commands always get reported directly to the caller by way of return code. The Fail-Errors function applies only to non-IOCtl handle-based file I/O calls.

        This flag bit is not inherited by child processes.

      12
        OPEN_FLAGS_NO_CACHE (0x00001000)
        No-Cache/Cache flag:

      • The file-system driver should place data from I/O operations into its cache.

      • I/O operations to the file need not be done through the file-system driver's cache.

        The setting of this bit determines whether file-system drivers should place data into the cache. Like the write-through bit, this is a per-handle bit, and is not inherited by child processes.

      11
        Reserved; must be 0.
      10-8
        The locality of reference flags contain information about how the application is to get access to the file. The values are as follows:

        000

          OPEN_FLAGS_NO_LOCALITY (0x00000000)
          No locality known.
        001
          OPEN_FLAGS_SEQUENTIAL (0x00000100)
          Mainly sequential access.
        010
          OPEN_FLAGS_RANDOM (0x00000200)
          Mainly random access.
        011
          OPEN_FLAGS_RANDOMSEQUENTIAL (0x00000300)
          Random with some locality.
        7
          OPEN_FLAGS_NOINHERIT (0x00000080)
          Inheritance flag:

        • File handle is inherited by a process created from a call to DosExecPgm.

        • File handle is private to the current process.

          This bit is not inherited by child processes.

        6-4
          Sharing Mode flags. This field defines any restrictions to file access placed by the caller on other processes. The values are as follows:

          001

            OPEN_SHARE_DENYREADWRITE (0x00000010)
            Deny read/write access.
          010
            OPEN_SHARE_DENYWRITE (0x00000020)
            Deny write access.
          011
            OPEN_SHARE_DENYREAD (0x00000030)
            Deny read access.
          100
            OPEN_SHARE_DENYNONE (0x00000040)
            Deny neither read nor write access (deny none).
          Any other value is invalid.
        3
          Reserved; must be 0.
        2-0
          Access-Mode flags. This field defines the file access required by the caller. The values are as follows:

          000

            OPEN_ACCESS _ READONLY( 0x00000000 )
            Read-only access
          001
            OPEN_ACCESS_WRITEONLY (0x00000001)
            Write-only access
          010
            OPEN_ACCESS_READWRITE (0x00000002)
            Read/write access.
          Any other value is invalid, as are any other combinations.
        File sharing requires the cooperation of sharing processes. This cooperation is communicated through sharing and access modes. Any sharing restrictions placed on a file opened by a process are removed when the process closes the file with a DosClose request.

        Sharing Mode

          Specifies the type of file access that other processes may have. For example, if other processes can continue to read the file while your process is operating on it, specify Deny Write. The sharing mode prevents other processes from writing to the file but still allows them to read it.
        Access Mode
          Specifies the type of file access (access mode) needed by your process. For example, if your process requires read/write access, and another process has already opened the file with a sharing mode of Deny None, your DosOpen request succeeds. However, if the file is open with a sharing mode of Deny Write, the process is denied access.

          If the file is inherited by a child process, all sharing and access restrictions also are inherited.

          If an open file handle is duplicated by a call to DosDupHandle, all sharing and access restrictions also are duplicated.


        [Back] [Next]