Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygencompress.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
1.7.6.1
|