4.1.10.6.18 DecompressReplyMessage

 procedure DecompressReplyMessage(
   msgOut: DRS_MSG_GETCHREPLY,
   dwOutVersion: DWORD): DRS_MSG_GETCHGREPLY_NATIVE

Informative summary of behavior: Compression subdivides a data stream into sequences of bytes called compression chunks. The DecompressReplyMessage procedure decompresses the data stream.

  
 pInBuffer: sequence of BYTE
 pOutBuffer: sequence of BYTE
 cbInBufferCompress: DWORD
 cbInBufferDeCompress: DWORD
  
 if (dwOutVersion = 2) or
    (dwOutVersion = 7) then 
   /* decompress data that is compressed.
    */
   if (dwOutVersion = 2) then
     pInBuffer := msgOut.V2.CompressedV1.pbCompressedData
     cbInBufferCompress := msgOut.CompressedV1.cbCompressedSize
     cbInBufferDeCompress := msgOut.CompressedV1.cbUncompressedSize
     compressionAlg := DRS_COMP_ALG_MSZIP
   else if (dwOutVersion = 7) then
     pInBuffer := msgOut.V7.CompressedAny.pbCompressedData
     cbInBufferCompress := msgOut.V7.CompressedAny.cbCompressedSize
     cbInBufferDecompress := 
       msgOut.V7.CompressedAny.cbUncompressedSize
     compressionAlg := msgOut.V7.CompressionAlg
   endif
  
   DecompressMessage(pInBuffer, cbInBufferCompress, cbOutBufferCompress, 
                     compressionAlg, pOutputBuffer)
  
   /* pOutputBuffer now has the uncompressed data that was derived by
    * serializing a DRS_GETCHGREPLY structure at the server. 
    * Convert the serialized data back to DRS_GETCHGREPLY structure.*/
   if dwOutVersion = 2 then
     dwOutVersion := 1
   else
     dwOutVersion := msgOut.V7.dwCompressedVersion
   endif
   msgOut := Unpickling of data in pOutBuffer of length cbOutBuffer,
             as specified by [C311] Part 2, "IDL/NDR Pickles", and 
             [MS-RPCE] sections 2.2.6 and 2.2.7, "Type Serialization
             Version 1" and "Type Serialization Version 2"
  
 endif
  
 return GetNCChangesNativeReply(msgOut, dwOutVersion)