Home | Info | Community | Development | myReactOS | Contact Us
Definition at line 814 of file dllmain.c.
{ PWINSOCK_THREAD_BLOCK p; WS_DbgPrint(MAX_TRACE, ("DllMain of ws2_32.dll.\n")); switch (dwReason) { case DLL_PROCESS_ATTACH: { GlobalHeap = GetProcessHeap(); g_hInstDll = hInstDll; CreateCatalog(); InitProviderHandleTable(); UpcallTable.lpWPUCloseEvent = WPUCloseEvent; UpcallTable.lpWPUCloseSocketHandle = WPUCloseSocketHandle; UpcallTable.lpWPUCreateEvent = WPUCreateEvent; UpcallTable.lpWPUCreateSocketHandle = WPUCreateSocketHandle; UpcallTable.lpWPUFDIsSet = WPUFDIsSet; UpcallTable.lpWPUGetProviderPath = WPUGetProviderPath; UpcallTable.lpWPUModifyIFSHandle = WPUModifyIFSHandle; UpcallTable.lpWPUPostMessage = PostMessageW; UpcallTable.lpWPUQueryBlockingCallback = WPUQueryBlockingCallback; UpcallTable.lpWPUQuerySocketHandleContext = WPUQuerySocketHandleContext; UpcallTable.lpWPUQueueApc = WPUQueueApc; UpcallTable.lpWPUResetEvent = WPUResetEvent; UpcallTable.lpWPUSetEvent = WPUSetEvent; UpcallTable.lpWPUOpenCurrentThread = WPUOpenCurrentThread; UpcallTable.lpWPUCloseThread = WPUCloseThread; /* Fall through to thread attachment handler */ } case DLL_THREAD_ATTACH: { p = HeapAlloc(GlobalHeap, 0, sizeof(WINSOCK_THREAD_BLOCK)); WS_DbgPrint(MAX_TRACE, ("Thread block at 0x%X.\n", p)); if (!p) { return FALSE; } p->Hostent = NULL; p->LastErrorValue = NO_ERROR; p->Getservbyname = NULL; p->Getservbyport = NULL; NtCurrentTeb()->WinSockData = p; } break; case DLL_PROCESS_DETACH: { DestroyCatalog(); FreeProviderHandleTable(); } break; case DLL_THREAD_DETACH: { p = NtCurrentTeb()->WinSockData; if (p) HeapFree(GlobalHeap, 0, p); } break; } WS_DbgPrint(MAX_TRACE, ("DllMain of ws2_32.dll. Leaving.\n")); return TRUE; }