|
Тема |
Re: "Присвояване" на HANDLE за даден системен ресурс [re: zero] |
|
Автор | elemag (Нерегистриран) | |
Публикувано | 18.04.03 19:19 |
|
|
В случая с манипулаторите (ще използвам този термин за HANDLE) няма такова нещо като "присвояването им" към ресурс. Има една много проста схема за създаване на манипулатор, чиято идея се използва за обекти с произволна сложност. Схематично кода е следния:
typedef struct { int a;... } MYOBJECT;
typedef HANDLE HMYOBJECT; // може да е void* или MYOBJECT*
HMYOBJECT MyObjectCreate( ... )
{
MYOBJECT *o = malloc( sizeof( MYOBJECT ) );
o.a = ...;
return (HMYOBJECT)o;
}
void MyObject_Destroy( HMYOBJECT h )
{
free( (MYOBJECT *)h );
}
void MyObject_Print( HMYOBJECT h, ... )
{
MYOBJECT *o = (MYOBJECT *)h;
printf( "%d", h.a );
}
С произволни усложнявания идеята остава същата, макар че има и други схема за създаване на манипулатори, тази е най-лесната.
Що се отнася до Windows, там има манипулатори с доста по-сложна логика (като този върнат от CreateFile), но при HCERTSTORE логиката е аналогична на горната.
|
| |
|
|
|