private void DeserializeFromBlob(byte[] rg)
        {
            IntPtr  zero   = IntPtr.Zero;
            IStream stream = null;

            try
            {
                this.pWbemClassObject = IntPtr.Zero;
                zero = Marshal.AllocHGlobal((int)rg.Length);
                Marshal.Copy(rg, 0, zero, (int)rg.Length);
                stream = IWbemClassObjectFreeThreaded.CreateStreamOnHGlobal(zero, 0);
                this.pWbemClassObject = IWbemClassObjectFreeThreaded.CoUnmarshalInterface(stream, ref IWbemClassObjectFreeThreaded.IID_IWbemClassObject);
            }
            finally
            {
                if (stream != null)
                {
                    Marshal.ReleaseComObject(stream);
                }
                if (zero != IntPtr.Zero)
                {
                    Marshal.FreeHGlobal(zero);
                }
            }
        }