305 PWSTR FullHelperDllName;
315 if (HelperData ==
NULL) {
316 ERR(
"Buffer allocation failed\n");
324 if (HelperKey ==
NULL) {
325 ERR(
"Buffer allocation failed\n");
331 wcscpy(HelperKey,
L"System\\CurrentControlSet\\Services\\");
332 wcscat(HelperKey, TransportName);
333 wcscat(HelperKey,
L"\\Parameters\\Winsock");
342 ERR(
"Error reading helper DLL parameters\n");
351 L"MinSockaddrLength",
359 L"MaxSockaddrLength",
373 L"UseDelayedAcceptance",
383 if (HelperDllName ==
NULL) {
384 ERR(
"Buffer allocation failed\n");
392 if (FullHelperDllName ==
NULL) {
393 ERR(
"Buffer allocation failed\n");
410 ERR(
"Error reading helper DLL parameters\n");
429 ERR(
"Error loading helper DLL\n");
451 "WSHGetSocketInformation");
454 "WSHSetSocketInformation");
457 "WSHGetSockaddrType");
460 "WSHGetWildcardSockaddr");
463 "WSHGetBroadcastSockaddr");
466 "WSHAddressToString");
469 "WSHStringToAddress");
485 *HelperDllData = HelperData;
PWSH_GET_WILDCARD_SOCKADDR WSHGetWildcardSockaddr
INT(WINAPI * PWSH_ADDRESS_TO_STRING)(LPSOCKADDR, INT, LPWSAPROTOCOL_INFOW, LPWSTR, LPDWORD)
INT(WINAPI * PWSH_STRING_TO_ADDRESS)(LPWSTR, DWORD, LPWSAPROTOCOL_INFOW, LPSOCKADDR, LPDWORD)
PWSH_GET_BROADCAST_SOCKADDR WSHGetBroadcastSockaddr
_Must_inspect_result_ _Out_ PNDIS_STATUS _In_ NDIS_HANDLE _In_ ULONG _Out_ PNDIS_STRING _Out_ PNDIS_HANDLE KeyHandle
PWSH_JOIN_LEAF WSHJoinLeaf
FORCEINLINE VOID InsertHeadList(_Inout_ PLIST_ENTRY ListHead, _Inout_ __drv_aliasesMem PLIST_ENTRY Entry)
static PVOID Mapping[EMS_PHYSICAL_PAGES]
INT(WINAPI * PWSH_IOCTL)(PVOID, SOCKET, HANDLE, HANDLE, DWORD, LPVOID, DWORD, LPVOID, DWORD, LPDWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE, LPBOOL)
INT(WINAPI * PWSH_OPEN_SOCKET)(PINT, PINT, PINT, PUNICODE_STRING, PVOID, PDWORD)
INT(WINAPI * PWSH_GET_SOCKET_INFORMATION)(PVOID, SOCKET, HANDLE, HANDLE, INT, INT, PCHAR, LPINT)
INT(WINAPI * PWSH_GET_BROADCAST_SOCKADDR)(PVOID, PSOCKADDR, PINT)
LONG WINAPI RegCloseKey(HKEY hKey)
PWSH_STRING_TO_ADDRESS WSHStringToAddress
PWSH_GET_SOCKADDR_TYPE WSHGetSockaddrType
BOOLEAN UseDelayedAcceptance
PWSH_OPEN_SOCKET WSHOpenSocket
PWSH_OPEN_SOCKET2 WSHOpenSocket2
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
PWSH_ADDRESS_TO_STRING WSHAddressToString
LIST_ENTRY SockHelpersListHead
_CRTIMP wchar_t *__cdecl wcscpy(_Out_writes_z_(_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
PWSH_GET_SOCKET_INFORMATION WSHGetSocketInformation
INT(WINAPI * PWSH_OPEN_SOCKET2)(PINT, PINT, PINT, GROUP, DWORD, PUNICODE_STRING, PVOID *, PDWORD)
PWSH_SET_SOCKET_INFORMATION WSHSetSocketInformation
_CRTIMP wchar_t *__cdecl wcscat(_Inout_updates_z_(_String_length_(_Dest)+_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
DWORD WINAPI ExpandEnvironmentStringsW(IN LPCWSTR lpSrc, IN LPWSTR lpDst, IN DWORD nSize)
INT(WINAPI * PWSH_JOIN_LEAF)(PVOID, SOCKET, HANDLE, HANDLE, PVOID, SOCKET, PSOCKADDR, DWORD, LPWSABUF, LPWSABUF, LPQOS, LPQOS, DWORD)
INT(WINAPI * PWSH_GET_SOCKADDR_TYPE)(PSOCKADDR, DWORD, PSOCKADDR_INFO)
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
#define GetProcAddress(x, y)
size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
#define HeapFree(x, y, z)
_In_ NDIS_STATUS _In_ ULONG _In_ USHORT _In_opt_ PVOID _In_ ULONG DataSize
INT(WINAPI * PWSH_NOTIFY)(PVOID, SOCKET, HANDLE, HANDLE, DWORD)
INT(WINAPI * PWSH_SET_SOCKET_INFORMATION)(PVOID, SOCKET, HANDLE, HANDLE, INT, INT, PCHAR, INT)
INT(WINAPI * PWSH_GET_WILDCARD_SOCKADDR)(PVOID, PSOCKADDR, PINT)
#define HKEY_LOCAL_MACHINE