本文整理汇总了C#中UnsafeNativeMethods.HandsOffStorage方法的典型用法代码示例。如果您正苦于以下问题:C# UnsafeNativeMethods.HandsOffStorage方法的具体用法?C# UnsafeNativeMethods.HandsOffStorage怎么用?C# UnsafeNativeMethods.HandsOffStorage使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类UnsafeNativeMethods
的用法示例。
在下文中一共展示了UnsafeNativeMethods.HandsOffStorage方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: RefreshStorage
internal State RefreshStorage(UnsafeNativeMethods.IPersistStorage iPersistStorage) {
Debug.Assert(storage != null, "how can we not have a storage object?");
Debug.Assert(iLockBytes != null, "how can we have a storage w/o ILockBytes?");
if (storage == null || iLockBytes == null) return null;
iPersistStorage.Save(storage, true);
storage.Commit(0);
iPersistStorage.HandsOffStorage();
try {
buffer = null;
ms = null;
NativeMethods.STATSTG stat = new NativeMethods.STATSTG();
iLockBytes.Stat(stat, NativeMethods.Ole.STATFLAG_NONAME);
length = (int) stat.cbSize;
buffer = new byte[length];
IntPtr hglobal = UnsafeNativeMethods.GetHGlobalFromILockBytes(iLockBytes);
IntPtr pointer = UnsafeNativeMethods.GlobalLock(new HandleRef(null, hglobal));
try {
if (pointer != IntPtr.Zero) {
Marshal.Copy(pointer, buffer, 0, length);
}
else {
length = 0;
buffer = null;
}
}
finally {
UnsafeNativeMethods.GlobalUnlock(new HandleRef(null, hglobal));
}
}
finally {
iPersistStorage.SaveCompleted(storage);
}
return this;
}