18 #define WsNcLock() EnterCriticalSection(&Catalog->Lock) 19 #define WsNcUnlock() LeaveCriticalSection(&Catalog->Lock) 43 HKEY CatalogKey, NewKey;
56 "Current_NameSpace_Catalog",
63 static const CHAR DefaultCatalogName[] =
"NameSpace_Catalog5";
64 RegSize =
sizeof(DefaultCatalogName);
66 memcpy(CatalogKeyName, DefaultCatalogName, RegSize);
78 DPRINT1(
"Namespace catalog name is not a string (Type %d).\n", RegType);
86 "Current_NameSpace_Catalog",
122 RegSize =
sizeof(
DWORD);
132 "Num_Catalog_Entries",
181 RegSize =
sizeof(UniqueId);
205 Catalog->CatalogKey = CatalogKey;
238 DWORD CatalogEntries;
271 if (UniqueId == Catalog->UniqueId)
293 "Num_Catalog_Entries",
306 for (
i = 1;
i <= CatalogEntries;
i++)
343 Catalog->UniqueId = UniqueId;
357 }
while (NewChangesMade);
383 Entry = Catalog->CatalogList.Flink;
384 while (GoOn && (
Entry != &Catalog->CatalogList))
410 if (!CatalogEntry->Provider)
417 CatalogEntry->DllPath,
418 &CatalogEntry->ProviderId);
476 while (
Entry != &TempList)
488 CatalogEntry = OldCatalogEntry;
492 Catalog->ItemCount--;
499 Catalog->ItemCount++;
510 Catalog->ItemCount--;
529 NextEntry = Catalog->CatalogList.
Flink;
530 while (NextEntry != &Catalog->CatalogList)
534 NextEntry = NextEntry->
Flink;
540 if (!
Entry->Provider)
544 if (
Entry->Provider )
547 *CatalogEntry =
Entry;
565 DWORD ProtocolCount = QuerySet->dwNumberOfProtocols;
592 while (ProtocolCount--)
619 Catalog->ItemCount--;
630 if (!Catalog->CatalogList.Flink)
return;
636 Entry = Catalog->CatalogList.Flink;
637 while (
Entry != &Catalog->CatalogList)
647 Entry = Catalog->CatalogList.Flink;
651 if (Catalog->CatalogKey)
655 Catalog->CatalogKey =
NULL;
IN PCO_ADDRESS_FAMILY AddressFamily
VOID WSAAPI WsNcDelete(IN PNSCATALOG Catalog)
_In_ NDIS_ERROR_CODE ErrorCode
INT WSAAPI WsNcGetCatalogFromProviderId(IN PNSCATALOG Catalog, IN LPGUID ProviderId, OUT PNSCATALOG_ENTRY *CatalogEntry)
PNSCATALOG WSAAPI WsNcAllocate(VOID)
VOID WSAAPI WsNcEntryDereference(IN PNSCATALOG_ENTRY CatalogEntry)
FORCEINLINE VOID InsertHeadList(_Inout_ PLIST_ENTRY ListHead, _Inout_ __drv_aliasesMem PLIST_ENTRY Entry)
INT WSAAPI WsNcGetServiceClassInfo(IN PNSCATALOG Catalog, IN OUT LPDWORD BugSize, IN OUT LPWSASERVICECLASSINFOW lpServiceClassInfo)
DWORD WSAAPI WsNpInitialize(IN PNS_PROVIDER Provider, IN LPWSTR DllPath, IN LPGUID ProviderGuid)
INT WSAAPI WsNcEntryInitializeFromRegistry(IN PNSCATALOG_ENTRY CatalogEntry, IN HKEY ParentKey, IN ULONG UniqueId)
#define REG_OPENED_EXISTING_KEY
#define InsertTailList(ListHead, Entry)
_Must_inspect_result_ FORCEINLINE BOOLEAN IsListEmpty(_In_ const LIST_ENTRY *ListHead)
BOOL WSAAPI WsNcMatchProtocols(IN DWORD NameSpace, IN LONG AddressFamily, IN LPWSAQUERYSETW QuerySet)
VOID WSAAPI WsNcEnumerateCatalogItems(IN PNSCATALOG Catalog, IN PNSCATALOG_ENUMERATE_PROC Callback, IN PVOID Context)
FORCEINLINE BOOLEAN RemoveEntryList(_In_ PLIST_ENTRY Entry)
VOID WSAAPI WsNpDereference(IN PNS_PROVIDER Provider)
INT WSAAPI WsSetupCatalogProtection(IN HKEY CatalogKey, IN HANDLE CatalogEvent, OUT LPDWORD UniqueId)
VOID WINAPI InitializeCriticalSection(OUT LPCRITICAL_SECTION lpCriticalSection)
FORCEINLINE PLIST_ENTRY RemoveHeadList(_Inout_ PLIST_ENTRY ListHead)
#define REG_CREATED_NEW_KEY
#define ERROR_FILE_NOT_FOUND
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
#define REG_OPTION_NON_VOLATILE
struct _LIST_ENTRY * Flink
_Must_inspect_result_ _In_opt_ WDFKEY _In_ PCUNICODE_STRING _In_ ACCESS_MASK _In_ ULONG _Out_opt_ PULONG CreateDisposition
BOOLEAN WSAAPI WsNcOpen(IN PNSCATALOG Catalog, IN HKEY ParentKey)
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
void WINAPI DeleteCriticalSection(PCRITICAL_SECTION)
VOID WSAAPI WsNcUpdateNamespaceList(IN PNSCATALOG Catalog, IN PLIST_ENTRY List)
#define WSA_NOT_ENOUGH_MEMORY
BOOL WSAAPI WsCheckCatalogState(IN HANDLE Event)
_Must_inspect_result_ _In_ WDFCMRESLIST List
#define memcpy(s1, s2, n)
VOID WSAAPI WsNcEntrySetProvider(IN PNSCATALOG_ENTRY Entry, IN PNS_PROVIDER Provider)
_In_ WDFINTERRUPT _In_ PFN_WDF_INTERRUPT_SYNCHRONIZE Callback
#define WSASYSCALLFAILURE
VOID WSAAPI WsNcRemoveCatalogItem(IN PNSCATALOG Catalog, IN PNSCATALOG_ENTRY Entry)
INT WSAAPI WsNcInitializeFromRegistry(IN PNSCATALOG Catalog, IN HKEY ParentKey, IN HANDLE CatalogEvent)
_Must_inspect_result_ _In_opt_ WDFKEY ParentKey
#define InterlockedIncrement
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
PNS_PROVIDER WSAAPI WsNpAllocate(VOID)
#define InitializeListHead(ListHead)
PNSCATALOG_ENTRY WSAAPI WsNcEntryAllocate(VOID)
BOOL WINAPI IsEqualGUID(REFGUID rguid1, REFGUID rguid2)
INT WSAAPI WsNcRefreshFromRegistry(IN PNSCATALOG Catalog, IN HANDLE CatalogEvent)
INT WSAAPI WsNcLoadProvider(IN PNSCATALOG Catalog, IN PNSCATALOG_ENTRY CatalogEntry)
BOOL(WINAPI * PNSCATALOG_ENUMERATE_PROC)(IN PVOID Context, IN PNSCATALOG_ENTRY Entry)
#define HeapFree(x, y, z)
#define RegCloseKey(hKey)
base of all file and directory entries