en:docs:dos:api:int21:3d

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
en:docs:dos:api:int21:3d [2021/04/30 03:30] – created prokusheven:docs:dos:api:int21:3d [2024/05/02 07:55] (current) prokushev
Line 13: Line 13:
 ===== Family API ===== ===== Family API =====
  
 +[[en:docs:fapi:DosOpen]]
  
 ===== Input ===== ===== Input =====
Line 23: Line 24:
 ===== Return ===== ===== Return =====
  
- CF clear if successful+   CF clear if successful
             AX = file handle             AX = file handle
         CF set on error         CF set on error
Line 30: Line 31:
 ===== Notes ===== ===== Notes =====
  
-Notes:  file pointer is set to start of file +file pointer is set to start of file 
-        if SHARE or a network is loaded, the file open may fail if the file + 
-          is already open, depending on the combination of sharing modes +if SHARE or a network is loaded, the file open may fail if the file is already open, depending on the combination of sharing modes (see #01403,#01404) 
-          (see #01403,#01404) + 
-        file handles which are inherited from a parent also inherit sharing +file handles which are inherited from a parent also inherit sharing and access restrictions 
-          and access restrictions + 
-        files may be opened even if given the hidden or system attributes +files may be opened even if given the hidden or system attributes 
-        under the FlashTek X-32 DOS extender, the pointer is in DS:EDX + 
-        DR DOS checks the system password or explicitly supplied password at +under the FlashTek X-32 DOS extender, the pointer is in DS:EDX 
-          the end of the filename (following a semicolon) against the reserved + 
-          field in the directory entry before allowing access +DR DOS checks the system password or explicitly supplied password at 
-        sharing modes are only effective on local drives if SHARE is loaded + 
-BUG:    Novell DOS 7 SHARE v1.00 would refuse file access in the cases in +the end of the filename (following a semicolon) against the reserved 
-          #01403 marked with [1] (read-only open of a read-only file + 
-          which had previously been opened in compatibility mode); this was +field in the directory entry before allowing access 
-          fixed in SHARE v1.01 of 09/29/94+ 
 +sharing modes are only effective on local drives if SHARE is loaded 
 + 
 +Novell DOS 7 SHARE v1.00 would refuse file access in the cases in #01403 marked with [1] (read-only open of a read-only file which had previously been opened in compatibility mode); this was fixed in SHARE v1.01 of 09/29/94
  
 Bitfields for access and sharing modes: Bitfields for access and sharing modes:
-Bit(s)  Description     (Table 01402) + 
- 2-0    access mode +Bit(s) Description ^    (Table 01402) 
-        000 read only +2-0  access mode | 
-        001 write only +| ::: | 000 read only | 
-        010 read/write +| ::: | 001 write only | 
-        011 (DOS 5+ internal) passed to redirector on EXEC to allow +| ::: | 010 read/write | 
-                case-sensitive filenames +| ::: | 011 (DOS 5+ internal) passed to redirector on EXEC to allow case-sensitive filenames | 
-      reserved (0) +|   reserved (0) | 
- 6-4    sharing mode (DOS 3.0+) (see #01403) +6-4 sharing mode (DOS 3.0+) (see #01403) | 
-        000 compatibility mode +| ::: | 000 compatibility mode | 
-        001 "DENYALL" prohibit both read and write access by others +| ::: | 001 "DENYALL" prohibit both read and write access by others | 
-        010 "DENYWRITE" prohibit write access by others +| ::: | 010 "DENYWRITE" prohibit write access by others | 
-        011 "DENYREAD" prohibit read access by others +| ::: | 011 "DENYREAD" prohibit read access by others | 
-        100 "DENYNONE" allow full access by others +| ::: | 100 "DENYNONE" allow full access by others | 
-        111 network FCB (only available during server call) +| ::: | 111 network FCB (only available during server call) | 
-      inheritance +  | inheritance | 
-        if set, file is private to current process and will not be inherited +| ::: | if set, file is private to current process and will not be inherited by child processes |
-          by child processes+
  
 (Table 01403) (Table 01403)
 Values of DOS 2-6.22 file sharing behavior: Values of DOS 2-6.22 file sharing behavior:
-          |     Second and subsequent Opens 
- First    |Compat  Deny   Deny   Deny   Deny 
- Open            All    Write  Read   None 
-          |R W RW R W RW R W RW R W RW R W RW 
- - - - - -| - - - - - - - - - - - - - - - - - 
- Compat R |Y Y Y  N N N  1 N N  N N N  1 N N 
-        W |Y Y Y  N N N  N N N  N N N  N N N 
-        RW|Y Y Y  N N N  N N N  N N N  N N N 
- - - - - -| 
- Deny   R |C C C  N N N  N N N  N N N  N N N 
- All    W |C C C  N N N  N N N  N N N  N N N 
-        RW|C C C  N N N  N N N  N N N  N N N 
- - - - - -| 
- Deny   R |2 C C  N N N  Y N N  N N N  Y N N 
- Write  W |C C C  N N N  N N N  Y N N  Y N N 
-        RW|C C C  N N N  N N N  N N N  Y N N 
- - - - - -| 
- Deny   R |C C C  N N N  N Y N  N N N  N Y N 
- Read   W |C C C  N N N  N N N  N Y N  N Y N 
-        RW|C C C  N N N  N N N  N N N  N Y N 
- - - - - -| 
- Deny   R |2 C C  N N N  Y Y Y  N N N  Y Y Y 
- None   W |C C C  N N N  N N N  Y Y Y  Y Y Y 
-        RW|C C C  N N N  N N N  N N N  Y Y Y 
-Legend: Y = open succeeds, N = open fails with error code 05h 
-        C = open fails, INT 24 generated 
-        1 = open succeeds if file read-only, else fails with error code 
-        2 = open succeeds if file read-only, else fails with INT 24 
  
-(Table 01404)+^ First Open    ^^      Second and subsequent Opens         ^^^^^^^^^^^^^^^ 
 +^ :::           ^^ Compat ^^^ Deny All ^^^ Deny Write ^^^ Deny Read ^^^ Deny None ^^^ 
 +^ :::           ^^ R ^ W ^ RW ^ R ^  W ^ RW ^ R ^ W ^ RW ^ R ^ W ^ RW ^ R ^ W ^ RW ^ 
 +^ Compat     ^ R | Y | Y | Y | N | N | N | 1 | N | N | N | N | N | 1 | N | N | 
 +^ :::        ^ W | Y | Y | Y | N | N | N | N | N | N | N | N | N | N | N | N | 
 +^ :::        ^ RW| Y | Y | Y | N | N | N | N | N | N | N | N | N | N | N | N | 
 +^ Deny All   ^ R | C | C | C | N | N | N | N | N | N | N | N | N | N | N | N | 
 +^ :::        ^ W | C | C | C | N | N | N | N | N | N | N | N | N | N | N | N | 
 +^ :::        ^ RW| C | C | C | N | N | N | N | N | N | N | N | N | N | N | N | 
 +^ Deny Write ^ R | 2 | C | C | N | N | N | Y | N | N | N | N | N | Y | N | N | 
 +^ :::        ^ W | C | C | C | N | N | N | N | N | N | Y | N | N | Y | N | N | 
 +^ :::        ^ RW| C | C | C | N | N | N | N | N | N | N | N | N | Y | N | N | 
 +^ Deny Read  ^ R | C | C | C | N | N | N | N | Y | N | N | N | N | N | Y | N | 
 +^ :::        ^ W | C | C | C | N | N | N | N | N | N | N | Y | N | N | Y | N | 
 +^ :::        ^ RW| C | C | C | N | N | N | N | N | N | N | N | N | N | Y | N | 
 +^ Deny None  ^ R | 2 | C | C | N | N | N | Y | Y | Y | N | N | N | Y | Y | Y | 
 +^ :::        ^ W | C | C | C | N | N | N | N | N | N | Y | Y | Y | Y | Y | Y | 
 +^ :::        ^ RW| C | C | C | N | N | N | N | N | N | N | N | N | Y | Y | Y | 
 + 
 +Legend: 
 +Y = open succeeds, N = open fails with error code 05h 
 +C = open fails, INT 24 generated 
 +1 = open succeeds if file read-only, else fails with error code 
 +2 = open succeeds if file read-only, else fails with INT 24 
 + 
 Values for DOS 7.x file sharing behavior: Values for DOS 7.x file sharing behavior:
-          |     Second and subsequent Opens + 
- First    |Compat    Deny      Deny      Deny      Deny +^ First Open ^^ Second and subsequent Opens ^^^^^^^^^^^^^^^^^^^^ 
- Open              All       Write     Read      None +^ :::           ^^ Compat ^^^^ Deny All ^^^^ Deny Write ^^^^ Deny Read ^^^^ Deny None ^^^^ 
-          |R W RW A  W RW A  R W RW A  R W RW A  R W RW A +^ :::           ^^ RW A^ R ^  RW RW RW RW ^ 
- - - - - -| - - - - - - - - - - - - - - - - - - - - - - - - +Compat     ^  | Y | 
- Compat R |Y Y Y Y   N N N N   Y N N Y   N N N Y   Y N N Y +^ :::         | Y | 
-        W |Y Y Y C   N N N N   N N N N   N N N Y   Y N N Y +^ :::        RW | Y | 
-        RW|Y Y Y C   N N N N   N N N N   N N N Y   Y N N Y +^ :::        NA | Y Y | 
-        NA|Y C C Y   N N N N   Y N N Y   N N N Y   Y N N Y +Deny All    | C | 
- - - - - -+^ :::        ^  | C | 
- Deny   R |C C C C   N N N N   N N N N   N N N N   N N N N +^ :::        RW | C | 
- All    W |C C C C   N N N N   N N N N   N N N N   N N N N +^ :::        NA | C N | 
-        RW|C C C C   N N N N   N N N N   N N N N   N N N N +Deny Write ^  | Y | 
-        NA|C C C C   N N N N   N N N N   N N N N   N N N N +^ :::        ^  | C | 
- - - - - -+^ :::        RW | C | 
- Deny   R |Y C C Y   N N N N   Y N N Y   N N N Y   Y N N Y +^ :::        NA | Y Y | 
- Write  W |C C C C   N N N N   N N N N   Y N N Y   Y N N Y +Deny Read  ^  | C | 
-        RW|C C C C   N N N N   N N N N   N N N Y   Y N N Y +^ :::        ^  | C | 
-        NA|Y C C Y   N N N N   Y N N Y   N N N Y   Y N N Y +^ :::        RW | C | 
- - - - - -+^ :::        NA | Y Y | 
- Deny   R |C C C C   N N N N   N Y N N   N N N N   N Y N N +Deny None  ^  | Y | 
- Read   W |C C C C   N N N N   N N N N   N Y N N   N Y N N +^ :::        ^  | C | 
-        RW|C C C C   N N N N   N N N N   N N N N   N Y N N +^ :::        RW | C | 
-        NA|Y Y Y Y   N N N N   Y Y Y Y   N N N Y   Y Y Y Y +^ :::        NA | Y 
- - - - - -+
- Deny   R |Y Y Y Y   N N N N   Y Y Y Y   N N N Y   Y Y Y Y +
- None   W |C C C C   N N N N   N N N N   Y Y Y Y   Y Y Y Y +
-        RW|C C C C   N N N N   N N N N   N N N Y   Y Y Y Y +
-        NA|Y Y Y Y   N N N N   Y Y Y Y   N N N Y   Y Y Y Y+
 Legend: R -> reading, W -> writing, RW -> both reading & writing, Legend: R -> reading, W -> writing, RW -> both reading & writing,
         A/NA -> reading without access time update         A/NA -> reading without access time update
Line 136: Line 132:
 ===== See also ===== ===== See also =====
  
- AH=0Fh,AH=3Ch,AX=4301h,AX=5D00h,INT 2F/AX=1116h,INT 2F/AX=1226h+AH=[[en:docs:dos:api:int21:0f|0Fh]],AH=[[en:docs:dos:api:int21:3c|3Ch],AX=[[en:docs:dos:api:int21:43:01|4301h]],AX=[[en:docs:dos:api:int21:5d:00|5D00h]],INT 2F/AX=1116h,INT 2F/AX=1226h
  
 ===== Note ===== ===== Note =====