private MI_Result DeserializeInstance( MI_SerializerFlags flags, IntPtr serializedBuffer, UInt32 serializedBufferLength, MI_Class[] classObjects, MI_Deserializer_ClassObjectNeededNative classObjectNeeded, IntPtr classObjectNeededContext, out UInt32 serializedBufferRead, out MI_Instance instanceObject, out MI_Instance cimErrorDetails ) { if (classObjectNeededContext != IntPtr.Zero) { throw new NotImplementedException(); } MI_Instance instanceObjectLocal = MI_Instance.NewIndirectPtr(); MI_Instance cimErrorDetailsLocal = MI_Instance.NewIndirectPtr(); MI_Class.ArrayPtr classArrayPtr = MI_Class.GetPointerArray(classObjects); MI_Result resultLocal = this.commonFT.DeserializeInstance(this, flags, serializedBuffer, serializedBufferLength, classArrayPtr.Ptrs, (uint)classObjects.Length, classObjectNeeded, IntPtr.Zero, out serializedBufferRead, instanceObjectLocal, cimErrorDetailsLocal); instanceObject = instanceObjectLocal; cimErrorDetails = cimErrorDetailsLocal; return(resultLocal); }
internal MI_Result DeserializeInstance( MI_SerializerFlags flags, byte[] serializedBuffer, MI_Class[] classObjects, MI_Deserializer_ClassObjectNeeded classObjectNeeded, out UInt32 serializedBufferRead, out MI_Instance instanceObject, out MI_Instance cimErrorDetails ) { if (serializedBuffer == null || serializedBuffer.Length == 0) { throw new InvalidOperationException(); } MI_Deserializer_ClassObjectNeededNative nativeCallback = MI_DeserializerCallbacks.GetNativeClassObjectNeededCallback(this.format, classObjectNeeded); IntPtr clientBuffer = Marshal.AllocHGlobal(serializedBuffer.Length); try { Marshal.Copy(serializedBuffer, 0, clientBuffer, serializedBuffer.Length); return(this.DeserializeInstance(flags, clientBuffer, (UInt32)(serializedBuffer.Length), classObjects, nativeCallback, IntPtr.Zero, out serializedBufferRead, out instanceObject, out cimErrorDetails)); } finally { Marshal.FreeHGlobal(clientBuffer); } }