Purpose
DosProtectSetFilePtrL moves the read or write pointer according to the type of move specified.
Syntax
#define INCL DOSFILEMGR #include os2.h
APIRET DosProtectSetFilePtrL
Parameters
hFile HFILE) input
This field specifies the location in the file at which the read/write pointer starts before adding the ib offset. The values and their meanings are as shown in the following list
Move the pointer from the beginning of the file.
Move the pointer from the current location of the read/write pointer.
Move the pointer from the end of the file. Use this method to determine a file s size.
Returns
ulrc APIRET) returns
DosProtectSetFilePtrL returns one of the following values
132
Remarks
The read/write pointer in a file is a signed 64-bit number. A negative value for ib moves the pointer backward in the file; a positive value moves it forward. DosProtectSetFilePtrL cannot be used to move to a negative position in the file.
DosProtectSetFilePtrL cannot be used for a character device or pipe.
Related Functions
Example Code
This example opens or creates and opens a file named DOSPROT.DAT , writes a string to it, returns the file pointer to the beginning of the file, reads it, and finally closes it using DosProtect functions.
#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; ULONG ulAction = 0; ULONG ulBytesRead = 0; ULONG ulWrote = 0; LONGLONG ullLocal = 0; UCHAR uchFileName 20 = "dosprot.dat", uchFileData 100 = " "; FHLOCK FileHandleLock = 0; /* File handle lock */ APIRET rc = NO_ERROR; /* Return code */ /* Open the file test.dat. Make it read/write, open it */ /* if it already exists and create it if it is new. */ rc = DosProtectOpenL(uchFileName, /* File path name */ hfFileHandle, /* File handle */ ulAction, /* Action taken */ (LONGLONG)100, /* File primary allocation */ FILE_ARCHIVED | FILE_NORMAL, /* File attribute */ OPEN_ACTION_CREATE_IF_NEW | OPEN_ACTION_OPEN_IF_EXISTS, /* Open function type */ OPEN_FLAGS_NOINHERIT | OPEN_SHARE_DENYNONE | OPEN_ACCESS_READWRITE, /* Open mode of the file */ 0L, /* No extended attribute */ FileHandleLock); /* File handle lock id */ if (rc != NO_ERROR) printf("DosProtectOpenL error return code = %u\n", rc); return 1; else printf ("DosProtectOpenL Action taken = %u\n", ulAction); /* endif */ /* Write a string to the file */ strcpy (uchFileData, "testing...\n3...\n2...\n1\n"); rc = DosProtectWrite (hfFileHandle, /* File handle */ (PVOID) uchFileData, /* String to be written */ sizeof (uchFileData), /* Size of string to be written */ ulWrote, /* Bytes actually written */ FileHandleLock); /* File handle lock id */if (rc != NO_ERROR) printf("DosProtectWrite error return code = %u\n", rc); return 1; else printf ("DosProtectWrite Bytes written = %u\n", ulWrote); /* endif */ /* Move the file pointer back to the beginning of the file */ rc = DosProtectSetFilePtrL (hfFileHandle, /* File Handle */ (LONGLONG)0, /* Offset */ FILE_BEGIN, /* Move from BOF */ ullLocal, /* New location address */ FileHandleLock); /* File handle lock id */ if (rc != NO_ERROR) printf("DosSetFilePtr error return code = %u\n", rc); return 1; /* Read the first 100 bytes of the file */ rc = DosProtectRead (hfFileHandle, /* File Handle */ uchFileData, /* String to be read */ 100L, /* Length of string to be read */ ulBytesRead, /* Bytes actually read */ FileHandleLock); /* File handle lock id */ if (rc != NO_ERROR) printf("DosProtectRead error return code = %u\n", rc); return 1; else printf("DosProtectRead Bytes read = %u\n%s\n", ulBytesRead, uchFileData); /* endif */ rc = DosProtectClose(hfFileHandle, FileHandleLock); /* Close the file */ if (rc != NO_ERROR) printf("DosProtectClose error return code = %u\n", rc); return 1; return NO_ERROR;