170 lines
4.1 KiB
C
170 lines
4.1 KiB
C
//+-------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
// Copyright (C) Microsoft Corporation, 1992 - 1992.
|
|
//
|
|
// File: prefix.hxx
|
|
//
|
|
// Contents: PREFIX table definition
|
|
//
|
|
// History: SethuR -- Implemented
|
|
//--------------------------------------------------------------------------
|
|
|
|
#ifndef __PREFIX_HXX__
|
|
#define __PREFIX_HXX__
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
|
|
//+---------------------------------------------------------------------
|
|
//
|
|
// Struct: DFS_PREFIX_TABLE API.
|
|
//
|
|
// History:
|
|
//
|
|
// Notes: The following API's are provided for manipulating the
|
|
// DFS_PREFIX_TABLE.
|
|
//
|
|
//----------------------------------------------------------------------
|
|
struct _DFS_PREFIX_TABLE;
|
|
|
|
extern
|
|
NTSTATUS DfsInitializePrefixTable(struct _DFS_PREFIX_TABLE **ppTable,
|
|
BOOLEAN fCaseSensitive,
|
|
PVOID Lock);
|
|
|
|
|
|
extern
|
|
NTSTATUS DfsInsertInPrefixTableLocked(struct _DFS_PREFIX_TABLE *pTable,
|
|
PUNICODE_STRING pPath,
|
|
PVOID pData);
|
|
|
|
extern
|
|
NTSTATUS DfsRemoveFromPrefixTableLocked(struct _DFS_PREFIX_TABLE *pTable,
|
|
PUNICODE_STRING pPath,
|
|
PVOID pMatchingData );
|
|
|
|
|
|
extern
|
|
NTSTATUS DfsReplaceInPrefixTableLocked(struct _DFS_PREFIX_TABLE *pTable,
|
|
PUNICODE_STRING pPath,
|
|
PVOID pReplaceData,
|
|
PVOID pMatchingData );
|
|
|
|
extern
|
|
NTSTATUS DfsFreePrefixTable(struct _DFS_PREFIX_TABLE *pTable);
|
|
|
|
extern
|
|
NTSTATUS DfsFindUnicodePrefixLocked(
|
|
IN struct _DFS_PREFIX_TABLE *pTable,
|
|
IN PUNICODE_STRING pPath,
|
|
OUT PUNICODE_STRING pSuffix,
|
|
OUT PVOID *ppData,
|
|
OUT PBOOLEAN pSubStringMatch );
|
|
|
|
|
|
extern
|
|
NTSTATUS
|
|
DfsPrefixTableAcquireWriteLock(
|
|
struct _DFS_PREFIX_TABLE *pTable );
|
|
|
|
extern
|
|
NTSTATUS
|
|
DfsPrefixTableAcquireReadLock(
|
|
struct _DFS_PREFIX_TABLE *pTable );
|
|
|
|
|
|
extern
|
|
NTSTATUS
|
|
DfsPrefixTableReleaseLock(
|
|
struct _DFS_PREFIX_TABLE *pTable );
|
|
|
|
extern NTSTATUS
|
|
DfsPrefixTableInit(VOID);
|
|
|
|
extern
|
|
void
|
|
DfsPrefixTableShutdown(void);
|
|
|
|
VOID
|
|
DfsDumpPrefixTable(
|
|
struct _DFS_PREFIX_TABLE *pPrefixTable,
|
|
IN VOID (*DumpFunction)(PVOID pEntry));
|
|
|
|
VOID
|
|
DfsProcessPrefixTable(
|
|
struct _DFS_PREFIX_TABLE *pPrefixTable,
|
|
IN VOID (*DumpFunction)(PVOID pEntry));
|
|
|
|
|
|
NTSTATUS
|
|
DfsDismantlePrefixTable(
|
|
IN struct _DFS_PREFIX_TABLE *pTable,
|
|
IN VOID (*ProcessFunction)(PVOID pEntry));
|
|
|
|
NTSTATUS
|
|
DfsDeletePrefixTable(
|
|
struct _DFS_PREFIX_TABLE *pTable);
|
|
|
|
NTSTATUS
|
|
DfsInsertInPrefixTable(
|
|
IN struct _DFS_PREFIX_TABLE *pTable,
|
|
IN PUNICODE_STRING pPath,
|
|
IN PVOID pData);
|
|
|
|
NTSTATUS
|
|
DfsFindUnicodePrefix(
|
|
IN struct _DFS_PREFIX_TABLE *pTable,
|
|
IN PUNICODE_STRING pPath,
|
|
IN PUNICODE_STRING pSuffix,
|
|
IN PVOID *ppData);
|
|
|
|
NTSTATUS
|
|
DfsRemoveFromPrefixTable(
|
|
IN struct _DFS_PREFIX_TABLE *pTable,
|
|
IN PUNICODE_STRING pPath,
|
|
IN PVOID pMatchingData);
|
|
|
|
NTSTATUS
|
|
DfsReplaceInPrefixTable(
|
|
IN struct _DFS_PREFIX_TABLE *pTable,
|
|
IN PUNICODE_STRING pPath,
|
|
IN PVOID pReplaceData,
|
|
IN PVOID pMatchingData);
|
|
|
|
|
|
NTSTATUS
|
|
DfsRemoveFromPrefixTableEx(
|
|
IN struct _DFS_PREFIX_TABLE * pTable,
|
|
IN PUNICODE_STRING pPath,
|
|
IN PVOID pMatchingData,
|
|
IN PVOID *pReturnedData);
|
|
|
|
|
|
NTSTATUS DfsRemoveFromPrefixTableLockedEx(
|
|
IN struct _DFS_PREFIX_TABLE * pTable,
|
|
IN PUNICODE_STRING pPath,
|
|
IN PVOID pMatchingData,
|
|
IN PVOID *pReturnedData);
|
|
|
|
|
|
#ifdef WPP_CB_TYPE
|
|
// only define this if we are doing tracing
|
|
VOID
|
|
PrefixSetTraceControl(WPP_CB_TYPE *Control);
|
|
|
|
#endif
|
|
|
|
#define DfsReferencePrefixTable(_pTable) \
|
|
DfsIncrementReference((PDFS_OBJECT_HEADER)(_pTable))
|
|
|
|
NTSTATUS
|
|
DfsDereferencePrefixTable(struct _DFS_PREFIX_TABLE *pTable );
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif // __PREFIX_HXX__
|