39 WideLen *
sizeof(
WCHAR));
40 if (WideString ==
NULL)
100 WCHAR szReverseName[32];
105 ARecord.
pName = pszHostName;
110 ARecord.
dwTtl = 86400;
116 L"%u.%u.%u.%u.in-addr.arpa.",
124 PtrRecord.
pName = szReverseName;
129 PtrRecord.
dwTtl = 86400;
145 WCHAR szReverseName[80];
151 AAAARecord.
pName = pszHostName;
156 AAAARecord.
dwTtl = 86400;
163 ZeroMemory(szReverseName,
sizeof(szReverseName));
170 szReverseName[
j + 1] =
L'.';
172 szReverseName[
j + 3] =
L'.';
174 wcscat(szReverseName,
L"ip6.arpa.");
178 PtrRecord.
pName = szReverseName;
183 PtrRecord.
dwTtl = 86400;
205 if (ExpandedPath ==
NULL)
210 L"System\\CurrentControlSet\\Services\\Tcpip\\Parameters",
261 if (ExpandedPath[StringLength - 1] !=
L'\\')
272 if (ExpandedPath[StringLength - 1] !=
L'\\')
282 pHostsFile =
_wfopen(ExpandedPath,
L"r");
293 CHAR szLineBuffer[512];
295 CHAR *
Ptr, *NameStart, *NameEnd, *AddressStart, *AddressEnd;
301 if (pHostFile ==
NULL)
307 if (
fgets(szLineBuffer,
sizeof(szLineBuffer), pHostFile) ==
NULL)
310 NameStart = NameEnd =
NULL;
311 AddressStart = AddressEnd =
NULL;
317 if (*
Ptr == 0 || *
Ptr ==
'#')
333 if (*
Ptr == 0 || *
Ptr ==
'#')
349 if (*
Ptr == 0 || *
Ptr ==
'#')
365 if (*
Ptr == 0 || *
Ptr ==
'#')
377 if (AddressStart ==
NULL || AddressEnd ==
NULL ||
378 NameStart ==
NULL || NameEnd ==
NULL)
384 DPRINT(
"%s ==> %s\n", NameStart, AddressStart);
388 DPRINT(
"IPv4: %s\n", AddressStart);
391 if (pszHostName !=
NULL)
399 DPRINT(
"IPv6: %s\n", AddressStart);
402 if (pszHostName !=
NULL)
NTSYSAPI NTSTATUS NTAPI RtlIpv4StringToAddressA(_In_ PCSTR String, _In_ BOOLEAN Strict, _Out_ PCSTR *Terminator, _Out_ struct in_addr *Addr)
_Check_return_ _CRTIMP FILE *__cdecl _wfopen(_In_z_ const wchar_t *_Filename, _In_z_ const wchar_t *_Mode)
_Must_inspect_result_ _In_ PFSRTL_PER_STREAM_CONTEXT Ptr
static BOOL ParseIpv6Address(_In_ LPCSTR AddressString, _Out_ PIN6_ADDR pAddress)
struct in_addr::@999::@1000 S_un_b
union _DnsRecordW::@3252 Data
STRSAFEAPI StringCchCatW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc)
static FILE * OpenHostsFile(VOID)
static BOOL ParseIpv4Address(_In_ PCSTR AddressString, _Out_ PIN_ADDR pAddress)
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 GLint GLint j
static VOID AddIpv4HostEntries(PWSTR pszHostName, PIN_ADDR pAddress)
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)
#define NT_SUCCESS(StatCode)
union _DnsRecordW::@3251 Flags
_Check_return_opt_ _CRTIMP int __cdecl fclose(_Inout_ FILE *_File)
int _cdecl swprintf(const WCHAR *,...)
_Check_return_opt_ _CRTIMP char *__cdecl fgets(_Out_writes_z_(_MaxCount) char *_Buf, _In_ int _MaxCount, _Inout_ FILE *_File)
static VOID AddIpv6HostEntries(PWSTR pszHostName, PIN6_ADDR pAddress)
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
static PWSTR AnsiToUnicode(PSTR NarrowString)
UINT WINAPI GetSystemDirectoryW(OUT LPWSTR lpBuffer, IN UINT uSize)
_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)
STRSAFEAPI StringCchLengthW(STRSAFE_LPCWSTR psz, size_t cchMax, size_t *pcchLength)
#define MultiByteToWideChar
DNS_IP6_ADDRESS Ip6Address
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
VOID DnsIntCacheAddEntry(_In_ PDNS_RECORDW Record, _In_ BOOL bHostsFileEntry)
NTSYSAPI NTSTATUS NTAPI RtlIpv6StringToAddressA(_In_ PCSTR String, _Out_ PCSTR *Terminator, _Out_ struct in6_addr *Addr)
#define HeapFree(x, y, z)
#define RegCloseKey(hKey)
#define HKEY_LOCAL_MACHINE