2012-09-04 3 views
0

SafeHandleZeroOrMinusOneIsInvalid 또는 유사한 클래스는 .NET 4.0 및 Windows Store 응용 프로그램을 대상으로하는 휴대용 클래스 라이브러리에서 사용할 수 없습니다.SafeHandleZeroOrMinusOneIsInvalid in portable class library

누군가가 이것을 사용하거나 다른 클래스를 사용하는 이유 또는 방법을 알 수 있습니까?

예, 휴대용 클래스 라이브러리에 안전하지 않은 것을 넣고 싶습니다.

+0

불행히도, 불가능합니다. 휴대용 클래스 라이브러리는 BCL의 아주 작은 하위 집합이며 Win32 API 호출을 사용할 수 없습니다. –

+0

하지만 SafeHandle을 사용할 수 있고 PInvoke도 생각할 수 있습니다. 따라서 SafeHandleZeroOrMinusOnesIsInvalid의 원본을 복사 할 수 있습니다. 사실, 기본적으로 휴대용 라이브러리 클래스에서 사용할 수있는 Marshal.AllocHGlobal을 사용하여 네이티브 메모리를 관리하기위한 SafeHandle 클래스가 필요합니다. http://msdn.microsoft.com/en-us/library/s69bkh17.aspx – nietras

+0

Portable이 허용됩니다. –

답변

1

휴대용은 사용자가 타겟팅하는 플랫폼으로 제한됩니다. 이 경우 Windows Store 앱은이 유형을 노출하지 않습니다. 구현이 매우 간단합니다. 바로 여기에 제가 채찍을 맞았습니다.

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); } 
    } 
} 
+0

예, 그저 초기 구현 이었지만 구현을 복사하는 것이 었습니다. 그러나 Microsoft가이를 포함하지 않기로 결정한 이유가 있기를 바랍니다. 내가 말할 수있는 한 아무도 없다. – nietras