ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

compress.c
Go to the documentation of this file.
00001 /* COPYRIGHT:       See COPYING in the top level directory
00002  * PROJECT:         ReactOS system libraries
00003  * PURPOSE:         Compression and decompression functions
00004  * FILE:            lib/rtl/compress.c
00005  * PROGRAMER:       Eric Kohl
00006  */
00007 
00008 /* INCLUDES *****************************************************************/
00009 
00010 #include <rtl.h>
00011 
00012 #define NDEBUG
00013 #include <debug.h>
00014 
00015 /* MACROS *******************************************************************/
00016 
00017 #define COMPRESSION_FORMAT_MASK  0x00FF
00018 #define COMPRESSION_ENGINE_MASK  0xFF00
00019 
00020 
00021 
00022 
00023 /* FUNCTIONS ****************************************************************/
00024 
00025 
00026 static NTSTATUS
00027 RtlpCompressBufferLZNT1(USHORT Engine,
00028                         PUCHAR UncompressedBuffer,
00029                         ULONG UncompressedBufferSize,
00030                         PUCHAR CompressedBuffer,
00031                         ULONG CompressedBufferSize,
00032                         ULONG UncompressedChunkSize,
00033                         PULONG FinalCompressedSize,
00034                         PVOID WorkSpace)
00035 {
00036    return(STATUS_NOT_IMPLEMENTED);
00037 }
00038 
00039 
00040 static NTSTATUS
00041 RtlpWorkSpaceSizeLZNT1(USHORT Engine,
00042                        PULONG BufferAndWorkSpaceSize,
00043                        PULONG FragmentWorkSpaceSize)
00044 {
00045    if (Engine == COMPRESSION_ENGINE_STANDARD)
00046    {
00047       *BufferAndWorkSpaceSize = 0x8010;
00048       *FragmentWorkSpaceSize = 0x1000;
00049       return(STATUS_SUCCESS);
00050    }
00051    else if (Engine == COMPRESSION_ENGINE_MAXIMUM)
00052    {
00053       *BufferAndWorkSpaceSize = 0x10;
00054       *FragmentWorkSpaceSize = 0x1000;
00055       return(STATUS_SUCCESS);
00056    }
00057 
00058    return(STATUS_NOT_SUPPORTED);
00059 }
00060 
00061 
00062 /*
00063  * @implemented
00064  */
00065 NTSTATUS NTAPI
00066 RtlCompressBuffer(IN USHORT CompressionFormatAndEngine,
00067                   IN PUCHAR UncompressedBuffer,
00068                   IN ULONG UncompressedBufferSize,
00069                   OUT PUCHAR CompressedBuffer,
00070                   IN ULONG CompressedBufferSize,
00071                   IN ULONG UncompressedChunkSize,
00072                   OUT PULONG FinalCompressedSize,
00073                   IN PVOID WorkSpace)
00074 {
00075    USHORT Format = CompressionFormatAndEngine & COMPRESSION_FORMAT_MASK;
00076    USHORT Engine = CompressionFormatAndEngine & COMPRESSION_ENGINE_MASK;
00077 
00078    if ((Format == COMPRESSION_FORMAT_NONE) ||
00079          (Format == COMPRESSION_FORMAT_DEFAULT))
00080       return(STATUS_INVALID_PARAMETER);
00081 
00082    if (Format == COMPRESSION_FORMAT_LZNT1)
00083       return(RtlpCompressBufferLZNT1(Engine,
00084                                      UncompressedBuffer,
00085                                      UncompressedBufferSize,
00086                                      CompressedBuffer,
00087                                      CompressedBufferSize,
00088                                      UncompressedChunkSize,
00089                                      FinalCompressedSize,
00090                                      WorkSpace));
00091 
00092    return(STATUS_UNSUPPORTED_COMPRESSION);
00093 }
00094 
00095 
00096 /*
00097  * @unimplemented
00098  */
00099 NTSTATUS NTAPI
00100 RtlCompressChunks(IN PUCHAR UncompressedBuffer,
00101                   IN ULONG UncompressedBufferSize,
00102                   OUT PUCHAR CompressedBuffer,
00103                   IN ULONG CompressedBufferSize,
00104                   IN OUT PCOMPRESSED_DATA_INFO CompressedDataInfo,
00105                   IN ULONG CompressedDataInfoLength,
00106                   IN PVOID WorkSpace)
00107 {
00108    return(STATUS_NOT_IMPLEMENTED);
00109 }
00110 
00111 
00112 /*
00113  * @unimplemented
00114  */
00115 NTSTATUS NTAPI
00116 RtlDecompressBuffer(IN USHORT CompressionFormat,
00117                     OUT PUCHAR UncompressedBuffer,
00118                     IN ULONG UncompressedBufferSize,
00119                     IN PUCHAR CompressedBuffer,
00120                     IN ULONG CompressedBufferSize,
00121                     OUT PULONG FinalUncompressedSize)
00122 {
00123    return(STATUS_NOT_IMPLEMENTED);
00124 }
00125 
00126 
00127 /*
00128  * @unimplemented
00129  */
00130 NTSTATUS NTAPI
00131 RtlDecompressChunks(OUT PUCHAR UncompressedBuffer,
00132                     IN ULONG UncompressedBufferSize,
00133                     IN PUCHAR CompressedBuffer,
00134                     IN ULONG CompressedBufferSize,
00135                     IN PUCHAR CompressedTail,
00136                     IN ULONG CompressedTailSize,
00137                     IN PCOMPRESSED_DATA_INFO CompressedDataInfo)
00138 {
00139    return(STATUS_NOT_IMPLEMENTED);
00140 }
00141 
00142 
00143 /*
00144  * @unimplemented
00145  */
00146 NTSTATUS NTAPI
00147 RtlDecompressFragment(IN USHORT CompressionFormat,
00148                       OUT PUCHAR UncompressedFragment,
00149                       IN ULONG UncompressedFragmentSize,
00150                       IN PUCHAR CompressedBuffer,
00151                       IN ULONG CompressedBufferSize,
00152                       IN ULONG FragmentOffset,
00153                       OUT PULONG FinalUncompressedSize,
00154                       IN PVOID WorkSpace)
00155 {
00156    return(STATUS_NOT_IMPLEMENTED);
00157 }
00158 
00159 
00160 /*
00161  * @unimplemented
00162  */
00163 NTSTATUS NTAPI
00164 RtlDescribeChunk(IN USHORT CompressionFormat,
00165                  IN OUT PUCHAR *CompressedBuffer,
00166                  IN PUCHAR EndOfCompressedBufferPlus1,
00167                  OUT PUCHAR *ChunkBuffer,
00168                  OUT PULONG ChunkSize)
00169 {
00170    return(STATUS_NOT_IMPLEMENTED);
00171 }
00172 
00173 
00174 /*
00175  * @unimplemented
00176  */
00177 NTSTATUS NTAPI
00178 RtlGetCompressionWorkSpaceSize(IN USHORT CompressionFormatAndEngine,
00179                                OUT PULONG CompressBufferAndWorkSpaceSize,
00180                                OUT PULONG CompressFragmentWorkSpaceSize)
00181 {
00182    USHORT Format = CompressionFormatAndEngine & COMPRESSION_FORMAT_MASK;
00183    USHORT Engine = CompressionFormatAndEngine & COMPRESSION_ENGINE_MASK;
00184 
00185    if ((Format == COMPRESSION_FORMAT_NONE) ||
00186          (Format == COMPRESSION_FORMAT_DEFAULT))
00187       return(STATUS_INVALID_PARAMETER);
00188 
00189    if (Format == COMPRESSION_FORMAT_LZNT1)
00190       return(RtlpWorkSpaceSizeLZNT1(Engine,
00191                                     CompressBufferAndWorkSpaceSize,
00192                                     CompressFragmentWorkSpaceSize));
00193 
00194    return(STATUS_UNSUPPORTED_COMPRESSION);
00195 }
00196 
00197 
00198 
00199 /*
00200  * @unimplemented
00201  */
00202 NTSTATUS NTAPI
00203 RtlReserveChunk(IN USHORT CompressionFormat,
00204                 IN OUT PUCHAR *CompressedBuffer,
00205                 IN PUCHAR EndOfCompressedBufferPlus1,
00206                 OUT PUCHAR *ChunkBuffer,
00207                 IN ULONG ChunkSize)
00208 {
00209    return(STATUS_NOT_IMPLEMENTED);
00210 }
00211 
00212 /* EOF */

Generated on Sat May 26 2012 04:22:06 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.