en:docs:fapi:doschgfileptr

Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
en:docs:fapi:doschgfileptr [2018/09/02 14:51] prokusheven:docs:fapi:doschgfileptr [2021/08/20 03:22] prokushev
Line 1: Line 1:
-{{logos:os2.gif?35x35}} {{logos:dos.gif?35x35}}+{{page>en:templates:fapiint}}
 ====== DosChgFilePtr ====== ====== DosChgFilePtr ======
  
Line 10: Line 10:
 ==Parameters== ==Parameters==
  
-  * FileHandle (HFILE) - input : Handle returned by a previous DosOpen call. +  * FileHandle ([[HFILE]]) - input : Handle returned by a previous DosOpen call. 
-  * Distance (LONG) - input : The offset to move, in bytes. +  * Distance ([[LONG]]) - input : The offset to move, in bytes. 
-  * MoveType (USHORT) - input : Method of moving. Specifies a location in the file from where Distance to move the read/write pointer starts. Values and their meanings are:+  * MoveType ([[USHORT]]) - input : Method of moving. Specifies a location in the file from where Distance to move the read/write pointer starts. Values and their meanings are:
  
- ^ Value ^ Definition ^ +^ Value ^ Definition ^ 
- | 0 | Beginning of the file. | +| 0 | Beginning of the file. | 
- | 1 | Current location of the read/write pointer. | +| 1 | Current location of the read/write pointer. | 
- | 2 | End of the file. Use this method to determine a file's size. |+| 2 | End of the file. Use this method to determine a file's size. |
  
-  * NewPointer (PULONG) - output : Address of the new pointer location.+  * NewPointer ([[PULONG]]) - output : Address of the new pointer location.
  
 ==Return Code== ==Return Code==
  
-  rc (USHORT) - return+rc ([[USHORT]]) - return
      
 Return code descriptions are: Return code descriptions are:
Line 38: Line 38:
 ==Example Code== ==Example Code==
 ===C Binding=== ===C Binding===
 +<code c>
 +#define INCL_DOSFILEMGR
  
-  #define INCL_DOSFILEMGR +USHORT  rc = DosChgFilePtr(FileHandle, Distance, MoveType, NewPointer); 
-   + 
-  USHORT  rc = DosChgFilePtr(FileHandle, Distance, MoveType, NewPointer); +HFILE            FileHandle;    /* File handle */ 
-   +LONG             Distance;      /* Distance to move in bytes */ 
-  HFILE            FileHandle;    /* File handle */ +USHORT           MoveType;      /* Method of moving (0, 1, 2) */ 
-  LONG             Distance;      /* Distance to move in bytes */ +PULONG           NewPointer;    /* New Pointer Location */
-  USHORT           MoveType;      /* Method of moving (0, 1, 2) */ +
-  PULONG           NewPointer;    /* New Pointer Location */ +
-   +
-  USHORT           rc;            /* return code */+
  
 +USHORT           rc;            /* return code */
 +</code>
 This example opens file test.dat, writes some data, and resets the file pointer to the beginning of the file. This example opens file test.dat, writes some data, and resets the file pointer to the beginning of the file.
 +<code c>
 +#define INCL_DOSFILEMGR
  
-  #define INCL_DOSFILEMGR +#define OPEN_FILE 0x01 
-   +#define CREATE_FILE 0x10 
-  #define OPEN_FILE 0x01 +#define FILE_ARCHIVE 0x20 
-  #define CREATE_FILE 0x10 +#define FILE_EXISTS OPEN_FILE 
-  #define FILE_ARCHIVE 0x20 +#define FILE_NOEXISTS CREATE_FILE 
-  #define FILE_EXISTS OPEN_FILE +#define DASD_FLAG 0 
-  #define FILE_NOEXISTS CREATE_FILE +#define INHERIT 0x80 
-  #define DASD_FLAG 0 +#define WRITE_THRU 0 
-  #define INHERIT 0x80 +#define FAIL_FLAG 0 
-  #define WRITE_THRU 0 +#define SHARE_FLAG 0x10 
-  #define FAIL_FLAG 0 +#define ACCESS_FLAG 0x02
-  #define SHARE_FLAG 0x10 +
-  #define ACCESS_FLAG 0x02 +
-   +
-  #define FILE_NAME "test.dat" +
-  #define FILE_SIZE 800L +
-  #define FILE_ATTRIBUTE FILE_ARCHIVE +
-  #define RESERVED 0L +
-   +
-  HFILE   FileHandle; +
-  USHORT  Wrote; +
-  USHORT  Action; +
-  PUSHORT Local +
-  PSZ     FileData[100]; +
-  USHORT  rc; +
-   +
-   Action = 2; +
-   strcpy(FileData, "Data..."); +
-   if(!DosOpen(FILE_NAME,                /* File path name */ +
-                &FileHandle,             /* File handle */ +
-                &Action,                 /* Action taken */ +
-                FILE_SIZE,               /* File primary allocation */ +
-                FILE_ATTRIBUTE,          /* File attribute */ +
-                FILE_EXISTS | FILE_NOEXISTS,      /* Open function type */ +
-                DASD_FLAG | INHERIT |            /* Open mode of the file */ +
-                WRITE_THRU | FAIL_FLAG | +
-                SHARE_FLAG | ACCESS_FLAG, +
-                RESERVED))               /* Reserved (must be zero) */ +
-      if(!DosWrite(FileHandle,           /* File handle */ +
-                   (PVOID) FileData,     /* User buffer */ +
-                   sizeof(FileData),     /* Buffer length */ +
-                   &Wrote))              /* Bytes written */ +
-         rc = DosChgFilePtr(FileHandle,  /* File handle */ +
-                            MOVE_DIST,   /* Distance to move in bytes */ +
-                            FILE_BEG,    /* Method of moving */ +
-                            &Local);     /* New pointer location */+
  
 +#define FILE_NAME "test.dat"
 +#define FILE_SIZE 800L
 +#define FILE_ATTRIBUTE FILE_ARCHIVE
 +#define RESERVED 0L
 + 
 +HFILE   FileHandle;
 +USHORT  Wrote;
 +USHORT  Action;
 +PUSHORT Local
 +PSZ     FileData[100];
 +USHORT  rc;
 +
 +Action = 2;
 +strcpy(FileData, "Data...");
 +if(!DosOpen(FILE_NAME,                /* File path name */
 +            &FileHandle,             /* File handle */
 +            &Action,                 /* Action taken */
 +            FILE_SIZE,               /* File primary allocation */
 +            FILE_ATTRIBUTE,          /* File attribute */
 +            FILE_EXISTS | FILE_NOEXISTS,      /* Open function type */
 +            DASD_FLAG | INHERIT |            /* Open mode of the file */
 +            WRITE_THRU | FAIL_FLAG |
 +            SHARE_FLAG | ACCESS_FLAG,
 +            RESERVED))               /* Reserved (must be zero) */
 +    if(!DosWrite(FileHandle,           /* File handle */
 +                 (PVOID) FileData,     /* User buffer */
 +                 sizeof(FileData),     /* Buffer length */
 +                 &Wrote))              /* Bytes written */
 +       rc = DosChgFilePtr(FileHandle,  /* File handle */
 +                          MOVE_DIST,   /* Distance to move in bytes */
 +                          FILE_BEG,    /* Method of moving */
 +                          &Local);     /* New pointer location */
 +</code>
  
 ===MASM Binding=== ===MASM Binding===
- +<code asm> 
-  EXTRN  DosChgFilePtr:FAR +EXTRN  DosChgFilePtr:FAR 
-  INCL_DOSFILEMGR     EQU 1+INCL_DOSFILEMGR     EQU 1
      
-  PUSH   WORD    FileHandle    ;File handle +PUSH   WORD    FileHandle    ;File handle 
-  PUSH   DWORD   Distance      ;Distance to move in bytes +PUSH   DWORD   Distance      ;Distance to move in bytes 
-  PUSH   WORD    MoveType      ;Method of moving (0, 1, 2) +PUSH   WORD    MoveType      ;Method of moving (0, 1, 2) 
-  PUSH@  DWORD   NewPointer    ;New Pointer Location (returned) +PUSH@  DWORD   NewPointer    ;New Pointer Location (returned) 
-  CALL   DosChgFilePtr +CALL   DosChgFilePtr 
 +</code>
 Returns WORD Returns WORD