0
SafeHandleZeroOrMinusOneIsInvalid或類似的類不能用於面向.NET 4.0和Windows Store應用的可移植類庫。可移植類庫中的SafeHandleZeroOrMinusOneIsInvalid
有人知道爲什麼或如何使用這個或使用不同的類?
是的,我想在便攜式類庫中使用一些不安全的東西。
SafeHandleZeroOrMinusOneIsInvalid或類似的類不能用於面向.NET 4.0和Windows Store應用的可移植類庫。可移植類庫中的SafeHandleZeroOrMinusOneIsInvalid
有人知道爲什麼或如何使用這個或使用不同的類?
是的,我想在便攜式類庫中使用一些不安全的東西。
便攜式僅限於您定位的平臺。在這種情況下,Windows應用商店應用不會公開此類型。它的實現非常簡單,下面是我剛掀起來的一個:
public abstract class SafeHandleZeroOrMinusOneIsInvalid : SafeHandle
{
protected SafeHandleZeroOrMinusOneIsInvalid(bool ownsHandle)
: base(IntPtr.Zero, ownsHandle)
{
}
public override bool IsInvalid
{
get { return base.handle == IntPtr.Zero || base.handle == (IntPtr)(-1); }
}
}
是的,那是我最初的答案,只是複製實現,但希望爲什麼微軟決定不包含這些實現。據我所知,沒有任何事情...... – nietras
不幸的是,這是不可能的。可移植類庫是BCL的一個非常小的子集,並且不允許您使用Win32 API調用。 –
,但SafeHandle本身是可用的,PInvoke也是我想的,所以可以複製SafeHandleZeroOrMinusOnesIsInvalid的源代碼。實際上,我需要的基本上是一個SafeHandle類,用於使用Marshal.AllocHGlobal管理本機內存,該類可用於便攜式類庫中:http://msdn.microsoft.com/en-us/library/s69bkh17.aspx – nietras
便攜式允許在針對支持它的平臺調用Win32 API時(在這種情況下爲.NET和Windows應用商店應用) –