Jump to content

DosProtectSetFileSizeL: Difference between revisions

From EDM2
Ak120 (talk | contribs)
Ak120 (talk | contribs)
No edit summary
Line 1: Line 1:
==Description==
DosProtectSetFileSizeL changes the size of a file.  
DosProtectSetFileSizeL changes the size of a file.  


==Syntax==
==Syntax==
<PRE>
  DosProtectSetFileSizeL (hFile, cbSize, fhFileHandleLockID)
#define INCL DOSFILEMGR
#include os2.h


    APIRET DosProtectSetFileSizeL
        (HFILE hFile, LONGLONG cbSize, FHLOCK fhFileHandleLockID)
</PRE>
==Parameters==
==Parameters==
;hFile HFILE) input : Handle of the file whose size to be changed.  
;hFile HFILE) input : Handle of the file whose size to be changed.
 
;cbSize LONGLONG) input : New size, in bytes, of the file.
; cbSize LONGLONG) input : New size, in bytes, of the file.  
;fhFileHandleLockID FHLOCK) input : The filehandle lockid obtained from DosProtectOpenL.
 
; fhFileHandleLockID FHLOCK) input : The filehandle lockid obtained from DosProtectOpenL.


==Return Code==
==Return Code==
  ulrc APIRET) returns
  ulrc APIRET) returns
DosProtectSetFileSizeL returns one of the following values
DosProtectSetFileSizeL returns one of the following values
* 0          NO_ERROR
* 0          NO_ERROR
*            ERROR_ACCESS_DENIED
*            ERROR_ACCESS_DENIED
Line 33: Line 23:
When DosProtectSetFileSizeL is issued, the file must be open in a mode that allows write access.
When DosProtectSetFileSizeL is issued, the file must be open in a mode that allows write access.


The size of the open file can be truncated or extended. If the file size is being extended, the file system tries to allocate additional bytes in a contiguous (or nearly contiguous) space on the medium. The values of the new bytes are undefined.  
The size of the open file can be truncated or extended. If the file size is being extended, the file system tries to allocate additional bytes in a contiguous (or nearly contiguous) space on the medium. The values of the new bytes are undefined.


==Example Code==
==Example Code==
This example writes to a file named DOSPMAN.DAT, resets the buffer, and changes the size of the file using DosProtect functions.
<PRE>
<PRE>
This example writes to a file named DOSPMAN.DAT , resets the buffer, and changes the size of the file using DosProtect functions.
#define INCL_DOSFILEMGR          /* File Manager values */
 
#define INCL_DOSERRORS          /* DOS Error values    */
#define INCL_DOSFILEMGR          /* File Manager values */#define INCL_DOSERRORS          /* DOS Error values    */
#include <os2.h>
#include os2.h  
#include <stdio.h>
#include stdio.h  
#include <string.h>
#include string.h  


int main(VOID)
int main(VOID){
HFILE  hfFileHandle  = 0L;    /* Handle for file being manipulated */
HFILE  hfFileHandle  = 0L;    /* Handle for file being manipulated */
ULONG  ulAction      = 0;      /* Action taken by DosOpenL */
ULONG  ulAction      = 0;      /* Action taken by DosOpenL */
Line 83: Line 73:
printf("DosProtectSetFileSizeL error  return code = %u\n", rc);
printf("DosProtectSetFileSizeL error  return code = %u\n", rc);
return 1;
return 1;


return NO_ERROR;
return NO_ERROR;
}
</PRE>


</PRE>
==Related Functions==
==Related Functions==
* [[OS2 API:CPI:DosProtectOpenL|DosProtectOpenL]]
* [[DosProtectOpenL]]
* [[OS2 API:CPI:DosProtectQueryFileInfo|DosProtectQueryFileInfo]]
* [[DosProtectQueryFileInfo]]
* [[OS2 API:CPI:DosQueryPathInfo|DosQueryPathInfo]]
* [[DosQueryPathInfo]]
 


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

Revision as of 13:17, 18 February 2017

DosProtectSetFileSizeL changes the size of a file.

Syntax

DosProtectSetFileSizeL (hFile, cbSize, fhFileHandleLockID)

Parameters

hFile HFILE) input
Handle of the file whose size to be changed.
cbSize LONGLONG) input
New size, in bytes, of the file.
fhFileHandleLockID FHLOCK) input
The filehandle lockid obtained from DosProtectOpenL.

Return Code

ulrc APIRET) returns

DosProtectSetFileSizeL returns one of the following values

  • 0 NO_ERROR
  • ERROR_ACCESS_DENIED
  • ERROR_INVALID_HANDLE
  • 26 ERROR_NOT_DOS_DISK
  • 33 ERROR_LOCK_VIOLATION
  • 87 ERROR_INVALID_PARAMETER
  • 112 ERROR_DISK_FULL

Remarks

When DosProtectSetFileSizeL is issued, the file must be open in a mode that allows write access.

The size of the open file can be truncated or extended. If the file size is being extended, the file system tries to allocate additional bytes in a contiguous (or nearly contiguous) space on the medium. The values of the new bytes are undefined.

Example Code

This example writes to a file named DOSPMAN.DAT, resets the buffer, and changes the size of the file 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;     /* Handle for file being manipulated */
ULONG  ulAction       = 0;      /* Action taken by DosOpenL */
FHLOCK FileHandleLock = 0;      /* File handle lock   */

ULONG  ulWrote        = 0;      /* Number of bytes written by DosWrite */
UCHAR  uchFileName 20   = "dospman.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 = DosProtectOpenL(uchFileName,  hfFileHandle,  ulAction, (LONGLONG)4,
FILE_ARCHIVED | FILE_NORMAL,
OPEN_ACTION_CREATE_IF_NEW | OPEN_ACTION_OPEN_IF_EXISTS,
OPEN_FLAGS_NOINHERIT | OPEN_SHARE_DENYNONE  |
OPEN_ACCESS_READWRITE, 0L,  FileHandleLock);
if (rc != NO_ERROR)  
printf("DosProtectOpenL error  return code = %u\n", rc);
return 1;
 

rc = DosProtectWrite (hfFileHandle, (PVOID) uchFileData,
sizeof (uchFileData),  ulWrote, FileHandleLock);
if (rc != NO_ERROR)  
printf("DosProtectWrite 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 = DosProtectSetFileSizeL (hfFileHandle, (LONGLONG)8, FileHandleLock);
if (rc != NO_ERROR)  
printf("DosProtectSetFileSizeL error  return code = %u\n", rc);
return 1;

return NO_ERROR;
}

Related Functions