Source code of Windows XP (NT5)
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.
 
 
 
 
 
 

179 lines
2.9 KiB

//+-------------------------------------------------------------------------
//
// Copyright (C) 1997, Microsoft Corporation.
//
// File: ipsup.h
//
// Contents: Declarations for DFS_IP_INFO entries
//
// History: 15 Dec 1997 Jharper Created
//
//--------------------------------------------------------------------------
#ifndef __IPSUP_H_
#define __IPSUP_H_
//
// For machine names we associate a list of sites
//
typedef struct _DFS_IP_INFO {
//
// Type and size of this record (must be DFS_NTC_IP_INFO)
//
NODE_TYPE_CODE NodeTypeCode;
NODE_BYTE_SIZE NodeByteSize;
//
// A list entry for the hash table chain.
//
LIST_ENTRY HashChain;
//
// A list entry for the LRU chain
//
LIST_ENTRY LRUChain;
//
// Count (for multi-threading)
// Uses InterlockedIncrement()/InterlockedDecrement
//
ULONG UseCount;
//
// Flags
//
ULONG Flags;
//
// The time this entry becomes invalid
//
LARGE_INTEGER Timeout;
//
// Ip address
//
DFS_IPADDRESS IpAddress;
//
// The site associated with this IP address
//
UNICODE_STRING SiteName;
} DFS_IP_INFO, *PDFS_IP_INFO;
#define IP_INFO_DELETE_PENDING 0x00000001 // DFS_IP_INFO should be freed
//
//
// Declaration of the hash table. The hash table can be variably
// sized, with the hash table size being a parameter of the hash
// function.
//
typedef struct _IP_HASH_TABLE {
//
// The type and size of this record (must be DFS_NTC_IP_HASH)
//
NODE_TYPE_CODE NodeTypeCode;
NODE_BYTE_SIZE NodeByteSize;
//
// Mask value for the hash function. The hash table size is
// assumed to be a power of two; the mask is the size - 1.
//
ULONG HashMask;
//
// A mutex to protect access to the hash bucket lists and LRU list
//
FAST_MUTEX HashListMutex;
//
// The LRU list
//
LIST_ENTRY LRUChain;
//
// Max number of DFS_IP_INFO entries allowed
//
ULONG MaxEntries;
//
// Number of DFS_IP_INFO entries
//
ULONG EntryCount;
//
// Timeout
//
LARGE_INTEGER Timeout;
//
// An array of list heads for the hash table chains. There
// are actually N of these where N is the hash table size.
//
LIST_ENTRY HashBuckets[1];
} IP_HASH_TABLE, *PIP_HASH_TABLE;
NTSTATUS
DfsInitIp(
ULONG cHash,
ULONG cEntries
);
VOID
DfsUninitIp(
VOID
);
VOID
DfsReleaseIpInfo(
PDFS_IP_INFO pIpInfo
);
NTSTATUS
DfsFsctrlCreateIpInfo(
PIRP Irp,
PVOID InputBuffer,
ULONG InputBufferLength
);
NTSTATUS
DfsFsctrlDeleteIpInfo(
PIRP Irp,
PVOID InputBuffer,
ULONG InputBufferLength
);
PDFS_IP_INFO
DfsLookupSiteByIpaddress(
IN PDFS_IPADDRESS pDfsIpAddress,
IN BOOLEAN UseForce
);
VOID
DfsReleaseIpInfo(
IN PDFS_IP_INFO pIpInfo
);
#endif // __IPSUP_H_