DosResetBuffer: Difference between revisions
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..." |
mNo edit summary |
||
Line 7: | Line 7: | ||
#include <os2.h> | #include <os2.h> | ||
HFILE | HFILE hFile; /* The handle of the file whose buffers are to be written to the disk. */ | ||
APIRET | APIRET ulrc; /* Return Code. */ | ||
ulrc = DosResetBuffer(hFile); | ulrc = DosResetBuffer(hFile); | ||
</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. | |||
==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 | * 2 ERROR_FILE_NOT_FOUND | ||
* 2 | * 5 ERROR_ACCESS_DENIED | ||
* 5 | * 6 ERROR_INVALID_HANDLE | ||
* 6 | |||
==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> | |||
==Related Functions== | ==Related Functions== | ||
* [[ | * [[DosClose]] | ||
* [[ | * [[DosOpen]] | ||
* [[ | * [[DosWrite]] | ||
[[Category: | [[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; }