>lpFileName = 'C:\temp\fredold.txt' >* This file exists and has been compressed > >* Get the file handle for read and write >#DEFINE OPEN_EXISTING 0x00000003 >#DEFINE GENERIC_READ 0x80000000 >#DEFINE GENERIC_WRITE 0x40000000 >#DEFINE INVALID_HANDLE -1 > >DECLARE INTEGER CreateFile IN kernel32 ; > STRING @ lpFileName ,; > INTEGER dwDesiredAccess ,; > INTEGER dwShareMode ,; > INTEGER @ lpSecurityAttributes,; > INTEGER dwCreationDistribution,; > INTEGER dwFlagsAndAttributes ,; > INTEGER hTemplateFile > >dwDesiredAccess = GENERIC_READ + GENERIC_WRITE > >hFile1 = CreateFile( ; > @lpFileName ,; > dwDesiredAccess ,; > 0 ,; > 0 ,; > OPEN_EXISTING ,; > 0 ,; > 0) > >IF hFile1 <> INVALID_HANDLE > > #DEFINE COMPRESSION_FORMAT_NONE 0x0000 > #DEFINE COMPRESSION_FORMAT_DEFAULT 0x0001 > #DEFINE COMPRESSION_FORMAT_LZNT1 0x0002 > #DEFINE FSCTL_SET_COMPRESSION 0x00F0 > #DEFINE FSCTL_GET_COMPRESSION 0x000F > > DECLARE INTEGER DeviceIoControl IN kernel32 ; > INTEGER hDevice ,; > INTEGER dwIoControlCode ,; > STRING @ lpInBuffer ,; > INTEGER nInBufferSize ,; > STRING @ lpOutBuffer ,; > INTEGER nOutBufferSize ,; > STRING @ lpBytesReturned ,; > STRING @ lpOverlapped > > dwIoControlCode = FSCTL_GET_COMPRESSION > lpInBuffer = '' > nInBufferSize = 0 > lpOutBuffer = ' ' > nOutBufferSize = 2 > lpBytesReturned = ' ' > > * Find current compression of the file using DeviceIoControl > RetVal = DeviceIoControl( ; > hFile1 ,; > FSCTL_GET_COMPRESSION ,; > @lpInBuffer ,; > nInBufferSize ,; > @lpOutBuffer ,; > nOutBufferSize ,; > @lpBytesReturned ,; > 0) > > IF RetVal = 0 && DeviceIoControl failed > MESSAGEBOX('DeviceIoControl failed') > ELSE > * Two bytes > Bufval = 0 > FOR t = 0 TO 1 > BufVal = BufVal + ASC(SUBSTR(lpOutBuffer, t+1, 1))*256^t > ENDFOR > DO CASE > CASE BufVal = COMPRESSION_FORMAT_NONE > MESSAGEBOX('COMPRESSION_FORMAT_NONE') > CASE BufVal = COMPRESSION_FORMAT_LZNT1 > MESSAGEBOX('COMPRESSION_FORMAT_LZNT1') > ENDCASE > ENDIF > >ENDIF > >* Close the file >IF hFile1>0 > DECLARE INTEGER CloseHandle IN kernel32 ; > INTEGER hObject > lnClosed = CloseHandle(hFile1) > IF lnClosed = 0 > MESSAGEBOX('Failed to close the file') > ENDIF >ENDIF >