source: trunk/src/rsaenh/handle.h@ 22012

Last change on this file since 22012 was 21494, checked in by dmik, 15 years ago

Fixed broken build after r21492 by sorting out a huuuuge wagon of duplicates, wrong include order and other dirty mess.

File size: 2.3 KB
Line 
1/*
2 * dlls/rsaenh/handle.h
3 * Support code to manage HANDLE tables.
4 *
5 * Copyright 1998 Alexandre Julliard
6 * Copyright 2002-2004 Mike McCormack for CodeWeavers
7 * Copyright 2004 Michael Jung
8 *
9 * This library is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU Lesser General Public
11 * License as published by the Free Software Foundation; either
12 * version 2.1 of the License, or (at your option) any later version.
13 *
14 * This library is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 * Lesser General Public License for more details.
18 *
19 * You should have received a copy of the GNU Lesser General Public
20 * License along with this library; if not, write to the Free Software
21 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
22 */
23
24#ifndef __WINE_HANDLE_H
25#define __WINE_HANDLE_H
26
27#include "wincrypt.h"
28
29#ifdef __cplusplus
30extern "C" {
31#endif
32
33#define TABLE_SIZE_INCREMENT 32
34
35struct tagOBJECTHDR;
36typedef struct tagOBJECTHDR OBJECTHDR;
37typedef void (*DESTRUCTOR)(OBJECTHDR *object);
38struct tagOBJECTHDR
39{
40 DWORD dwType;
41 LONG refcount;
42 DESTRUCTOR destructor;
43};
44
45typedef struct tagHANDLETBLENTRY
46{
47 OBJECTHDR *pObject;
48 unsigned int iNextFree;
49} HANDLETBLENTRY;
50
51typedef struct tagHANDLETBL
52{
53 unsigned int iEntries;
54 unsigned int iFirstFree;
55 HANDLETBLENTRY *paEntries;
56 CRITICAL_SECTION mutex;
57} HANDLETBL;
58
59int alloc_handle_table (HANDLETBL **lplpTable);
60void init_handle_table (HANDLETBL *lpTable);
61int release_handle_table(HANDLETBL *lpTable);
62void destroy_handle_table(HANDLETBL *lpTable);
63int release_handle (HANDLETBL *lpTable, HCRYPTKEY handle, DWORD dwType);
64int copy_handle (HANDLETBL *lpTable, HCRYPTKEY handle, DWORD dwType, HCRYPTKEY *copy);
65int lookup_handle (HANDLETBL *lpTable, HCRYPTKEY handle, DWORD dwType, OBJECTHDR **lplpObject);
66int is_valid_handle (HANDLETBL *lpTable, HCRYPTKEY handle, DWORD dwType);
67
68HCRYPTKEY new_object (HANDLETBL *lpTable, size_t cbSize, DWORD dwType, DESTRUCTOR destructor,
69 OBJECTHDR **ppObject);
70
71#ifdef __cplusplus
72}
73#endif
74
75#endif /* __WINE_HANDLE_H */
Note: See TracBrowser for help on using the repository browser.