Jump to content

DosResetBuffer: Difference between revisions

From EDM2
Created page with "==Description== Writes the buffers for the specified file to the device. ==Syntax== <PRE> #define INCL_DOSFILEMGR #include <os2.h> HFILE hFile; /* The handle of the fi..."
 
Ak120 (talk | contribs)
mNo edit summary
Line 7: Line 7:
#include <os2.h>
#include <os2.h>


HFILE     hFile;  /*  The handle of the file whose buffers are to be written to the disk. */
HFILE   hFile;  /*  The handle of the file whose buffers are to be written to the disk. */
APIRET   ulrc;  /*  Return Code. */
APIRET ulrc;  /*  Return Code. */


ulrc = DosResetBuffer(hFile);
ulrc = DosResetBuffer(hFile);
</PRE>


</PRE>
==Parameters==
==Parameters==
;  hFile (HFILE) - input : The handle of the file whose buffers are to be written to the disk.
;  hFile (HFILE) - input : The handle of the file whose buffers are to be written to the disk.
:If hFile has a value of 0xFFFFFFFF, all of the buffers for all of the file handles of the process are written to the disk.


If hFile has a value of 0xFFFFFFFF, all of the buffers for all of the file handles of the process are written to the disk.
==Return Code==
==Return Code==
  ulrc (APIRET) - returns
  ulrc (APIRET) - returns
DosResetBuffer returns one of the following values:
DosResetBuffer returns one of the following values:
 
* 0 NO_ERROR
* 0     NO_ERROR  
* 2 ERROR_FILE_NOT_FOUND  
* 2       ERROR_FILE_NOT_FOUND  
* 5 ERROR_ACCESS_DENIED  
* 5       ERROR_ACCESS_DENIED  
* 6 ERROR_INVALID_HANDLE
* 6       ERROR_INVALID_HANDLE


==Remarks==
==Remarks==
Line 33: Line 31:


===Named-Pipe Considerations===
===Named-Pipe Considerations===
Issuing DosResetBuffer for a named pipe results in an operation that is similar to forcing the buffer cache to the disk. The request blocks the calling process at one end of the pipe until all written data has been read at the other end.  
Issuing DosResetBuffer for a named pipe results in an operation that is similar to forcing the buffer cache to the disk. The request blocks the calling process at one end of the pipe until all written data has been read at the other end.  


==Example Code==
==Example Code==
This example writes to a file named "DOSMAN.DAT", resets the buffer, and changes the size of the file.
This example writes to a file named "DOSMAN.DAT", resets the buffer, and changes the size of the file.
<PRE>
<PRE>
#define INCL_DOSFILEMGR          /* File Manager values */
#define INCL_DOSFILEMGR          /* File Manager values */
#define INCL_DOSERRORS          /* DOS Error values    */
#define INCL_DOSERRORS          /* DOS Error values    */
Line 88: Line 83:
   return NO_ERROR;
   return NO_ERROR;
}
}
</PRE>


</PRE>
==Related Functions==
==Related Functions==
* [[OS2 API:CPI:DosClose|DosClose]]
* [[DosClose]]
* [[OS2 API:CPI:DosOpen|DosOpen]]
* [[DosOpen]]
* [[OS2 API:CPI:DosWrite|DosWrite]]
* [[DosWrite]]
 


[[Category:The OS/2 API Project]]
[[Category:Dos]]

Revision as of 12:12, 16 November 2016

Description

Writes the buffers for the specified file to the device.

Syntax

#define INCL_DOSFILEMGR
#include <os2.h>

HFILE   hFile;  /*  The handle of the file whose buffers are to be written to the disk. */
APIRET  ulrc;   /*  Return Code. */

ulrc = DosResetBuffer(hFile);

Parameters

hFile (HFILE) - input
The handle of the file whose buffers are to be written to the disk.
If hFile has a value of 0xFFFFFFFF, all of the buffers for all of the file handles of the process are written to the disk.

Return Code

ulrc (APIRET) - returns

DosResetBuffer returns one of the following values:

  • 0 NO_ERROR
  • 2 ERROR_FILE_NOT_FOUND
  • 5 ERROR_ACCESS_DENIED
  • 6 ERROR_INVALID_HANDLE

Remarks

When DosResetBuffer is issued for a file handle, the contents of the file's buffers are written to the disk, and the file's directory entry is updated as if the file had been closed; however, the file remains open.

DosResetBuffer should be issued with caution. When files are on diskettes, issuing DosResetBuffer could have the undesirable effect of requiring the user to insert and remove a large number of diskettes.

Named-Pipe Considerations

Issuing DosResetBuffer for a named pipe results in an operation that is similar to forcing the buffer cache to the disk. The request blocks the calling process at one end of the pipe until all written data has been read at the other end.

Example Code

This example writes to a file named "DOSMAN.DAT", resets the buffer, and changes the size of the file.

#define INCL_DOSFILEMGR          /* File Manager values */
#define INCL_DOSERRORS           /* DOS Error values    */
#include <os2.h>
#include <stdio.h>
#include <string.h>

int main(VOID) {
   HFILE  hfFileHandle   = 0L;     /* Handle for file being manipulated */
   ULONG  ulAction       = 0;      /* Action taken by DosOpen */
   ULONG  ulWrote        = 0;      /* Number of bytes written by DosWrite */
   UCHAR  uchFileName[20]  = "dosman.dat",     /* Name of file */
          uchFileData[4]   = "DATA";            /* Data to write to file */
   APIRET rc             = NO_ERROR;            /* Return code */

   /* Open the file dosman.dat.  Use an existing file or create a new */
   /* one if it doesn't exist.                                      */
   rc = DosOpen(uchFileName, &hfFileHandle, &ulAction, 4L,
                FILE_ARCHIVED | FILE_NORMAL,
                OPEN_ACTION_CREATE_IF_NEW | OPEN_ACTION_OPEN_IF_EXISTS,
                OPEN_FLAGS_NOINHERIT | OPEN_SHARE_DENYNONE  |
                OPEN_ACCESS_READWRITE, 0L);
   if (rc != NO_ERROR) {
      printf("DosOpen error: return code = %u\n", rc);
      return 1;
   }

   rc = DosWrite (hfFileHandle, (PVOID) uchFileData,
                  sizeof (uchFileData), &ulWrote);
   if (rc != NO_ERROR) {
      printf("DosWrite error: return code = %u\n", rc);
      return 1;
   }

   rc = DosResetBuffer (hfFileHandle);
   if (rc != NO_ERROR) {
      printf("DosResetBuffer error: return code = %u\n", rc);
      return 1;
   } /* endif */

   rc = DosSetFileSize (hfFileHandle, 8L);    /* Change file size */
   if (rc != NO_ERROR) {
      printf("DosSetFileSize error: return code = %u\n", rc);
      return 1;
   }

   return NO_ERROR;
}

Related Functions