You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
76 lines
1.5 KiB
76 lines
1.5 KiB
/*++
|
|
|
|
Copyright (c) 1989-2001 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
hash.h
|
|
|
|
Abstract:
|
|
|
|
Abstract Data Type: Hash
|
|
|
|
Author:
|
|
|
|
Jiandong Ruan
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
typedef struct SMB_HASH_TABLE *PSMB_HASH_TABLE;
|
|
|
|
|
|
typedef PVOID (*PSMB_HASH_GET_KEY)(PLIST_ENTRY entry); // return the key stored in the entry
|
|
typedef DWORD (*PSMB_HASH)(PVOID key);
|
|
typedef VOID (*PSMB_HASH_DEL)(PLIST_ENTRY entry);
|
|
typedef VOID (*PSMB_HASH_ADD)(PLIST_ENTRY entry); // OnAdd
|
|
typedef LONG (*PSMB_HASH_REFERENCE)(PLIST_ENTRY entry);
|
|
typedef LONG (*PSMB_HASH_DEREFERENCE)(PLIST_ENTRY entry);
|
|
typedef int (*PSMB_HASH_CMP)(PLIST_ENTRY a, PVOID key);
|
|
|
|
|
|
PSMB_HASH_TABLE
|
|
SmbCreateHashTable(
|
|
DWORD NumberOfBuckets,
|
|
PSMB_HASH HashFunc,
|
|
PSMB_HASH_GET_KEY GetKeyFunc,
|
|
PSMB_HASH_CMP CmpFunc,
|
|
PSMB_HASH_ADD AddFunc, // optional
|
|
PSMB_HASH_DEL DelFunc, // optional
|
|
PSMB_HASH_REFERENCE RefFunc, // optional
|
|
PSMB_HASH_DEREFERENCE DerefFunc // optional
|
|
);
|
|
|
|
|
|
VOID
|
|
SmbDestroyHashTable(
|
|
PSMB_HASH_TABLE HashTbl
|
|
);
|
|
|
|
|
|
PLIST_ENTRY
|
|
SmbLookupHashTable(
|
|
PSMB_HASH_TABLE HashTbl,
|
|
PVOID Key
|
|
);
|
|
|
|
|
|
PLIST_ENTRY
|
|
SmbLookupHashTableAndReference(
|
|
PSMB_HASH_TABLE HashTbl,
|
|
PVOID Key
|
|
);
|
|
|
|
|
|
PLIST_ENTRY
|
|
SmbAddToHashTable(
|
|
PSMB_HASH_TABLE HashTbl,
|
|
PLIST_ENTRY Entry
|
|
);
|
|
|
|
PLIST_ENTRY
|
|
SmbRemoveFromHashTable(
|
|
PSMB_HASH_TABLE HashTbl,
|
|
PVOID Key
|
|
);
|