Класс CHandle
Этот класс предоставляет методы для создания и использования объекта дескриптора.
Синтаксис
class CHandle
Участники
Открытые конструкторы
Имя | Описание |
---|---|
CHandle::CHandle | Конструктор. |
CHandle::~CHandle | Деструктор |
Открытые методы
Имя | Описание |
---|---|
CHandle::Attach | Вызовите этот метод, чтобы подключить CHandle объект к существующему дескриптору. |
CHandle::Close | Вызовите этот метод, чтобы закрыть CHandle объект. |
CHandle::D etach | Вызовите этот метод, чтобы отсоединить дескриптор CHandle от объекта. |
Открытые операторы
Имя | Описание |
---|---|
CHandle::operator HANDLE | Возвращает значение хранимого дескриптора. |
CHandle::operator = | Оператор присвоения. |
Открытые члены данных
Имя | Описание |
---|---|
CHandle::m_h | Переменная-член, в которой хранится дескриптор. |
Замечания
CHandle
Объект можно использовать всякий раз, когда требуется дескриптор: основное различие заключается в том, что CHandle
объект будет автоматически удален.
Примечание.
Некоторые функции API будут использовать NULL в качестве пустого или недопустимого дескриптора, а другие используют INVALID_HANDLE_VALUE. CHandle
использует значение NULL и будет обрабатывать INVALID_HANDLE_VALUE как реальный дескриптор. При вызове API, который может возвращать INVALID_HANDLE_VALUE, необходимо проверить это значение перед вызовом CHandle::Attach или передать его конструктору CHandle
и вместо этого передать значение NULL.
Требования
Заголовок: atlbase.h
CHandle::Attach
Вызовите этот метод, чтобы подключить CHandle
объект к существующему дескриптору.
void Attach(HANDLE h) throw();
Параметры
ч
CHandle
будет иметь право владения дескриптором h.
Замечания
Назначает объект дескриптору CHandle
h , а затем вызывает h.Detach(). При сборках отладки будет возникать функция ATLASSERT, если h имеет значение NULL. Никаких других проверок на допустимость дескриптора не выполняется.
CHandle::CHandle
Конструктор.
CHandle() throw();
CHandle(CHandle& h) throw();
explicit CHandle(HANDLE h) throw();
Параметры
ч
Существующий дескриптор или CHandle
.
Замечания
Создает новый CHandle
объект, при необходимости используя существующий дескриптор или CHandle
объект.
CHandle::~CHandle
Деструктор
~CHandle() throw();
Замечания
CHandle
Освобождает объект путем вызова CHandle::Close.
CHandle::Close
Вызовите этот метод, чтобы закрыть CHandle
объект.
void Close() throw();
Замечания
Закрывает открытый дескриптор объекта. Если дескриптор имеет значение NULL, то Close
если он уже вызван, в отладочных сборках будет возникать функция ATLASSERT.
CHandle::D etach
Вызовите этот метод, чтобы отсоединить дескриптор CHandle
от объекта.
HANDLE Detach() throw();
Возвращаемое значение
Возвращает отсоединяемый дескриптор.
Замечания
Освобождает владение дескриптором.
CHandle::m_h
Переменная-член, в которой хранится дескриптор.
HANDLE m_h;
CHandle::operator =
Оператор присваивания .
CHandle& operator=(CHandle& h) throw();
Параметры
ч
CHandle
будет иметь право владения дескриптором h.
Возвращаемое значение
Возвращает ссылку на новый CHandle
объект.
Замечания
CHandle
Если объект в настоящее время содержит дескриптор, он будет закрыт. Передаваемый CHandle
объект будет иметь ссылку на дескриптор null. Это гарантирует, что два CHandle
объекта никогда не будут содержать один и тот же активный дескриптор.
CHandle::operator HANDLE
Возвращает значение хранимого дескриптора.
operator HANDLE() const throw();
Замечания
Возвращает значение, хранящееся в CHandle::m_h.