static IntPtr InitializeMagicCookie(NativeAudioFile audioFile, NativeAudioConverter converter)
        {
            Contract.Requires(audioFile != null);
            Contract.Requires(converter != null);

            uint dataSize;
            uint isWritable;

            AudioFileStatus getStatus = audioFile.GetPropertyInfo(AudioFilePropertyId.MagicCookieData, out dataSize,
                                                                  out isWritable);

            if (getStatus != AudioFileStatus.Ok)
            {
                throw new IOException(string.Format(CultureInfo.CurrentCulture,
                                                    Resources.LosslessSampleDecoderGetCookieInfoError, getStatus));
            }

            if (dataSize == 0)
            {
                return(IntPtr.Zero);
            }

            IntPtr cookie = audioFile.GetProperty(AudioFilePropertyId.MagicCookieData, dataSize);

            AudioConverterStatus setStatus = converter.SetProperty(AudioConverterPropertyId.DecompressionMagicCookie,
                                                                   dataSize, cookie);

            if (setStatus != AudioConverterStatus.Ok)
            {
                throw new IOException(string.Format(CultureInfo.CurrentCulture,
                                                    Resources.LosslessSampleDecoderSetCookieError, setStatus));
            }

            return(cookie);
        }