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
en:docs:fapi:doschgfileptr [2018/09/02 14:51] prokusheven:docs:fapi:doschgfileptr [2021/09/17 04:31] (current) prokushev
Line 1: Line 1:
-{{logos:os2.gif?35x35}} {{logos:dos.gif?35x35}}+{{page>en:templates:fapiint}}
 ====== DosChgFilePtr ====== ====== DosChgFilePtr ======
  
 This call moves the read/write pointer in accordance with the type of move specified. This call moves the read/write pointer in accordance with the type of move specified.
  
-==Syntax==+===== Syntax =====
  
-  DosChgFilePtr (FileHandle, Distance, MoveType, NewPointer)+<code c> 
 +DosChgFilePtr (FileHandle, Distance, MoveType, NewPointer) 
 +</code>
  
-==Parameters==+===== Parameters =====
  
-  * FileHandle (HFILE) - input : Handle returned by a previous DosOpen call. 
-  * 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: 
  
- ^ Value ^ Definition ^ +  * FileHandle ([[HFILE]]) - input : Handle returned by a previous [[DosOpen]] call. 
- | 0 | Beginning of the file+  * Distance ([[LONG]]) - input : The offset to move, in bytes. 
- | 1 | Current location of the read/write pointer. +  * MoveType ([[USHORT]]) - input : Method of movingSpecifies a location in the file from where Distance to move the read/write pointer startsValues and their meanings are:
- | 2 | End of the file. Use this method to determine a file's size. |+
  
-  * NewPointer (PULONG) - output : Address of the new pointer location.+^ Value ^ Definition ^ 
 +| 0 | Beginning of the file. | 
 +| 1 | Current location of the read/write pointer. | 
 +| 2 | End of the file. Use this method to determine a file's size|
  
-==Return Code==+  * NewPointer ([[PULONG]]) - output : Address of the new pointer location.
  
-  rc (USHORT) - return+===== Return Code ===== 
 + 
 +rc ([[USHORT]]) - return
      
 Return code descriptions are: Return code descriptions are:
Line 31: Line 34:
   * 6 ERROR_INVALID_HANDLE     * 6 ERROR_INVALID_HANDLE  
  
-==Remarks==+===== Remarks ===== 
 The read/write pointer in a file is a signed 32-bit number. A negative value moves the pointer backward in the file. A positive value moves the pointer forward. DosChgFilePtr cannot be used to seek to a negative position in the file. The read/write pointer in a file is a signed 32-bit number. A negative value moves the pointer backward in the file. A positive value moves the pointer forward. DosChgFilePtr cannot be used to seek to a negative position in the file.
  
 This call may not be used for a character device or pipe.  This call may not be used for a character device or pipe. 
  
-==Example Code== +===== Example Code =====
-===C Binding===+
  
-  #define INCL_DOSFILEMGR +==== C Binding ==== 
-   + 
-  USHORT  rc = DosChgFilePtr(FileHandle, Distance, MoveType, NewPointer); +<code c> 
-   +#define INCL_DOSFILEMGR 
-  HFILE            FileHandle;    /* File handle */ + 
-  LONG             Distance;      /* Distance to move in bytes */ +USHORT  rc = DosChgFilePtr(FileHandle, Distance, MoveType, NewPointer);
-  USHORT           MoveType;      /* Method of moving (0, 1, 2) */ +
-  PULONG           NewPointer;    /* New Pointer Location */ +
-   +
-  USHORT           rc;            /* return code */+
  
 +HFILE            FileHandle;    /* File handle */
 +LONG             Distance;      /* Distance to move in bytes */
 +USHORT           MoveType;      /* Method of moving (0, 1, 2) */
 +PULONG           NewPointer;    /* New Pointer Location */
 +
 +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;
  
-===MASM Binding===+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>
  
-  EXTRN  DosChgFilePtr:FAR +==== MASM Binding ==== 
-  INCL_DOSFILEMGR     EQU 1+ 
 +<code asm> 
 +EXTRN  DosChgFilePtr:FAR 
 +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
  
  
-== Note ===+===== Note ===== 
  
 Text based on http://www.edm2.com/index.php/DosChgFilePtr Text based on http://www.edm2.com/index.php/DosChgFilePtr