Using Access and Share Modes with DosOpen() PSS ID Number: Q49375 Article last modified on 12-19-1989 PSS database name: O_Os2SDK
1.10
OS/2
Summary:
When setting the parameter fsOpenMode to assign the access and share modes for a DosOpen() call, a share mode MUST be specified. An access mode may be bitwise ORed with the share mode, as well as one or more miscellaneous open flags.
Refer to the “DosOpen” section of the “Microsoft Operating System/2 Programmer’s Reference Volume 3,” Pages 95-98, for more information on DosOpen().
More Information:
Share modes specify what operations other processes can perform on the opened file. Every DosOpen() call must have a share mode specified. The following are the share modes available for DosOpen() in OS/2 Version 1.10:
Constant Value -------- ------ OPEN_SHARE_DENYREADWRITE 0x0010 OPEN_SHARE_DENYWRITE 0x0020 OPEN_SHARE_DENYREAD 0x0030 OPEN_SHARE_DENYNONE Ox0040
An access mode may be bitwise ORed with the share mode. Access modes specify the operations the opening process may perform on the opened file. The access modes for DosOpen() in OS/2 1.10 are as follows:
Constant Value -------- ------ OPEN_ACCESS_READONLY 0x0000 OPEN_ACCESS_WRITEONLY 0x0001 OPEN_ACCESS_READWRITE 0x0002
There are four other flags that may be ORed with the share mode in OS/2 1.10. These are:
Constant Value -------- ------ OPEN_FLAGS_NO_INHERIT 0x0080 OPEN_FLAGS_FAIL_ON_ERROR 0x2000 OPEN_FLAGS_WRITE_THROUGH 0x4000 OPEN_FLAGS_DASD 0x8000
When using DosOpen() to open a drive with OPEN_FLAGS_DASD (0x8000), an access mode of 10H is also required.
The following is a sample program using DosOpen():
- include<os2def.h> #include<bsedos.h> #include<stdio.h>
void main(void) { USHORT ret = 0; /* return code / USHORT Action; / DosOpen returns action taken / HFILE Handle; / file handle variable */
ret = DosOpen("direct.c",&Handle, &Action, 0L, FILE_NORMAL, FILE_OPEN, OPEN_ACCESS_WRITEONLY | OPEN_SHARE_DENYNONE, 0L); printf("Return value = %hu, action = %hu\n", ret, Action);
}
Copyright Microsoft Corporation 1989.