en:docs:fapi:dosduphandle

Differences

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

Link to this comparison view

Next revisionBoth sides next revision
en:docs:fapi:dosduphandle [2018/08/26 14:39] – created prokusheven:docs:fapi:dosduphandle [2018/09/02 04:59] prokushev
Line 5: Line 5:
  
 ==Syntax== ==Syntax==
- DosDupHandle (OldFileHandle, NewFileHandle)+ 
 +  DosDupHandle (OldFileHandle, NewFileHandle)
  
 ==Parameters== ==Parameters==
-;OldFileHandle (HFILE) - input : Current file handle. + 
-;NewFileHandle (PHFILE) - input/output : Address of a Word. On input, values and their meanings are: +  *OldFileHandle (HFILE) - input : Current file handle. 
-:FFFFH - Allocate a new file handle and return it here. +  *NewFileHandle (PHFILE) - input/output : Address of a Word. On input, values and their meanings are: 
-:<>FFFFH - Assign this value as the new file handle. A valid value is any of the handles assigned to standard I/O, or the handle of a file currently opened by the process. +    *FFFFH - Allocate a new file handle and return it here. 
-:On output, a value of FFFFH returns a value for NewFileHandle, allocated by OS/2.+    *<>FFFFH - Assign this value as the new file handle. A valid value is any of the handles assigned to standard I/O, or the handle of a file currently opened by the process. 
 +  *On output, a value of FFFFH returns a value for NewFileHandle, allocated by OS/2.
  
 ==Return Code== ==Return Code==
- rc (USHORT) - return+ 
 +  rc (USHORT) - return 
 +  
 Return code descriptions are: Return code descriptions are:
-* 0        NO_ERROR  + 
-* 4        ERROR_TOO_MANY_OPEN_FILES  +  * 0        NO_ERROR  
-* 6        ERROR_INVALID_HANDLE  +  * 4        ERROR_TOO_MANY_OPEN_FILES  
-* 114      ERROR_INVALID_TARGET_HANDLE+  * 6        ERROR_INVALID_HANDLE  
 +  * 114      ERROR_INVALID_TARGET_HANDLE
  
 ==Remarks== ==Remarks==
 +
 Duplicating the handle duplicates and ties all handle-specific information between OldFileHandle and NewFileHandle. For example, if you move the read/write pointer of either handle by a DosRead, DosWrite, or DosChgFilePtr function call, the pointer for the other handle is also changed. Duplicating the handle duplicates and ties all handle-specific information between OldFileHandle and NewFileHandle. For example, if you move the read/write pointer of either handle by a DosRead, DosWrite, or DosChgFilePtr function call, the pointer for the other handle is also changed.
  
 The valid values for NewFileHandle include the following handles for standard I/O, which are always available to the process: The valid values for NewFileHandle include the following handles for standard I/O, which are always available to the process:
-:0000H      Standard input  + 
-:0001H      Standard output  +  *0000H      Standard input  
-:0002H      Standard error. +  *0001H      Standard output  
 +  *0002H      Standard error. 
  
 If a file handle value of a currently open file is specified in NewFileHandle, the file handle is closed before it is redefined as the duplicate of OldFileHandle. Avoid using arbitrary values for NewFileHandle. If a file handle value of a currently open file is specified in NewFileHandle, the file handle is closed before it is redefined as the duplicate of OldFileHandle. Avoid using arbitrary values for NewFileHandle.
Line 36: Line 43:
 ==Example Code== ==Example Code==
 ===C Binding=== ===C Binding===
-<PRE> 
-#define INCL_DOSFILEMGR 
  
-USHORT  rc = DosDupHandle(OldFileHandle, NewFileHandle);+  #define INCL_DOSFILEMGR 
 +   
 +  USHORT  rc = DosDupHandle(OldFileHandle, NewFileHandle); 
 +   
 +  HFILE            OldFileHandle; /* Existing file handle */ 
 +  PHFILE           NewFileHandle; /* New file handle (returned) */ 
 +   
 +  USHORT           rc;            /* return code */
  
-HFILE            OldFileHandle; /* Existing file handle */ 
-PHFILE           NewFileHandle; /* New file handle (returned) */ 
- 
-USHORT           rc;            /* return code */ 
-</PRE> 
 This example opens a file, creates a second file handle, then closes the file with the second handle.  This example opens a file, creates a second file handle, then closes the file with the second handle. 
  
-<PRE> +  #define INCL_DOSFILEMGR 
-#define INCL_DOSFILEMGR +   
- +  #define OPEN_FILE 0x01 
-#define OPEN_FILE 0x01 +  #define CREATE_FILE 0x10 
-#define CREATE_FILE 0x10 +  #define FILE_ARCHIVE 0x20 
-#define FILE_ARCHIVE 0x20 +  #define FILE_EXISTS OPEN_FILE 
-#define FILE_EXISTS OPEN_FILE +  #define FILE_NOEXISTS CREATE_FILE 
-#define FILE_NOEXISTS CREATE_FILE +  #define DASD_FLAG 0 
-#define DASD_FLAG 0 +  #define INHERIT 0x80 
-#define INHERIT 0x80 +  #define WRITE_THRU 0 
-#define WRITE_THRU 0 +  #define FAIL_FLAG 0 
-#define FAIL_FLAG 0 +  #define SHARE_FLAG 0x10 
-#define SHARE_FLAG 0x10 +  #define ACCESS_FLAG 0x02 
-#define ACCESS_FLAG 0x02 +   
- +  #define FILE_NAME "test.dat" 
-#define FILE_NAME "test.dat" +  #define FILE_SIZE 800L 
-#define FILE_SIZE 800L +  #define FILE_ATTRIBUTE FILE_ARCHIVE 
-#define FILE_ATTRIBUTE FILE_ARCHIVE +  #define RESERVED 0L 
-#define RESERVED 0L +   
- +  HFILE   FileHandle; 
-HFILE   FileHandle; +  HFILE   NewHandle 
-HFILE   NewHandle +  USHORT  Wrote; 
-USHORT  Wrote; +  USHORT  Action; 
-USHORT  Action; +  PSZ     FileData[100]; 
-PSZ     FileData[100]; +  USHORT  rc; 
-USHORT  rc; +  
    Action = 2;    Action = 2;
    strcpy(FileData, "Data...");    strcpy(FileData, "Data...");
Line 90: Line 96:
       rc = DosDupHandle(FileHandle,      /* Existing file handle */       rc = DosDupHandle(FileHandle,      /* Existing file handle */
                         &NewHandle);     /* New file handle */                         &NewHandle);     /* New file handle */
-</PRE> 
  
 ===MASM Binding=== ===MASM Binding===
-<PRE> 
-EXTRN  DosDupHandle:FAR 
-INCL_DOSFILEMGR     EQU 1 
- 
-PUSH   WORD    OldFileHandle ;Existing file handle 
-PUSH@  WORD    NewFileHandle ;New file handle (returned) 
-CALL   DosDupHandle 
  
 +  EXTRN  DosDupHandle:FAR
 +  INCL_DOSFILEMGR     EQU 1
 +  
 +  PUSH   WORD    OldFileHandle ;Existing file handle
 +  PUSH@  WORD    NewFileHandle ;New file handle (returned)
 +  CALL   DosDupHandle
 +  
 Returns WORD Returns WORD
-</PRE> 
- 
  
 ====== Note ====== ====== Note ======