Содержание
KnHandleCreateUserObject()
Функция объявлена в файле coresrv/handle/handle_api.h
.
Retcode KnHandleCreateUserObject(rtl_uint32_t type, rtl_uint32_t rights,
void *context, Handle *handle);
Функция создает дескриптор handle
типа type
с маской прав rights
.
Параметр type
может принимать значения от HANDLE_TYPE_USER_FIRST
до HANDLE_TYPE_USER_LAST
.
Макросы HANDLE_TYPE_USER_FIRST
и HANDLE_TYPE_USER_LAST
определены в заголовочном файле handle/handletype.h
.
Параметр context
задает контекст пользовательского ресурса. В случае успеха функция возвращает rcOk, иначе возвращает код ошибки.
Пример
Retcode ServerPortInit(ServerPort *serverPort)
{
Retcode rc = rcInvalidArgument;
Notice serverEventNotice;
rc = KnHandleCreateUserObject(HANDLE_TYPE_USER_FIRST, OCAP_HANDLE_SET_EVENT | OCAP_HANDLE_GET_EVENT,
serverPort, &serverPort->handle);
if (rc == rcOk) {
KosRefObject(serverPort);
rc = KnNoticeSubscribeToObject(serverEventNotice,
serverPort->handle,
EVENT_OBJECT_DESTROYED,
(rtl_uintptr_t) serverPort);
if (rc != rcOk) {
KosPutObject(serverPort);
KnHandleClose(serverPort->handle);
serverPort->handle = INVALID_HANDLE;
}
}
return rc;
}