This example enables disk write verification. It creates a file named "VERIFY.DAT" and writes the critical data to it. After this is done, it restores the original settings.
#define INCL_DOSFILEMGR /* File Manager values */
#define INCL_DOSERRORS /* DOS Error values */
#include <os2.h>
#include <stdio.h>
#include <string.h>
int main(VOID) {
UCHAR uchFileName[20] = "VERIFY.DAT", /* Name of file to use */
uchFileData[10] = "SampleData"; /* Stuff to put in file */
HFILE hfFileHandle = 0L; /* Handle for user file */
BOOL32 fUserVerify = 0; /* User Verify flag setting */
ULONG ulAction = 0, /* Action done by DosOpen */
ulWritten = 0; /* Number of bytes written */
APIRET rc = NO_ERROR; /* Return code */
rc = DosQueryVerify(&fUserVerify); /* Get current setting of VERIFY */
if (rc != NO_ERROR) {
printf("DosQueryVerify error: return code = %u\n", rc);
return 1;
} else {
printf ("Original setting of Verify=%s\n",(fUserVerify) ? "On" : "Off");
} /* endif */
rc = DosSetVerify(1); /* Set VERIFY=ON */
if (rc != NO_ERROR) {
printf("DosSetVerify error: return code = %u\n", rc);
return 1; }
/* Open the file VERIFY.DAT for read/write. Create it if necessary */
rc = DosOpen(uchFileName, &hfFileHandle, &ulAction,
10L, FILE_NORMAL,
OPEN_ACTION_CREATE_IF_NEW | OPEN_ACTION_OPEN_IF_EXISTS,
OPEN_SHARE_DENYNONE | OPEN_ACCESS_READWRITE, 0L);
if (rc != NO_ERROR) {
printf("DosOpen error: return code = %u\n", rc);
return 1; }
/* Write critical data to the file */
rc = DosWrite (hfFileHandle, (PVOID) uchFileData,
sizeof(uchFileData), &ulWritten);
if (rc == NO_ERROR) {
printf ("%u bytes written to file %s with Verify=On\n",
ulWritten,uchFileName);
}
rc = DosSetVerify(fUserVerify); /* Restore user's verify value */
if (rc != NO_ERROR) {
printf("DosSetVerify error: return code = %u\n", rc);
return 1;
}
rc = DosClose(hfFileHandle); /* Close the file */
return NO_ERROR;
}