CriticalHandle 클래스

정의

핸들 리소스에 대한 래퍼 클래스를 나타냅니다.Represents a wrapper class for handle resources.

public ref class CriticalHandle abstract : System::Runtime::ConstrainedExecution::CriticalFinalizerObject, IDisposable
[System.Security.SecurityCritical]
public abstract class CriticalHandle : System.Runtime.ConstrainedExecution.CriticalFinalizerObject, IDisposable
type CriticalHandle = class
    inherit CriticalFinalizerObject
    interface IDisposable
Public MustInherit Class CriticalHandle
Inherits CriticalFinalizerObject
Implements IDisposable
상속
파생
특성
구현

설명

CriticalHandle 클래스는 비슷합니다는 SafeHandle 점을 제외 하면 클래스 SafeHandle 참조 횟수를 구현 합니다.The CriticalHandle class is similar to the SafeHandle class, except that SafeHandle implements reference counting. 사용할 수 있습니다 CriticalHandle 대신 SafeHandle 성능 문제를 해결할 때 필요한 동기화를 자세히 제공할 수 있습니다를 효율적으로 직접.You can use CriticalHandle instead of SafeHandle to address performance considerations when you can provide the necessary synchronization more efficiently yourself.

때문에 CriticalHandle 클래스 참조 계산을 수행 하지 않습니다, 핸들 재활용 보안 공격 으로부터 보호를 제공 하지 않습니다.Because the CriticalHandle class does not perform reference counting, it does not provide protection from handle recycling security attacks. 알고리즘을 암시적으로 계산 참조를 serialize 작업을 하기 때문에 어느 정도 스레드로부터의 안전성 손실 됩니다.Because the reference counting algorithm implicitly serializes operations, a certain amount of thread safety is also lost. 호출 하는 경우는 IDisposable.Dispose 또는 Close 메서드 호출 하는 경우 또는 핸들을 사용 하는 작업은 다른 스레드에서 IDisposable.Dispose 또는 Close 동시에 두 스레드에서 나온 결과 비결입니다.If you call the IDisposable.Dispose or Close method while an operation that is using the handle is outstanding on another thread, or if you call IDisposable.Dispose or Close from two threads at the same time, the results are non-deterministic. 합니다 CriticalHandle 클래스에서 제공 하는 결정적 종료를 계속 제공 된 CriticalFinalizerObject 클래스입니다.The CriticalHandle class still provides the guaranteed critical finalization provided by the CriticalFinalizerObject class.

생성자

CriticalHandle(IntPtr)

지정된 잘못된 핸들 값을 사용하여 CriticalHandle 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the CriticalHandle class with the specified invalid handle value.

필드

handle

래핑할 핸들을 지정합니다.Specifies the handle to be wrapped.

속성

IsClosed

핸들이 닫혔는지 여부를 나타내는 값을 가져옵니다.Gets a value indicating whether the handle is closed.

IsInvalid

파생 클래스에서 재정의된 경우 핸들 값이 잘못되었는지 여부를 나타내는 값을 가져옵니다.When overridden in a derived class, gets a value indicating whether the handle value is invalid.

메서드

Close()

핸들의 리소스를 해제하도록 표시합니다.Marks the handle for releasing and freeing resources.

Dispose()

CriticalHandle에서 사용하는 모든 리소스를 해제합니다.Releases all resources used by the CriticalHandle.

Dispose(Boolean)

일반적인 삭제 작업을 수행할지 여부를 지정하여 CriticalHandle 클래스에서 사용하는 관리되지 않는 리소스를 해제합니다.Releases the unmanaged resources used by the CriticalHandle class specifying whether to perform a normal dispose operation.

Equals(Object)

지정한 개체와 현재 개체가 같은지 여부를 확인합니다.Determines whether the specified object is equal to the current object.

(다음에서 상속됨 Object)
Finalize()

핸들에 연결된 모든 리소스를 해제합니다.Frees all resources associated with the handle.

GetHashCode()

기본 해시 함수로 작동합니다.Serves as the default hash function.

(다음에서 상속됨 Object)
GetType()

현재 인스턴스의 Type을 가져옵니다.Gets the Type of the current instance.

(다음에서 상속됨 Object)
MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.Creates a shallow copy of the current Object.

(다음에서 상속됨 Object)
ReleaseHandle()

파생 클래스에서 재정의된 경우 핸들을 해제하는 데 필요한 코드를 실행합니다.When overridden in a derived class, executes the code required to free the handle.

SetHandle(IntPtr)

지정된 기존 핸들에 대한 핸들을 설정합니다.Sets the handle to the specified pre-existing handle.

SetHandleAsInvalid()

핸들을 잘못된 핸들로 표시합니다.Marks a handle as invalid.

ToString()

현재 개체를 나타내는 문자열을 반환합니다.Returns a string that represents the current object.

(다음에서 상속됨 Object)

보안

InheritanceDemand
상속자의 경우 완전히 신뢰합니다.for full trust for inheritors. 이 멤버는 부분적으로 신뢰할 수 있는 코드에서 상속할 수 없습니다.This member cannot be inherited by partially trusted code.

SecurityCriticalAttribute
직접 실행 호출자에 대 한 완전 신뢰가 필요 합니다.requires full trust for the immediate caller. 이 클래스는 부분적으로 신뢰할 수 있는 또는 투명 코드에서 사용할 수 없습니다.This class cannot be used by partially trusted or transparent code.

적용 대상

추가 정보