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/08/26 13:41] 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)+
  
-==Parameters== +<code c> 
-;FileHandle (HFILE) - input : Handle returned by a previous DosOpen call. +DosChgFilePtr (FileHandleDistance, MoveType, NewPointer
-Distance (LONG) - input : The offset to movein bytes. +</code>
-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''' +
-        Beginning of the file. +
-        Current location of the read/write pointer. +
-        End of the file. Use this method to determine a file's size. +
-; NewPointer (PULONG) - output : Address of the new pointer location.+
  
-==Return Code== +===== Parameters ===== 
- rc (USHORT) - return+ 
 + 
 +  * 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 ^ 
 +| 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. | 
 + 
 +  * NewPointer ([[PULONG]]) - output : Address of the new pointer location. 
 + 
 +===== Return Code ===== 
 + 
 +rc ([[USHORT]]) - return 
 +  
 Return code descriptions are: Return code descriptions are:
-* 0 NO_ERROR 
-* 1 ERROR_INVALID_FUNCTION 
-* 6 ERROR_INVALID_HANDLE   
  
-==Remarks==+  * 0 NO_ERROR 
 +  * 1 ERROR_INVALID_FUNCTION 
 +  * 6 ERROR_INVALID_HANDLE   
 + 
 +===== 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=== + 
-<PRE>+==== C Binding ===
 + 
 +<code c>
 #define INCL_DOSFILEMGR #define INCL_DOSFILEMGR
  
Line 42: Line 55:
  
 USHORT           rc;            /* return code */ USHORT           rc;            /* return code */
-</PRE>+</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.
-<PRE>+<code c>
 #define INCL_DOSFILEMGR #define INCL_DOSFILEMGR
  
Line 63: Line 76:
 #define FILE_ATTRIBUTE FILE_ARCHIVE #define FILE_ATTRIBUTE FILE_ARCHIVE
 #define RESERVED 0L #define RESERVED 0L
 + 
 HFILE   FileHandle; HFILE   FileHandle;
 USHORT  Wrote; USHORT  Wrote;
Line 71: Line 84:
 USHORT  rc; USHORT  rc;
  
-   Action = 2; +Action = 2; 
-   strcpy(FileData, "Data..."); +strcpy(FileData, "Data..."); 
-   if(!DosOpen(FILE_NAME,                /* File path name */ +if(!DosOpen(FILE_NAME,                /* File path name */ 
-                &FileHandle,             /* File handle */ +            &FileHandle,             /* File handle */ 
-                &Action,                 /* Action taken */ +            &Action,                 /* Action taken */ 
-                FILE_SIZE,               /* File primary allocation */ +            FILE_SIZE,               /* File primary allocation */ 
-                FILE_ATTRIBUTE,          /* File attribute */ +            FILE_ATTRIBUTE,          /* File attribute */ 
-                FILE_EXISTS | FILE_NOEXISTS,      /* Open function type */ +            FILE_EXISTS | FILE_NOEXISTS,      /* Open function type */ 
-                DASD_FLAG | INHERIT |            /* Open mode of the file */ +            DASD_FLAG | INHERIT |            /* Open mode of the file */ 
-                WRITE_THRU | FAIL_FLAG | +            WRITE_THRU | FAIL_FLAG | 
-                SHARE_FLAG | ACCESS_FLAG, +            SHARE_FLAG | ACCESS_FLAG, 
-                RESERVED))               /* Reserved (must be zero) */ +            RESERVED))               /* Reserved (must be zero) */ 
-      if(!DosWrite(FileHandle,           /* File handle */ +    if(!DosWrite(FileHandle,           /* File handle */ 
-                   (PVOID) FileData,     /* User buffer */ +                 (PVOID) FileData,     /* User buffer */ 
-                   sizeof(FileData),     /* Buffer length */ +                 sizeof(FileData),     /* Buffer length */ 
-                   &Wrote))              /* Bytes written */ +                 &Wrote))              /* Bytes written */ 
-         rc = DosChgFilePtr(FileHandle,  /* File handle */ +       rc = DosChgFilePtr(FileHandle,  /* File handle */ 
-                            MOVE_DIST,   /* Distance to move in bytes */ +                          MOVE_DIST,   /* Distance to move in bytes */ 
-                            FILE_BEG,    /* Method of moving */ +                          FILE_BEG,    /* Method of moving */ 
-                            &Local);     /* New pointer location */ +                          &Local);     /* New pointer location */ 
-</PRE>+</code>
  
-===MASM Binding=== +==== MASM Binding ===
-<PRE>+ 
 +<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
Line 103: Line 117:
 PUSH@  DWORD   NewPointer    ;New Pointer Location (returned) PUSH@  DWORD   NewPointer    ;New Pointer Location (returned)
 CALL   DosChgFilePtr CALL   DosChgFilePtr
 +</code>
 Returns WORD Returns WORD
-</PRE> 
  
-== Note ===+ 
 +===== Note ===== 
  
 Text based on http://www.edm2.com/index.php/DosChgFilePtr Text based on http://www.edm2.com/index.php/DosChgFilePtr