[packages/crossmingw32-w32api] - added winapi-update patch (add some Vista+ APIs, some of them required to build glib>=2.58) - rele

qboosh qboosh at pld-linux.org
Wed Sep 26 18:15:48 CEST 2018


commit 85d1e55999166551a14016b812c665fdf1281751
Author: Jakub Bogusz <qboosh at pld-linux.org>
Date:   Wed Sep 26 18:18:59 2018 +0200

    - added winapi-update patch (add some Vista+ APIs, some of them required to build glib>=2.58)
    - release 2

 crossmingw32-w32api-winapi-update.patch | 6667 +++++++++++++++++++++++++++++++
 crossmingw32-w32api.spec                |    9 +-
 2 files changed, 6675 insertions(+), 1 deletion(-)
---
diff --git a/crossmingw32-w32api.spec b/crossmingw32-w32api.spec
index c74a2a2..717b089 100644
--- a/crossmingw32-w32api.spec
+++ b/crossmingw32-w32api.spec
@@ -6,7 +6,7 @@ Version:	5.0.2
 %define	apisrc	w32api-%{apiver}-mingw32
 %define runver	5.0.2
 %define	runsrc	mingwrt-%{runver}-mingw32
-Release:	1
+Release:	2
 Epoch:		1
 License:	Free (Public Domain, SGI Free Software License B, BSD)
 Group:		Development/Libraries
@@ -23,6 +23,7 @@ Source3:	https://www.khronos.org/registry/OpenGL/api/GL/wgl.h
 Source4:	https://www.khronos.org/registry/OpenGL/api/GL/wglext.h
 # Source4-md5:	6ab4da87f8e08c7a6f75fd846379eef8
 Patch0:		%{name}-mmsystem.patch
+Patch1:		%{name}-winapi-update.patch
 URL:		http://www.mingw.org/
 BuildRequires:	autoconf >= 2.64
 BuildRequires:	automake
@@ -88,6 +89,7 @@ ln -snf w32api-%{apiver} w32api
 ln -snf mingwrt-%{runver} mingwrt
 cd w32api
 %patch0 -p1
+%patch1 -p1
 
 %build
 cd w32api
@@ -283,6 +285,7 @@ rm -rf $RPM_BUILD_ROOT
 %{_includedir}/httpext.h
 %{_includedir}/icm.h
 %{_includedir}/idispids.h
+%{_includedir}/ifdef.h
 %{_includedir}/il21dec.h
 %{_includedir}/imagehlp.h
 %{_includedir}/imm.h
@@ -341,7 +344,11 @@ rm -rf $RPM_BUILD_ROOT
 %{_includedir}/mswsock.h
 %{_includedir}/nb30.h
 %{_includedir}/nddeapi.h
+%{_includedir}/ndkinfo.h
+%{_includedir}/netioapi.h
+%{_includedir}/nldef.h
 %{_includedir}/nspapi.h
+%{_includedir}/ntddndis.h
 %{_includedir}/ntdef.h
 %{_includedir}/ntdll.h
 %{_includedir}/ntdsapi.h
diff --git a/crossmingw32-w32api-winapi-update.patch b/crossmingw32-w32api-winapi-update.patch
new file mode 100644
index 0000000..f9df094
--- /dev/null
+++ b/crossmingw32-w32api-winapi-update.patch
@@ -0,0 +1,6667 @@
+--- w32api-5.0.2/include/winbase.h.orig	2017-11-09 02:35:48.000000000 +0100
++++ w32api-5.0.2/include/winbase.h	2018-09-16 12:54:28.225409121 +0200
+@@ -270,6 +270,7 @@
+ #define FILE_FLAG_DELETE_ON_CLOSE				67108864
+ #define FILE_FLAG_BACKUP_SEMANTICS				33554432
+ #define FILE_FLAG_POSIX_SEMANTICS				16777216
++#define FILE_FLAG_SESSION_AWARE					0x800000
+ #define FILE_FLAG_OPEN_REPARSE_POINT				 2097152
+ #define FILE_FLAG_OPEN_NO_RECALL				 1048576
+ 
+@@ -453,6 +453,10 @@
+ #define DONT_RESOLVE_DLL_REFERENCES				       1
+ #define LOAD_LIBRARY_AS_DATAFILE				       2
+ #define LOAD_WITH_ALTERED_SEARCH_PATH				       8
++#define LOAD_IGNORE_CODE_AUTHZ_LEVEL				    0x10
++#define LOAD_LIBRARY_AS_IMAGE_RESOURCE				    0x20
++#define LOAD_LIBRARY_AS_DATAFILE_EXCLUSIVE			    0x40
++#define LOAD_LIBRARY_REQUIRE_SIGNED_TARGET			    0x80
+ 
+ #define LMEM_FIXED						       0
+ #define LMEM_MOVEABLE						       2
+@@ -486,6 +487,8 @@
+ #define MOVEFILE_COPY_ALLOWED					       2
+ #define MOVEFILE_DELAY_UNTIL_REBOOT				       4
+ #define MOVEFILE_WRITE_THROUGH					       8
++#define MOVEFILE_CREATE_HARDLINK				    0x10
++#define MOVEFILE_FAIL_IF_NOT_TRACKABLE				    0x20
+ 
+ #define MAXIMUM_WAIT_OBJECTS					      64
+ #define MAXIMUM_SUSPEND_COUNT					    0x7F
+@@ -598,11 +601,13 @@
+ #define BACKUP_OBJECT_ID					       7
+ #define BACKUP_REPARSE_DATA					       8
+ #define BACKUP_SPARSE_BLOCK					       9
++#define BACKUP_TXFS_DATA					      10
+ 
+ #define STREAM_NORMAL_ATTRIBUTE 				       0
+ #define STREAM_MODIFIED_WHEN_READ				       1
+ #define STREAM_CONTAINS_SECURITY				       2
+ #define STREAM_CONTAINS_PROPERTIES				       4
++#define STREAM_SPARSE_ATTRIBUTE					       8
+ 
+ #define STARTF_USESHOWWINDOW					       1
+ #define STARTF_USESIZE						       2
+@@ -614,6 +619,9 @@
+ #define STARTF_FORCEOFFFEEDBACK 				     128
+ #define STARTF_USESTDHANDLES					     256
+ #define STARTF_USEHOTKEY					     512
++#define STARTF_TITLEISLINKNAME					0x000800
++#define STARTF_TITLEISAPPID					0x001000
++#define STARTF_PREVENTPINNING					0x002000
+ 
+ #define TC_NORMAL						       0
+ #define TC_HARDERR						       1
+@@ -637,6 +645,8 @@
+ #define DDD_RAW_TARGET_PATH					       1
+ #define DDD_REMOVE_DEFINITION					       2
+ #define DDD_EXACT_MATCH_ON_REMOVE				       4
++#define DDD_NO_BROADCAST_SYSTEM					       8
++#define DDD_LUID_BROADCAST_DRIVE				    0x10
+ 
+ #define HINSTANCE_ERROR 					      32
+ 
+@@ -698,6 +708,8 @@
+ #define REPLACEFILE_WRITE_THROUGH			      0x00000001
+ #define REPLACEFILE_IGNORE_MERGE_ERRORS 		      0x00000002
+ 
++#define EVENTLOG_FULL_INFO					       0
++
+ #if (_WIN32_WINNT > 0x0501)
+ /* FIXME: Once again, what does this mean?  Should use >= comparator, for
+  * clarity.  0x0501 is WinXP, but does > WinXP mean Server-2003 (0x0502)?
+@@ -723,6 +735,7 @@
+ #define QUERY_ACTCTX_FLAG_USE_ACTIVE_ACTCTX		      0x00000004
+ #define QUERY_ACTCTX_FLAG_ACTCTX_IS_HMODULE		      0x00000008
+ #define QUERY_ACTCTX_FLAG_ACTCTX_IS_ADDRESS		      0x00000010
++#define QUERY_ACTCTX_FLAG_NO_ADDREF			      0x80000000
+ 
+ #if _WIN32_WINNT >= _WIN32_WINNT_VISTA
+ /* Constants associated with features supported only on Vista and later.
+@@ -742,12 +755,85 @@
+ #define VOLUME_NAME_NONE					     0x4
+ #define VOLUME_NAME_NT						     0x2
+ 
++#define FILE_SKIP_COMPLETION_PORT_ON_SUCCESS			     0x1
++#define FILE_SKIP_SET_EVENT_ON_HANDLE				     0x2
++
++#define PROCESS_NAME_NATIVE					     0x1
++
++#define PROC_THREAD_ATTRIBUTE_NUMBER				0x00ffff
++#define PROC_THREAD_ATTRIBUTE_THREAD				0x010000
++#define PROC_THREAD_ATTRIBUTE_INPUT				0x020000
++#define PROC_THREAD_ATTRIBUTE_ADDITIVE				0x040000
++
++#define ATOM_FLAG_GLOBAL					     0x2
++
++#define LOGON32_PROVIDER_VIRTUAL				       4
++
++#define RESTART_MAX_CMD_LINE					    1024
++
++#define RESTART_NO_CRASH					       1
++#define RESTART_NO_HANG						       2
++#define RESTART_NO_PATCH					       4
++#define RESTART_NO_REBOOT					       8
++
++#define RECOVERY_DEFAULT_PING_INTERVAL	5000
++#define RECOVERY_MAX_PING_INTERVAL	(5 *60 *1000)
++
+ #if _WIN32_WINNT >= _WIN32_WINNT_WIN7
+ /* Constants associated with features supported only on Win7 and later.
+  */
+ #define PROCESS_DEP_ENABLE					       1
+ #define PROCESS_DEP_DISABLE_ATL_THUNK_EMULATION 		       2
+ 
++#define BASE_SEARCH_PATH_ENABLE_SAFE_SEARCHMODE			     0x1
++#define BASE_SEARCH_PATH_PERMANENT				  0x8000
++#define BASE_SEARCH_PATH_DISABLE_SAFE_SEARCHMODE		 0x10000
++#define BASE_SEARCH_PATH_INVALID_FLAGS				~0x18001
++
++#define REMOTE_PROTOCOL_INFO_FLAG_LOOPBACK		      0x00000001
++#define REMOTE_PROTOCOL_INFO_FLAG_OFFLINE		      0x00000002
++
++#if _WIN32_WINNT >= _WIN32_WINNT_WIN8
++
++#define FILE_FLAG_OPEN_REQUIRING_OPLOCK				 0x40000
++
++#define COPY_FILE_REQUEST_SECURITY_PRIVILEGES			  0x2000
++#define COPY_FILE_RESUME_FROM_PAUSE				  0x4000
++#define COPY_FILE_NO_OFFLOAD					 0x40000
++
++#define MEMORY_PRIORITY_LOWEST		0
++#define MEMORY_PRIORITY_VERY_LOW	1
++#define MEMORY_PRIORITY_LOW		2
++#define MEMORY_PRIORITY_MEDIUM		3
++#define MEMORY_PRIORITY_BELOW_NORMAL	4
++#define MEMORY_PRIORITY_NORMAL		5
++
++#define OPERATION_API_VERSION			1
++#define OPERATION_START_TRACE_CURRENT_THREAD	1
++#define OPERATION_END_DISCARD			1
++
++#define MEHC_PATROL_SCRUBBER_PRESENT 0x1
++
++#define STORAGE_INFO_FLAGS_ALIGNED_DEVICE		0x00000001
++#define STORAGE_INFO_FLAGS_PARTITION_ALIGNED_ON_DEVICE	0x00000002
++#define STORAGE_INFO_OFFSET_UNKNOWN			0xffffffff
++
++#define REMOTE_PROTOCOL_INFO_FLAG_PERSISTENT_HANDLE	0x00000004
++
++#define RPI_FLAG_SMB2_SHARECAP_TIMEWARP			0x00000002
++#define RPI_FLAG_SMB2_SHARECAP_DFS			0x00000008
++#define RPI_FLAG_SMB2_SHARECAP_CONTINUOUS_AVAILABILITY	0x00000010
++#define RPI_FLAG_SMB2_SHARECAP_SCALEOUT			0x00000020
++#define RPI_FLAG_SMB2_SHARECAP_CLUSTER			0x00000040
++
++#define RPI_SMB2_FLAG_SERVERCAP_DFS			0x00000001
++#define RPI_SMB2_FLAG_SERVERCAP_LEASING			0x00000002
++#define RPI_SMB2_FLAG_SERVERCAP_LARGEMTU		0x00000004
++#define RPI_SMB2_FLAG_SERVERCAP_MULTICHANNEL		0x00000008
++#define RPI_SMB2_FLAG_SERVERCAP_PERSISTENT_HANDLES	0x00000010
++#define RPI_SMB2_FLAG_SERVERCAP_DIRECTORY_LEASING	0x00000020
++
++#endif	/* Win8 and later */
+ #endif	/* Win7 and later */
+ #endif	/* WinVista and later */
+ #endif	/* WinXP and later */
+@@ -1346,6 +1432,7 @@
+ WINBASEAPI BOOL WINAPI CallNamedPipeW
+ (LPCWSTR, PVOID, DWORD, PVOID, DWORD, PDWORD, DWORD);
+ 
++WINBASEAPI BOOL WINAPI RequestDeviceWakeup (HANDLE hDevice);
+ WINBASEAPI BOOL WINAPI CancelDeviceWakeupRequest (HANDLE);
+ WINBASEAPI BOOL WINAPI CancelIo (HANDLE);
+ WINBASEAPI BOOL WINAPI CancelWaitableTimer (HANDLE);
+@@ -1691,6 +1778,8 @@
+ 
+ WINBASEAPI BOOL WINAPI GetDevicePowerState (HANDLE, BOOL *);
+ 
++WINBASEAPI BOOL WINAPI SetMessageWaitingIndicator (HANDLE hMsgIndicator, ULONG ulMsgCount);
++
+ #define GetDiskFreeSpace __AW_SUFFIXED__(GetDiskFreeSpace)
+ WINBASEAPI BOOL WINAPI GetDiskFreeSpaceA
+ (LPCSTR, PDWORD, PDWORD, PDWORD, PDWORD);
+@@ -2034,6 +2123,7 @@
+ WINBASEAPI BOOL WINAPI IsBadWritePtr (PVOID, UINT);
+ WINBASEAPI BOOL WINAPI IsDebuggerPresent (void);
+ WINBASEAPI BOOL WINAPI IsProcessorFeaturePresent (DWORD);
++WINBASEAPI BOOL WINAPI RequestWakeupLatency (LATENCY_TIME latency);
+ WINBASEAPI BOOL WINAPI IsSystemResumeAutomatic (void);
+ WINBASEAPI BOOL WINAPI IsTextUnicode (PCVOID, int, LPINT);
+ WINBASEAPI BOOL WINAPI IsValidAcl (PACL);
+@@ -2516,6 +2606,8 @@
+ WINBASEAPI BOOL WINAPI ConvertFiberToThread (void);
+ WINBASEAPI LPVOID WINAPI CreateFiberEx
+ (SIZE_T, SIZE_T, DWORD, LPFIBER_START_ROUTINE, LPVOID);
++#define FIBER_FLAG_FLOAT_SWITCH 0x1
++WINBASEAPI LPVOID WINAPI ConvertThreadToFiberEx(LPVOID lpParameter,DWORD dwFlags);
+ #endif	/* Win9x, but not WinNT until NT4 */
+ 
+ #if _WIN32_WINDOWS >= _WIN32_WINDOWS_98 || _WIN32_WINNT >= _WIN32_WINNT_WIN2K
+@@ -2597,6 +2689,7 @@
+ );
+ #define LOGON_WITH_PROFILE		0x00000001
+ #define LOGON_NETCREDENTIALS_ONLY	0x00000002
++#define LOGON_ZERO_PASSWORD_BUFFER	0x80000000
+ 
+ WINBASEAPI BOOL WINAPI CreateRestrictedToken
+ ( HANDLE, DWORD, DWORD, PSID_AND_ATTRIBUTES, DWORD, PLUID_AND_ATTRIBUTES,
+@@ -2615,6 +2708,10 @@
+ WINBASEAPI BOOL WINAPI DeleteTimerQueueEx (HANDLE, HANDLE);
+ WINBASEAPI BOOL WINAPI DeleteTimerQueueTimer (HANDLE, HANDLE, HANDLE);
+ 
++WINBASEAPI HANDLE WINAPI SetTimerQueueTimer (HANDLE TimerQueue, WAITORTIMERCALLBACK Callback, PVOID Parameter, DWORD DueTime, DWORD Period, BOOL PreferIo);
++WINBASEAPI BOOL WINAPI CancelTimerQueueTimer (HANDLE TimerQueue, HANDLE Timer);
++WINBASEAPI BOOL WINAPI DeleteTimerQueue (HANDLE TimerQueue);
++
+ #define DeleteVolumeMountPoint __AW_SUFFIXED__(DeleteVolumeMountPoint)
+ WINBASEAPI BOOL WINAPI DeleteVolumeMountPointA (LPCSTR);
+ WINBASEAPI BOOL WINAPI DeleteVolumeMountPointW (LPCWSTR);
+@@ -2711,6 +2808,12 @@
+ WINBASEAPI BOOL WINAPI MapUserPhysicalPagesScatter
+ (PVOID *, ULONG_PTR, PULONG_PTR);
+ 
++typedef struct _EVENTLOG_FULL_INFORMATION {
++  DWORD dwFull;
++} EVENTLOG_FULL_INFORMATION,*LPEVENTLOG_FULL_INFORMATION;
++
++WINADVAPI BOOL WINAPI GetEventLogInformation (HANDLE hEventLog, DWORD dwInfoLevel, LPVOID lpBuffer, DWORD cbBufSize, LPDWORD pcbBytesNeeded);
++
+ #if _WIN32_WINNT >= _WIN32_WINNT_WINXP
+ /* New features, implemented for WinXP; not available in Win9x.
+  */
+@@ -2845,6 +2948,29 @@
+ 
+ WINBASEAPI BOOL WINAPI ZombifyActCtx (HANDLE);
+ 
++#define OpenEncryptedFileRaw __AW_SUFFIXED__(OpenEncryptedFileRaw)
++WINADVAPI DWORD WINAPI OpenEncryptedFileRawA (LPCSTR lpFileName, ULONG ulFlags, PVOID *pvContext);
++WINADVAPI DWORD WINAPI OpenEncryptedFileRawW (LPCWSTR lpFileName, ULONG ulFlags, PVOID *pvContext);
++
++typedef DWORD (WINAPI *PFE_EXPORT_FUNC) (PBYTE pbData, PVOID pvCallbackContext, ULONG ulLength);
++typedef DWORD (WINAPI *PFE_IMPORT_FUNC) (PBYTE pbData, PVOID pvCallbackContext, PULONG ulLength);
++WINADVAPI DWORD WINAPI ReadEncryptedFileRaw (PFE_EXPORT_FUNC pfExportCallback, PVOID pvCallbackContext, PVOID pvContext);
++WINADVAPI DWORD WINAPI WriteEncryptedFileRaw (PFE_IMPORT_FUNC pfImportCallback, PVOID pvCallbackContext, PVOID pvContext);
++WINADVAPI VOID WINAPI CloseEncryptedFileRaw (PVOID pvContext);
++
++/* TODO: requires includes for AUDIT_EVENT_TYPE and POBJECT_TYPE_LIST
++WINADVAPI BOOL WINAPI AccessCheckByTypeAndAuditAlarmA (LPCSTR SubsystemName, LPVOID HandleId, LPCSTR ObjectTypeName, LPCSTR ObjectName, PSECURITY_DESCRIPTOR SecurityDescriptor, PSID PrincipalSelfSid, DWORD DesiredAccess, AUDIT_EVENT_TYPE AuditType, DWORD Flags, POBJECT_TYPE_LIST ObjectTypeList, DWORD ObjectTypeListLength, PGENERIC_MAPPING GenericMapping, BOOL ObjectCreation, LPDWORD GrantedAccess, LPBOOL AccessStatus, LPBOOL pfGenerateOnClose);
++WINADVAPI BOOL WINAPI AccessCheckByTypeResultListAndAuditAlarmA (LPCSTR SubsystemName, LPVOID HandleId, LPCSTR ObjectTypeName, LPCSTR ObjectName, PSECURITY_DESCRIPTOR SecurityDescriptor, PSID PrincipalSelfSid, DWORD DesiredAccess, AUDIT_EVENT_TYPE AuditType, DWORD Flags, POBJECT_TYPE_LIST ObjectTypeList, DWORD ObjectTypeListLength, PGENERIC_MAPPING GenericMapping, BOOL ObjectCreation, LPDWORD GrantedAccess, LPDWORD AccessStatusList, LPBOOL pfGenerateOnClose);
++WINADVAPI BOOL WINAPI AccessCheckByTypeResultListAndAuditAlarmByHandleA (LPCSTR SubsystemName, LPVOID HandleId, HANDLE ClientToken, LPCSTR ObjectTypeName, LPCSTR ObjectName, PSECURITY_DESCRIPTOR SecurityDescriptor, PSID PrincipalSelfSid, DWORD DesiredAccess, AUDIT_EVENT_TYPE AuditType, DWORD Flags, POBJECT_TYPE_LIST ObjectTypeList, DWORD ObjectTypeListLength, PGENERIC_MAPPING GenericMapping, BOOL ObjectCreation, LPDWORD GrantedAccess, LPDWORD AccessStatusList, LPBOOL pfGenerateOnClose);
++ */
++
++#define LogonUserEx __AW_SUFFIXED__(LogonUserEx)
++WINADVAPI BOOL WINAPI LogonUserExA (LPCSTR lpszUsername, LPCSTR lpszDomain, LPCSTR lpszPassword, DWORD dwLogonType, DWORD dwLogonProvider, PHANDLE phToken, PSID *ppLogonSid, PVOID *ppProfileBuffer, LPDWORD pdwProfileLength, PQUOTA_LIMITS pQuotaLimits);
++WINADVAPI BOOL WINAPI LogonUserExW (LPCWSTR lpszUsername, LPCWSTR lpszDomain, LPCWSTR lpszPassword, DWORD dwLogonType, DWORD dwLogonProvider, PHANDLE phToken, PSID *ppLogonSid, PVOID *ppProfileBuffer, LPDWORD pdwProfileLength, PQUOTA_LIMITS pQuotaLimits);
++
++WINADVAPI BOOL WINAPI IsTokenUntrusted (HANDLE TokenHandle);
++WINBASEAPI BOOL WINAPI BindIoCompletionCallback (HANDLE FileHandle, LPOVERLAPPED_COMPLETION_ROUTINE Function, ULONG Flags);
++
+ #if _WIN32_WINNT >= _WIN32_WINNT_WS03
+ /* Further added features, which became available on the WinNT platform
+  * from Windows Server-2003; these were never made available in Win9x.
+@@ -2902,6 +3023,21 @@
+   WCHAR 			FileName[1];
+ } FILE_NAME_INFO, *PFILE_NAME_INFO, *LPFILE_NAME_INFO;
+ 
++typedef struct _FILE_RENAME_INFO {
++  BOOLEAN ReplaceIfExists;
++  HANDLE RootDirectory;
++  DWORD FileNameLength;
++  WCHAR FileName[1];
++} FILE_RENAME_INFO,*PFILE_RENAME_INFO;
++
++typedef struct _FILE_ALLOCATION_INFO {
++  LARGE_INTEGER AllocationSize;
++} FILE_ALLOCATION_INFO,*PFILE_ALLOCATION_INFO;
++
++typedef struct _FILE_END_OF_FILE_INFO {
++  LARGE_INTEGER EndOfFile;
++} FILE_END_OF_FILE_INFO,*PFILE_END_OF_FILE_INFO;
++
+ typedef struct _FILE_STREAM_INFO
+ /* http://msdn.microsoft.com/en-us/library/aa364406%28v=VS.85%29.aspx */
+ { DWORD 			NextEntryOffset;
+@@ -2927,6 +3063,10 @@
+   DWORD 			ReparseTag;
+ } FILE_ATTRIBUTE_TAG_INFO, *PFILE_ATTRIBUTE_TAG_INFO, *LPFILE_ATTRIBUTE_TAG_INFO;
+ 
++typedef struct _FILE_DISPOSITION_INFO {
++  BOOLEAN DeleteFile;
++} FILE_DISPOSITION_INFO,*PFILE_DISPOSITION_INFO;
++
+ typedef struct _FILE_ID_BOTH_DIR_INFO
+ /* http://msdn.microsoft.com/en-us/library/aa364226%28v=VS.85%29.aspx */
+ { DWORD 			NextEntryOffset;
+@@ -2946,6 +3086,32 @@
+   WCHAR 			FileName[1];
+ } FILE_ID_BOTH_DIR_INFO, *PFILE_ID_BOTH_DIR_INFO, *LPFILE_ID_BOTH_DIR_INFO;
+ 
++typedef struct _FILE_FULL_DIR_INFO {
++  ULONG NextEntryOffset;
++  ULONG FileIndex;
++  LARGE_INTEGER CreationTime;
++  LARGE_INTEGER LastAccessTime;
++  LARGE_INTEGER LastWriteTime;
++  LARGE_INTEGER ChangeTime;
++  LARGE_INTEGER EndOfFile;
++  LARGE_INTEGER AllocationSize;
++  ULONG FileAttributes;
++  ULONG FileNameLength;
++  ULONG EaSize;
++  WCHAR FileName[1];
++} FILE_FULL_DIR_INFO,*PFILE_FULL_DIR_INFO;
++
++typedef enum _PRIORITY_HINT {
++  IoPriorityHintVeryLow = 0,
++  IoPriorityHintLow,
++  IoPriorityHintNormal,
++  MaximumIoPriorityHintType
++} PRIORITY_HINT;
++
++typedef struct _FILE_IO_PRIORITY_HINT_INFO {
++  PRIORITY_HINT PriorityHint;
++} FILE_IO_PRIORITY_HINT_INFO,*PFILE_IO_PRIORITY_HINT_INFO;
++
+ typedef struct _FILE_REMOTE_PROTOCOL_INFO
+ /* http://msdn.microsoft.com/en-us/library/dd979524%28v=VS.85%29.aspx */
+ { USHORT			StructureVersion;
+@@ -2959,9 +3125,24 @@
+   struct
+   { ULONG			  Reserved[8];
+   }				GenericReserved;
++#if _WIN32_WINNT >= _WIN32_WINNT_WIN8
++  union {
++    struct {
++     struct {
++       ULONG Capabilities;
++     } Server;
++     struct {
++       ULONG Capabilities;
++       ULONG CachingFlags;
++     } Share;
++    } Smb2;
++    ULONG Reserved[16];
++  } ProtocolSpecific;
++#else
+   struct
+   { ULONG			  Reserved[16];
+   }				ProtocolSpecificReserved;
++#endif
+ } FILE_REMOTE_PROTOCOL_INFO, *PFILE_REMOTE_PROTOCOL_INFO, *LPFILE_REMOTE_PROTOCOL_INFO;
+ 
+ typedef enum _DEP_SYSTEM_POLICY_TYPE
+@@ -2994,6 +3175,10 @@
+ WINBASEAPI BOOL WINAPI CreateSymbolicLinkA (LPCSTR, LPCSTR, DWORD);
+ WINBASEAPI BOOL WINAPI CreateSymbolicLinkW (LPCWSTR, LPCWSTR, DWORD);
+ 
++#define CreateSymbolicLinkTransacted __AW_SUFFIXED__(CreateSymbolicLinkTransacted)
++WINBASEAPI BOOLEAN APIENTRY CreateSymbolicLinkTransactedA (LPCSTR lpSymlinkFileName, LPCSTR lpTargetFileName, DWORD dwFlags, HANDLE hTransaction);
++WINBASEAPI BOOLEAN APIENTRY CreateSymbolicLinkTransactedW (LPCWSTR lpSymlinkFileName, LPCWSTR lpTargetFileName, DWORD dwFlags, HANDLE hTransaction);
++
+ /* http://msdn.microsoft.com/en-us/library/aa364953%28VS.85%29.aspx */
+ WINBASEAPI BOOL WINAPI GetFileInformationByHandleEx
+ (HANDLE, FILE_INFO_BY_HANDLE_CLASS, LPVOID, DWORD);
+@@ -3029,6 +3214,200 @@
+ void WINAPI WakeAllConditionVariable (PCONDITION_VARIABLE);
+ void WINAPI WakeConditionVariable (PCONDITION_VARIABLE);
+ 
++WINBASEAPI LPVOID WINAPI VirtualAllocExNuma (HANDLE hProcess, LPVOID lpAddress, SIZE_T dwSize, DWORD flAllocationType, DWORD flProtect, DWORD nndPreferred);
++
++#define GetLongPathNameTransacted __AW_SUFFIXED__(GetLongPathNameTransacted)
++WINBASEAPI DWORD WINAPI GetLongPathNameTransactedA (LPCSTR lpszShortPath, LPSTR lpszLongPath, DWORD cchBuffer, HANDLE hTransaction);
++WINBASEAPI DWORD WINAPI GetLongPathNameTransactedW (LPCWSTR lpszShortPath, LPWSTR lpszLongPath, DWORD cchBuffer, HANDLE hTransaction);
++
++WINBASEAPI BOOL WINAPI SetFileCompletionNotificationModes (HANDLE FileHandle, UCHAR Flags);
++WINBASEAPI BOOL WINAPI SetFileIoOverlappedRange (HANDLE FileHandle, PUCHAR OverlappedRangeStart, ULONG Length);
++
++/* PWOW64_CONTEXT type not defined in MinGW32
++WINBASEAPI BOOL WINAPI Wow64GetThreadContext (HANDLE hThread, PWOW64_CONTEXT lpContext);
++WINBASEAPI BOOL WINAPI Wow64SetThreadContext (HANDLE hThread, CONST WOW64_CONTEXT *lpContext);
++ */
++
++WINBASEAPI DWORD WINAPI Wow64SuspendThread (HANDLE hThread);
++
++/* LPPROC_THREAD_ATTRIBUTE_LIST not defined
++typedef struct _STARTUPINFOEXA {
++  STARTUPINFOA StartupInfo;
++  LPPROC_THREAD_ATTRIBUTE_LIST lpAttributeList;
++} STARTUPINFOEXA,*LPSTARTUPINFOEXA;
++
++typedef struct _STARTUPINFOEXW {
++  STARTUPINFOW StartupInfo;
++  LPPROC_THREAD_ATTRIBUTE_LIST lpAttributeList;
++} STARTUPINFOEXW,*LPSTARTUPINFOEXW;
++
++typedef __AW_ALIAS__(STARTUPINFOEX), *LPSTARTUPINFOEX;
++ */
++
++#define CreateSemaphoreEx __AW_SUFFIXED__(CreateSemaphoreEx)
++WINBASEAPI HANDLE WINAPI CreateSemaphoreExA (LPSECURITY_ATTRIBUTES lpSemaphoreAttributes, LONG lInitialCount, LONG lMaximumCount, LPCSTR lpName, DWORD dwFlags, DWORD dwDesiredAccess);
++WINBASEAPI HANDLE WINAPI CreateSemaphoreExW (LPSECURITY_ATTRIBUTES lpSemaphoreAttributes, LONG lInitialCount, LONG lMaximumCount, LPCWSTR lpName, DWORD dwFlags, DWORD dwDesiredAccess);
++
++#define CreateWaitableTimerEx __AW_SUFFIXED__(CreateWaitableTimerEx)
++WINBASEAPI HANDLE WINAPI CreateWaitableTimerExA (LPSECURITY_ATTRIBUTES lpTimerAttributes, LPCSTR lpTimerName, DWORD dwFlags, DWORD dwDesiredAccess);
++WINBASEAPI HANDLE WINAPI CreateWaitableTimerExW (LPSECURITY_ATTRIBUTES lpTimerAttributes, LPCWSTR lpTimerName, DWORD dwFlags, DWORD dwDesiredAccess);
++
++#define CreateFileMappingNuma __AW_SUFFIXED__(CreateFileMappingNuma)
++WINBASEAPI HANDLE WINAPI CreateFileMappingNumaA (HANDLE hFile, LPSECURITY_ATTRIBUTES lpFileMappingAttributes, DWORD flProtect, DWORD dwMaximumSizeHigh, DWORD dwMaximumSizeLow, LPCSTR lpName, DWORD nndPreferred);
++WINBASEAPI HANDLE WINAPI CreateFileMappingNumaW (HANDLE hFile, LPSECURITY_ATTRIBUTES lpFileMappingAttributes, DWORD flProtect, DWORD dwMaximumSizeHigh, DWORD dwMaximumSizeLow, LPCWSTR lpName, DWORD nndPreferred);
++
++#define QueryFullProcessImageName __AW_SUFFIXED__(QueryFullProcessImageName)
++WINBASEAPI BOOL WINAPI QueryFullProcessImageNameA (HANDLE hProcess, DWORD dwFlags, LPSTR lpExeName, PDWORD lpdwSize);
++WINBASEAPI BOOL WINAPI QueryFullProcessImageNameW (HANDLE hProcess, DWORD dwFlags, LPWSTR lpExeName, PDWORD lpdwSize);
++
++#ifndef _USE_FULL_PROC_THREAD_ATTRIBUTE
++  typedef enum _PROC_THREAD_ATTRIBUTE_NUM {
++    ProcThreadAttributeParentProcess = 0,
++    ProcThreadAttributeHandleList = 2
++#if _WIN32_WINNT >= _WIN32_WINNT_WIN7
++    ,ProcThreadAttributeGroupAffinity = 3,
++    ProcThreadAttributePreferredNode = 4,
++    ProcThreadAttributeIdealProcessor = 5,
++    ProcThreadAttributeUmsThread = 6,
++    ProcThreadAttributeMitigationPolicy = 7
++#endif
++#if _WIN32_WINNT >= _WIN32_WINNT_WIN8
++    ,ProcThreadAttributeSecurityCapabilities = 9
++#endif
++  } PROC_THREAD_ATTRIBUTE_NUM;
++#endif
++
++WINBASEAPI BOOLEAN WINAPI Wow64EnableWow64FsRedirection (BOOLEAN Wow64FsEnableRedirection);
++
++#define CreateDirectoryTransacted __AW_SUFFIXED__(CreateDirectoryTransacted)
++WINBASEAPI BOOL WINAPI CreateDirectoryTransactedA (LPCSTR lpTemplateDirectory, LPCSTR lpNewDirectory, LPSECURITY_ATTRIBUTES lpSecurityAttributes, HANDLE hTransaction);
++WINBASEAPI BOOL WINAPI CreateDirectoryTransactedW (LPCWSTR lpTemplateDirectory, LPCWSTR lpNewDirectory, LPSECURITY_ATTRIBUTES lpSecurityAttributes, HANDLE hTransaction);
++
++#define RemoveDirectoryTransacted __AW_SUFFIXED__(RemoveDirectoryTransacted)
++WINBASEAPI BOOL WINAPI RemoveDirectoryTransactedA (LPCSTR lpPathName, HANDLE hTransaction);
++WINBASEAPI BOOL WINAPI RemoveDirectoryTransactedW (LPCWSTR lpPathName, HANDLE hTransaction);
++
++#define GetFullPathNameTransacted __AW_SUFFIXED__(GetFullPathNameTransacted)
++WINBASEAPI DWORD WINAPI GetFullPathNameTransactedA (LPCSTR lpFileName, DWORD nBufferLength, LPSTR lpBuffer, LPSTR *lpFilePart, HANDLE hTransaction);
++WINBASEAPI DWORD WINAPI GetFullPathNameTransactedW (LPCWSTR lpFileName, DWORD nBufferLength, LPWSTR lpBuffer, LPWSTR *lpFilePart, HANDLE hTransaction);
++
++#define CreateFileTransacted __AW_SUFFIXED__(CreateFileTransacted)
++WINBASEAPI HANDLE WINAPI CreateFileTransactedA (LPCSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile, HANDLE hTransaction, PUSHORT pusMiniVersion, PVOID lpExtendedParameter);
++WINBASEAPI HANDLE WINAPI CreateFileTransactedW (LPCWSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile, HANDLE hTransaction, PUSHORT pusMiniVersion, PVOID lpExtendedParameter);
++
++#define SetFileAttributesTransacted __AW_SUFFIXED__(SetFileAttributesTransacted)
++WINBASEAPI BOOL WINAPI SetFileAttributesTransactedA (LPCSTR lpFileName, DWORD dwFileAttributes, HANDLE hTransaction);
++WINBASEAPI BOOL WINAPI SetFileAttributesTransactedW (LPCWSTR lpFileName, DWORD dwFileAttributes, HANDLE hTransaction);
++
++#define GetFileAttributesTransacted __AW_SUFFIXED__(GetFileAttributesTransacted)
++WINBASEAPI BOOL WINAPI GetFileAttributesTransactedA (LPCSTR lpFileName, GET_FILEEX_INFO_LEVELS fInfoLevelId, LPVOID lpFileInformation, HANDLE hTransaction);
++WINBASEAPI BOOL WINAPI GetFileAttributesTransactedW (LPCWSTR lpFileName, GET_FILEEX_INFO_LEVELS fInfoLevelId, LPVOID lpFileInformation, HANDLE hTransaction);
++
++#define GetCompressedFileSizeTransacted __AW_SUFFIXED__(GetCompressedFileSizeTransacted)
++WINBASEAPI DWORD WINAPI GetCompressedFileSizeTransactedA (LPCSTR lpFileName, LPDWORD lpFileSizeHigh, HANDLE hTransaction);
++WINBASEAPI DWORD WINAPI GetCompressedFileSizeTransactedW (LPCWSTR lpFileName, LPDWORD lpFileSizeHigh, HANDLE hTransaction);
++
++#define DeleteFileTransacted __AW_SUFFIXED__(DeleteFileTransacted)
++WINBASEAPI BOOL WINAPI DeleteFileTransactedA (LPCSTR lpFileName, HANDLE hTransaction);
++WINBASEAPI BOOL WINAPI DeleteFileTransactedW (LPCWSTR lpFileName, HANDLE hTransaction);
++
++#define FindFirstFileTransacted __AW_SUFFIXED__(FindFirstFileTransacted)
++WINBASEAPI HANDLE WINAPI FindFirstFileTransactedA (LPCSTR lpFileName, FINDEX_INFO_LEVELS fInfoLevelId, LPVOID lpFindFileData, FINDEX_SEARCH_OPS fSearchOp, LPVOID lpSearchFilter, DWORD dwAdditionalFlags, HANDLE hTransaction);
++WINBASEAPI HANDLE WINAPI FindFirstFileTransactedW (LPCWSTR lpFileName, FINDEX_INFO_LEVELS fInfoLevelId, LPVOID lpFindFileData, FINDEX_SEARCH_OPS fSearchOp, LPVOID lpSearchFilter, DWORD dwAdditionalFlags, HANDLE hTransaction);
++
++#define CopyFileTransacted __AW_SUFFIXED__(CopyFileTransacted)
++WINBASEAPI BOOL WINAPI CopyFileTransactedA (LPCSTR lpExistingFileName, LPCSTR lpNewFileName, LPPROGRESS_ROUTINE lpProgressRoutine, LPVOID lpData, LPBOOL pbCancel, DWORD dwCopyFlags, HANDLE hTransaction);
++WINBASEAPI BOOL WINAPI CopyFileTransactedW (LPCWSTR lpExistingFileName, LPCWSTR lpNewFileName, LPPROGRESS_ROUTINE lpProgressRoutine, LPVOID lpData, LPBOOL pbCancel, DWORD dwCopyFlags, HANDLE hTransaction);
++
++#define MoveFileTransacted __AW_SUFFIXED__(MoveFileTransacted)
++WINBASEAPI BOOL WINAPI MoveFileTransactedA (LPCSTR lpExistingFileName, LPCSTR lpNewFileName, LPPROGRESS_ROUTINE lpProgressRoutine, LPVOID lpData, DWORD dwFlags, HANDLE hTransaction);
++WINBASEAPI BOOL WINAPI MoveFileTransactedW (LPCWSTR lpExistingFileName, LPCWSTR lpNewFileName, LPPROGRESS_ROUTINE lpProgressRoutine, LPVOID lpData, DWORD dwFlags, HANDLE hTransaction);
++
++#define CreateHardLinkTransacted __AW_SUFFIXED__(CreateHardLinkTransacted)
++WINBASEAPI BOOL WINAPI CreateHardLinkTransactedA (LPCSTR lpFileName, LPCSTR lpExistingFileName, LPSECURITY_ATTRIBUTES lpSecurityAttributes, HANDLE hTransaction);
++WINBASEAPI BOOL WINAPI CreateHardLinkTransactedW (LPCWSTR lpFileName, LPCWSTR lpExistingFileName, LPSECURITY_ATTRIBUTES lpSecurityAttributes, HANDLE hTransaction);
++
++typedef enum _STREAM_INFO_LEVELS {
++  FindStreamInfoStandard,
++  FindStreamInfoMaxInfoLevel
++} STREAM_INFO_LEVELS;
++
++typedef struct _WIN32_FIND_STREAM_DATA {
++  LARGE_INTEGER StreamSize;
++  WCHAR cStreamName[MAX_PATH + 36];
++} WIN32_FIND_STREAM_DATA,*PWIN32_FIND_STREAM_DATA;
++
++WINBASEAPI HANDLE WINAPI FindFirstStreamW (LPCWSTR lpFileName, STREAM_INFO_LEVELS InfoLevel, LPVOID lpFindStreamData, DWORD dwFlags);
++WINBASEAPI BOOL APIENTRY FindNextStreamW (HANDLE hFindStream, LPVOID lpFindStreamData);
++WINBASEAPI HANDLE WINAPI FindFirstStreamTransactedW (LPCWSTR lpFileName, STREAM_INFO_LEVELS InfoLevel, LPVOID lpFindStreamData, DWORD dwFlags, HANDLE hTransaction);
++WINBASEAPI HANDLE WINAPI FindFirstFileNameW (LPCWSTR lpFileName, DWORD dwFlags, LPDWORD StringLength, PWSTR LinkName);
++WINBASEAPI BOOL APIENTRY FindNextFileNameW (HANDLE hFindStream, LPDWORD StringLength, PWSTR LinkName);
++WINBASEAPI HANDLE WINAPI FindFirstFileNameTransactedW (LPCWSTR lpFileName, DWORD dwFlags, LPDWORD StringLength, PWSTR LinkName, HANDLE hTransaction);
++WINBASEAPI BOOL WINAPI GetNamedPipeClientComputerNameA (HANDLE Pipe, LPSTR ClientComputerName, ULONG ClientComputerNameLength);
++WINBASEAPI BOOL WINAPI GetNamedPipeClientProcessId (HANDLE Pipe, PULONG ClientProcessId);
++WINBASEAPI BOOL WINAPI GetNamedPipeClientSessionId (HANDLE Pipe, PULONG ClientSessionId);
++WINBASEAPI BOOL WINAPI GetNamedPipeServerProcessId (HANDLE Pipe, PULONG ServerProcessId);
++WINBASEAPI BOOL WINAPI GetNamedPipeServerSessionId (HANDLE Pipe, PULONG ServerSessionId);
++WINBASEAPI BOOL WINAPI SetFileBandwidthReservation (HANDLE hFile, DWORD nPeriodMilliseconds, DWORD nBytesPerPeriod, BOOL bDiscardable, LPDWORD lpTransferSize, LPDWORD lpNumOutstandingRequests);
++WINBASEAPI BOOL WINAPI GetFileBandwidthReservation (HANDLE hFile, LPDWORD lpPeriodMilliseconds, LPDWORD lpBytesPerPeriod, LPBOOL pDiscardable, LPDWORD lpTransferSize, LPDWORD lpNumOutstandingRequests);
++
++WINBASEAPI LPVOID WINAPI MapViewOfFileExNuma (HANDLE hFileMappingObject, DWORD dwDesiredAccess, DWORD dwFileOffsetHigh, DWORD dwFileOffsetLow, SIZE_T dwNumberOfBytesToMap, LPVOID lpBaseAddress, DWORD nndPreferred);
++
++WINADVAPI BOOL WINAPI CreateProcessWithTokenW (HANDLE hToken, DWORD dwLogonFlags, LPCWSTR lpApplicationName, LPWSTR lpCommandLine, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCWSTR lpCurrentDirectory, LPSTARTUPINFOW lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation);
++
++WINBASEAPI HANDLE WINAPI CreatePrivateNamespaceA (LPSECURITY_ATTRIBUTES lpPrivateNamespaceAttributes, LPVOID lpBoundaryDescriptor, LPCSTR lpAliasPrefix);
++WINBASEAPI HANDLE WINAPI OpenPrivateNamespaceA (LPVOID lpBoundaryDescriptor, LPCSTR lpAliasPrefix);
++WINBASEAPI HANDLE APIENTRY CreateBoundaryDescriptorA (LPCSTR Name, ULONG Flags);
++WINBASEAPI BOOL WINAPI AddIntegrityLabelToBoundaryDescriptor (HANDLE *BoundaryDescriptor, PSID IntegrityLabel);
++
++WINBASEAPI BOOL WINAPI AllocateUserPhysicalPagesNuma (HANDLE hProcess, PULONG_PTR NumberOfPages, PULONG_PTR PageArray, DWORD nndPreferred);
++
++WINBASEAPI DWORD WINAPI WTSGetActiveConsoleSessionId (VOID);
++
++WINBASEAPI BOOL WINAPI GetNumaProcessorNode (UCHAR Processor, PUCHAR NodeNumber);
++WINBASEAPI BOOL WINAPI GetNumaNodeProcessorMask (UCHAR Node, PULONGLONG ProcessorMask);
++WINBASEAPI BOOL WINAPI GetNumaAvailableMemoryNode (UCHAR Node, PULONGLONG AvailableBytes);
++WINBASEAPI BOOL WINAPI GetNumaProximityNode (ULONG ProximityId, PUCHAR NodeNumber);
++
++typedef DWORD (WINAPI *APPLICATION_RECOVERY_CALLBACK) (PVOID pvParameter);
++
++WINBASEAPI HRESULT WINAPI RegisterApplicationRecoveryCallback (APPLICATION_RECOVERY_CALLBACK pRecoveyCallback, PVOID pvParameter, DWORD dwPingInterval, DWORD dwFlags);
++WINBASEAPI HRESULT WINAPI UnregisterApplicationRecoveryCallback (void);
++WINBASEAPI HRESULT WINAPI RegisterApplicationRestart (PCWSTR pwzCommandline, DWORD dwFlags);
++WINBASEAPI HRESULT WINAPI UnregisterApplicationRestart (void);
++WINBASEAPI HRESULT WINAPI GetApplicationRecoveryCallback (HANDLE hProcess, APPLICATION_RECOVERY_CALLBACK *pRecoveryCallback, PVOID *ppvParameter, PDWORD pdwPingInterval, PDWORD pdwFlags);
++WINBASEAPI HRESULT WINAPI GetApplicationRestartSettings (HANDLE hProcess, PWSTR pwzCommandline, PDWORD pcchSize, PDWORD pdwFlags);
++WINBASEAPI HRESULT WINAPI ApplicationRecoveryInProgress (PBOOL pbCancelled);
++WINBASEAPI VOID WINAPI ApplicationRecoveryFinished (BOOL bSuccess);
++
++typedef enum _FILE_ID_TYPE {
++  FileIdType,
++  ObjectIdType,
++  ExtendedFileIdType,
++  MaximumFileIdType
++} FILE_ID_TYPE,*PFILE_ID_TYPE;
++
++typedef struct FILE_ID_DESCRIPTOR {
++  DWORD dwSize;
++  FILE_ID_TYPE Type;
++  __GNUC_EXTENSION union {
++    LARGE_INTEGER FileId;
++    GUID ObjectId;
++#if _WIN32_WINNT >= _WIN32_WINNT_WIN8
++    FILE_ID_128 ExtendedFileId;
++#endif
++  };
++} FILE_ID_DESCRIPTOR,*LPFILE_ID_DESCRIPTOR;
++
++WINBASEAPI HANDLE WINAPI OpenFileById (HANDLE hVolumeHint, LPFILE_ID_DESCRIPTOR lpFileId, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwFlagsAndAttributes);
++
++WINBASEAPI BOOL WINAPI QueryActCtxSettingsW (DWORD dwFlags, HANDLE hActCtx, PCWSTR settingsNameSpace, PCWSTR settingName, PWSTR pvBuffer, SIZE_T dwBuffer, SIZE_T *pdwWrittenOrRequired);
++WINBASEAPI BOOL WINAPI ReplacePartitionUnit (PWSTR TargetPartition, PWSTR SparePartition, ULONG Flags);
++/* PSECURE_MEMORY_CACHE_CALLBACK not defined
++WINBASEAPI BOOL WINAPI AddSecureMemoryCacheCallback (PSECURE_MEMORY_CACHE_CALLBACK pfnCallBack);
++WINBASEAPI BOOL WINAPI RemoveSecureMemoryCacheCallback (PSECURE_MEMORY_CACHE_CALLBACK pfnCallBack);
++ */
++
+ #if _WIN32_WINNT >= _WIN32_WINNT_WIN7
+ /* Additional features, available only on the WinNT series platforms, from
+  * the release of Windows-7 onwards.
+@@ -3042,6 +3417,161 @@
+ BOOLEAN WINAPI TryAcquireSRWLockExclusive (PSRWLOCK);
+ BOOLEAN WINAPI TryAcquireSRWLockShared (PSRWLOCK);
+ 
++/* PSYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION not defined
++WINBASEAPI BOOL WINAPI GetProcessorSystemCycleTime (USHORT Group, PSYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION Buffer, PDWORD ReturnedLength);
++ */
++WINBASEAPI BOOL WINAPI GetPhysicallyInstalledSystemMemory (PULONGLONG TotalMemoryInKilobytes);
++
++/* REASON_CONTEXT type not defined in MinGW32
++typedef REASON_CONTEXT POWER_REQUEST_CONTEXT,*PPOWER_REQUEST_CONTEXT,*LPPOWER_REQUEST_CONTEXT;
++
++WINBASEAPI HANDLE WINAPI PowerCreateRequest (PREASON_CONTEXT Context);
++WINBASEAPI BOOL WINAPI PowerSetRequest (HANDLE PowerRequest, POWER_REQUEST_TYPE RequestType);
++WINBASEAPI BOOL WINAPI PowerClearRequest (HANDLE PowerRequest, POWER_REQUEST_TYPE RequestType);
++ */
++
++WINBASEAPI DWORD WINAPI GetThreadErrorMode (VOID);
++WINBASEAPI BOOL WINAPI SetThreadErrorMode (DWORD dwNewMode, LPDWORD lpOldMode);
++
++/* PWOW64_LDT_ENTRY type not defined in MinGW32
++WINBASEAPI BOOL WINAPI Wow64GetThreadSelectorEntry (HANDLE hThread, DWORD dwSelector, PWOW64_LDT_ENTRY lpSelectorEntry);
++ */
++
++WINBASEAPI BOOL WINAPI SetSearchPathMode (DWORD Flags);
++
++WINADVAPI BOOL WINAPI AddConditionalAce (PACL pAcl, DWORD dwAceRevision, DWORD AceFlags, UCHAR AceType, DWORD AccessMask, PSID pSid, PWCHAR ConditionStr, DWORD *ReturnLength);
++
++#define LookupAccountNameLocal __AW_SUFFIXED__(LookupAccountNameLocal)
++WINADVAPI BOOL WINAPI LookupAccountNameLocalA (LPCSTR lpAccountName, PSID Sid, LPDWORD cbSid, LPSTR ReferencedDomainName, LPDWORD cchReferencedDomainName, PSID_NAME_USE peUse);
++WINADVAPI BOOL WINAPI LookupAccountNameLocalW (LPCWSTR lpAccountName, PSID Sid, LPDWORD cbSid, LPWSTR ReferencedDomainName, LPDWORD cchReferencedDomainName, PSID_NAME_USE peUse);
++
++#define LookupAccountSidLocal __AW_SUFFIXED__(LookupAccountSidLocal)
++WINADVAPI BOOL WINAPI LookupAccountSidLocalA (PSID Sid, LPSTR Name, LPDWORD cchName, LPSTR ReferencedDomainName, LPDWORD cchReferencedDomainName, PSID_NAME_USE peUse);
++WINADVAPI BOOL WINAPI LookupAccountSidLocalW (PSID Sid, LPWSTR Name, LPDWORD cchName, LPWSTR ReferencedDomainName, LPDWORD cchReferencedDomainName, PSID_NAME_USE peUse);
++
++WINBASEAPI WORD WINAPI GetActiveProcessorGroupCount (VOID);
++WINBASEAPI WORD WINAPI GetMaximumProcessorGroupCount (VOID);
++WINBASEAPI DWORD WINAPI GetActiveProcessorCount (WORD GroupNumber);
++WINBASEAPI DWORD WINAPI GetMaximumProcessorCount (WORD GroupNumber);
++WINBASEAPI BOOL WINAPI GetNumaNodeNumberFromHandle (HANDLE hFile, PUSHORT NodeNumber);
++/* PPROCESSOR_NUMBER not defined
++WINBASEAPI BOOL WINAPI GetNumaProcessorNodeEx (PPROCESSOR_NUMBER Processor, PUSHORT NodeNumber);
++ */
++WINBASEAPI BOOL WINAPI GetNumaAvailableMemoryNodeEx (USHORT Node, PULONGLONG AvailableBytes);
++WINBASEAPI BOOL WINAPI GetNumaProximityNodeEx (ULONG ProximityId, PUSHORT NodeNumber);
++
++WINBASEAPI BOOL WINAPI CopyContext (PCONTEXT Destination, DWORD ContextFlags, PCONTEXT Source);
++WINBASEAPI BOOL WINAPI InitializeContext (PVOID Buffer, DWORD ContextFlags, PCONTEXT *Context, PDWORD ContextLength);
++
++#if defined (__x86_64__) || defined (__i386__)
++WINBASEAPI DWORD64 WINAPI GetEnabledXStateFeatures (VOID);
++WINBASEAPI BOOL WINAPI GetXStateFeaturesMask (PCONTEXT Context, PDWORD64 FeatureMask);
++WINBASEAPI PVOID WINAPI LocateXStateFeature (PCONTEXT Context, DWORD FeatureId, PDWORD Length);
++WINBASEAPI BOOL WINAPI SetXStateFeaturesMask (PCONTEXT Context, DWORD64 FeatureMask);
++#endif
++
++WINBASEAPI DWORD APIENTRY EnableThreadProfiling (HANDLE ThreadHandle, DWORD Flags, DWORD64 HardwareCounters, HANDLE *PerformanceDataHandle);
++WINBASEAPI DWORD APIENTRY DisableThreadProfiling (HANDLE PerformanceDataHandle);
++WINBASEAPI DWORD APIENTRY QueryThreadProfiling (HANDLE ThreadHandle, PBOOLEAN Enabled);
++/* PPERFORMANCE_DATA not defined
++WINBASEAPI DWORD APIENTRY ReadThreadProfilingData (HANDLE PerformanceDataHandle, DWORD Flags, PPERFORMANCE_DATA PerformanceData);
++ */
++
++#if _WIN32_WINNT >= _WIN32_WINNT_WIN8
++
++typedef enum _THREAD_INFORMATION_CLASS {
++  ThreadMemoryPriority,
++  ThreadAbsoluteCpuPriority,
++  ThreadInformationClassMax
++} THREAD_INFORMATION_CLASS;
++
++typedef enum _PROCESS_INFORMATION_CLASS {
++  ProcessMemoryPriority,
++  ProcessInformationClassMax
++} PROCESS_INFORMATION_CLASS;
++
++
++WINBASEAPI BOOL WINAPI GetThreadInformation (HANDLE hThread, THREAD_INFORMATION_CLASS ThreadInformationClass, LPVOID ThreadInformation, DWORD ThreadInformationSize);
++WINBASEAPI BOOL WINAPI SetThreadInformation (HANDLE hThread, THREAD_INFORMATION_CLASS ThreadInformationClass, LPVOID ThreadInformation, DWORD ThreadInformationSize);
++WINBASEAPI BOOL WINAPI GetProcessInformation (HANDLE hProcess, PROCESS_INFORMATION_CLASS ProcessInformationClass, LPVOID ProcessInformation, DWORD ProcesInformationSize);
++WINBASEAPI BOOL WINAPI SetProcessInformation (HANDLE hProcess, PROCESS_INFORMATION_CLASS ProcessInformationClass, LPVOID ProcessInformation, DWORD ProcesInformationSize);
++
++typedef struct _MEMORY_PRIORITY_INFORMATION {
++  ULONG MemoryPriority;
++} MEMORY_PRIORITY_INFORMATION,*PMEMORY_PRIORITY_INFORMATION;
++
++#define GetFirmwareEnvironmentVariableEx __AW_SUFFIXED__(GetFirmwareEnvironmentVariableEx)
++WINBASEAPI DWORD WINAPI GetFirmwareEnvironmentVariableExA (LPCSTR lpName, LPCSTR lpGuid, PVOID pBuffer, DWORD nSize, PDWORD pdwAttribubutes);
++WINBASEAPI DWORD WINAPI GetFirmwareEnvironmentVariableExW (LPCWSTR lpName, LPCWSTR lpGuid, PVOID pBuffer, DWORD nSize, PDWORD pdwAttribubutes);
++
++#define SetFirmwareEnvironmentVariableEx __AW_SUFFIXED__(SetFirmwareEnvironmentVariableEx)
++WINBASEAPI BOOL WINAPI SetFirmwareEnvironmentVariableExA (LPCSTR lpName, LPCSTR lpGuid, PVOID pValue, DWORD nSize, DWORD dwAttributes);
++WINBASEAPI BOOL WINAPI SetFirmwareEnvironmentVariableExW (LPCWSTR lpName, LPCWSTR lpGuid, PVOID pValue, DWORD nSize, DWORD dwAttributes);
++
++WINBASEAPI BOOL WINAPI GetFirmwareType (PFIRMWARE_TYPE FirmwareType);
++WINBASEAPI BOOL WINAPI IsNativeVhdBoot (PBOOL NativeVhdBoot);
++
++typedef ULONG OPERATION_ID;
++
++typedef struct _OPERATION_START_PARAMETERS {
++  ULONG Version;
++  OPERATION_ID OperationId;
++  ULONG Flags;
++} OPERATION_START_PARAMETERS,*POPERATION_START_PARAMETERS;
++
++typedef struct _OPERATION_END_PARAMETERS {
++  ULONG Version;
++  OPERATION_ID OperationId;
++  ULONG Flags;
++} OPERATION_END_PARAMETERS,*POPERATION_END_PARAMETERS;
++
++WINADVAPI BOOL WINAPI OperationStart (OPERATION_START_PARAMETERS *OperationStartParams);
++WINADVAPI BOOL WINAPI OperationEnd (OPERATION_END_PARAMETERS *OperationEndParams);
++
++typedef VOID WINAPI BAD_MEMORY_CALLBACK_ROUTINE (VOID);
++typedef BAD_MEMORY_CALLBACK_ROUTINE *PBAD_MEMORY_CALLBACK_ROUTINE;
++
++WINBASEAPI PVOID WINAPI RegisterBadMemoryNotification (PBAD_MEMORY_CALLBACK_ROUTINE Callback);
++WINBASEAPI BOOL WINAPI UnregisterBadMemoryNotification (PVOID RegistrationHandle);
++WINBASEAPI BOOL WINAPI GetMemoryErrorHandlingCapabilities (PULONG Capabilities);
++
++typedef struct _FILE_ALIGNMENT_INFO {
++  ULONG AlignmentRequirement;
++} FILE_ALIGNMENT_INFO,*PFILE_ALIGNMENT_INFO;
++
++typedef struct _FILE_STORAGE_INFO {
++  ULONG LogicalBytesPerSector;
++  ULONG PhysicalBytesPerSectorForAtomicity;
++  ULONG PhysicalBytesPerSectorForPerformance;
++  ULONG FileSystemEffectivePhysicalBytesPerSectorForAtomicity;
++  ULONG Flags;
++  ULONG ByteOffsetForSectorAlignment;
++  ULONG ByteOffsetForPartitionAlignment;
++} FILE_STORAGE_INFO,*PFILE_STORAGE_INFO;
++
++typedef struct _FILE_ID_INFO {
++  ULONGLONG VolumeSerialNumber;
++  FILE_ID_128 FileId;
++} FILE_ID_INFO,*PFILE_ID_INFO;
++
++typedef struct _FILE_ID_EXTD_DIR_INFO {
++  ULONG NextEntryOffset;
++  ULONG FileIndex;
++  LARGE_INTEGER CreationTime;
++  LARGE_INTEGER LastAccessTime;
++  LARGE_INTEGER LastWriteTime;
++  LARGE_INTEGER ChangeTime;
++  LARGE_INTEGER EndOfFile;
++  LARGE_INTEGER AllocationSize;
++  ULONG FileAttributes;
++  ULONG FileNameLength;
++  ULONG EaSize;
++  ULONG ReparsePointTag;
++  FILE_ID_128 FileId;
++  WCHAR FileName[1];
++} FILE_ID_EXTD_DIR_INFO,*PFILE_ID_EXTD_DIR_INFO;
++
++#endif	/* Win8 and later */
+ #endif	/* Win7 and later */
+ #endif	/* Windows Vista and later */
+ #endif	/* Windows Server-2003 and later */
+--- w32api-5.0.2/include/ws2tcpip.h.orig	2017-11-09 02:35:48.000000000 +0100
++++ w32api-5.0.2/include/ws2tcpip.h	2018-09-17 05:43:14.524718024 +0200
+@@ -356,6 +356,41 @@
+ 	sockaddr_gen	iiNetmask;
+ } INTERFACE_INFO, *LPINTERFACE_INFO;
+ 
++typedef enum _MULTICAST_MODE_TYPE {
++  MCAST_INCLUDE   = 0,
++  MCAST_EXCLUDE
++} MULTICAST_MODE_TYPE;
++
++typedef struct _sockaddr_in6_pair {
++  PSOCKADDR_IN6 SourceAddress;
++  PSOCKADDR_IN6 DestinationAddress;
++} SOCKADDR_IN6_PAIR, *PSOCKADDR_IN6_PAIR;
++
++typedef union _SOCKADDR_INET {
++  SOCKADDR_IN    Ipv4;
++  SOCKADDR_IN6   Ipv6;
++  ADDRESS_FAMILY si_family;
++} SOCKADDR_INET, *PSOCKADDR_INET;
++
++typedef struct group_filter {
++  ULONG               gf_interface;
++  SOCKADDR_STORAGE    gf_group;
++  MULTICAST_MODE_TYPE gf_fmode;
++  ULONG               gf_numsrc;
++  SOCKADDR_STORAGE    gf_slist[1];
++} GROUP_FILTER, *PGROUP_FILTER;
++
++typedef struct group_req {
++  ULONG            gr_interface;
++  SOCKADDR_STORAGE gr_group;
++} GROUP_REQ, *PGROUP_REQ;
++
++typedef struct group_source_req {
++  ULONG            gsr_interface;
++  SOCKADDR_STORAGE gsr_group;
++  SOCKADDR_STORAGE gsr_source;
++} GROUP_SOURCE_REQ, *PGROUP_SOURCE_REQ;
++
+ /*
+    The definition above can cause problems on NT4,prior to sp4.
+    To workaround, include the following struct and typedef and
+@@ -373,6 +373,152 @@
+ } OLD_INTERFACE_INFO;
+ */
+ 
++#if _WIN32_WINNT >= _WIN32_WINNT_VISTA
++
++#define addrinfoEx __AW_SUFFIXED__(addrinfoEx)
++typedef struct addrinfoExA {
++  int                ai_flags;
++  int                ai_family;
++  int                ai_socktype;
++  int                ai_protocol;
++  size_t             ai_addrlen;
++  LPCSTR             ai_canonname;
++  struct sockaddr    *ai_addr;
++  void               *ai_blob;
++  size_t             ai_bloblen;
++  LPGUID             ai_provider;
++  struct addrinfoexA *ai_next;
++} ADDRINFOEXA, *PADDRINFOEXA;
++
++typedef struct addrinfoExW {
++  int                ai_flags;
++  int                ai_family;
++  int                ai_socktype;
++  int                ai_protocol;
++  size_t             ai_addrlen;
++  LPCWSTR            ai_canonname;
++  struct sockaddr    *ai_addr;
++  void               *ai_blob;
++  size_t             ai_bloblen;
++  LPGUID             ai_provider;
++  struct addrinfoexW *ai_next;
++} ADDRINFOEXW, *PADDRINFOEXW;
++
++typedef __AW_ALIAS__(ADDRINFOEX), *PADDRINFOEX;
++
++typedef PVOID LPLOOKUPSERVICE_COMPLETION_ROUTINE; /*reserved*/
++
++#define GetAddrInfoEx __AW_SUFFIXED__(GetAddrInfoEx)
++WINSOCK_API_LINKAGE int WSAAPI GetAddrInfoExA(PCSTR pName, PCSTR pServiceName, DWORD dwNameSpace,
++                                              LPGUID lpNspId,const ADDRINFOEXA *pHints,PADDRINFOEXA *ppResult,
++                                              PTIMEVAL timeout,LPOVERLAPPED lpOverlapped,
++                                              LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine,
++                                              LPHANDLE lpNameHandle);
++WINSOCK_API_LINKAGE int WSAAPI GetAddrInfoExW(PCWSTR pName,PCWSTR pServiceName,DWORD dwNameSpace,
++                                              LPGUID lpNspId,const ADDRINFOEXW *pHints,PADDRINFOEXW *ppResult,
++                                              PTIMEVAL timeout,LPOVERLAPPED lpOverlapped,
++                                              LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine,
++                                              LPHANDLE lpNameHandle);
++
++#define SetAddrInfoEx __AW_SUFFIXED__(SetAddrInfoEx)
++WINSOCK_API_LINKAGE int WSAAPI SetAddrInfoExA(PCSTR pName, PCSTR pServiceName, SOCKET_ADDRESS *pAddresses,
++                                              DWORD dwAddressCount,LPBLOB lpBlob,DWORD dwFlags,DWORD dwNameSpace,
++                                              LPGUID lpNspId,PTIMEVAL timeout,LPOVERLAPPED lpOverlapped,
++                                              LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine,
++                                              LPHANDLE lpNameHandle);
++WINSOCK_API_LINKAGE int WSAAPI SetAddrInfoExW(PCWSTR pName,PCWSTR pServiceName,SOCKET_ADDRESS *pAddresses,
++                                              DWORD dwAddressCount,LPBLOB lpBlob,DWORD dwFlags,DWORD dwNameSpace,
++                                              LPGUID lpNspId,PTIMEVAL timeout,LPOVERLAPPED lpOverlapped,
++                                              LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine,
++                                              LPHANDLE lpNameHandle);
++
++#define FreeAddrInfoEx __AW_SUFFIXED__(FreeAddrInfoEx)
++WINSOCK_API_LINKAGE void WSAAPI FreeAddrInfoExA(PADDRINFOEXA pAddrInfo);
++WINSOCK_API_LINKAGE void WSAAPI FreeAddrInfoExW(PADDRINFOEXW pAddrInfo);
++
++#if INCL_WINSOCK_API_TYPEDEFS
++#define LPFN_GETADDRINFOEX __AW_SUFFIXED__(LPFN_GETADDRINFOEX)
++  typedef int (WSAAPI *LPFN_GETADDRINFOEXA)(PCSTR pName, PCSTR pServiceName, DWORD dwNameSpace,
++                                            LPGUID lpNspId,const ADDRINFOEXA *pHints,PADDRINFOEXA *ppResult,
++                                            PTIMEVAL timeout,LPOVERLAPPED lpOverlapped,
++                                            LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine,
++                                            LPHANDLE lpNameHandle);
++  typedef int (WSAAPI *LPFN_GETADDRINFOEXW)(PCWSTR pName,PCWSTR pServiceName,DWORD dwNameSpace,
++                                            LPGUID lpNspId,const ADDRINFOEXW *pHints,PADDRINFOEXW *ppResult,
++                                            PTIMEVAL timeout,LPOVERLAPPED lpOverlapped,
++                                            LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine,
++                                            LPHANDLE lpNameHandle);
++
++#define LPFN_SETADDRINFOEX __AW_SUFFIXED__(LPFN_SETADDRINFOEX)
++  typedef int (WSAAPI *LPFN_SETADDRINFOEXA)(PCSTR pName, PCSTR pServiceName, SOCKET_ADDRESS *pAddresses,
++                                            DWORD dwAddressCount,LPBLOB lpBlob,DWORD dwFlags,DWORD dwNameSpace,
++                                            LPGUID lpNspId,PTIMEVAL timeout,LPOVERLAPPED lpOverlapped,
++                                            LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine,
++                                            LPHANDLE lpNameHandle);
++  typedef int (WSAAPI *LPFN_SETADDRINFOEXW)(PCWSTR pName,PCWSTR pServiceName,SOCKET_ADDRESS *pAddresses,
++                                            DWORD dwAddressCount,LPBLOB lpBlob,DWORD dwFlags,DWORD dwNameSpace,
++                                            LPGUID lpNspId,PTIMEVAL timeout,LPOVERLAPPED lpOverlapped,
++                                            LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine,
++                                            LPHANDLE lpNameHandle);
++
++#define LPFN_FREEADDRINFOEX __AW_SUFFIXED__(LPFN_FREEADDRINFOEX)
++  typedef void (WSAAPI *LPFN_FREEADDRINFOEXA)(PADDRINFOEXA pAddrInfo);
++  typedef void (WSAAPI *LPFN_FREEADDRINFOEXW)(PADDRINFOEXW pAddrInfo);
++#endif /* INCL_WINSOCK_API_TYPEDEFS */
++
++
++WINSOCK_API_LINKAGE int WSAAPI WSAImpersonateSocketPeer(
++  SOCKET Socket,
++  const struct sockaddr *PeerAddress,
++  ULONG peerAddressLen
++);
++
++/* SOCKET_SECURITY_* not defined
++WINSOCK_API_LINKAGE int WSAAPI WSAQuerySocketSecurity(
++  SOCKET Socket,
++  const SOCKET_SECURITY_QUERY_TEMPLATE *SecurityQueryTemplate,
++  ULONG SecurityQueryTemplateLen,
++  SOCKET_SECURITY_QUERY_INFO *SecurityQueryInfo,
++  ULONG *SecurityQueryInfoLen,
++  LPWSAOVERLAPPED Overlapped,
++  LPWSAOVERLAPPED_COMPLETION_ROUTINE CompletionRoutine
++);
++
++WINSOCK_API_LINKAGE int WSAAPI WSARevertImpersonation(void);
++
++WINSOCK_API_LINKAGE int WSAAPI WSASetSocketPeerTargetName(
++  SOCKET Socket,
++  const SOCKET_PEER_TARGET_NAME *PeerTargetName,
++  ULONG PeerTargetNameLen,
++  LPWSAOVERLAPPED Overlapped,
++  LPWSAOVERLAPPED_COMPLETION_ROUTINE CompletionRoutine
++);
++
++WINSOCK_API_LINKAGE int WSAAPI WSASetSocketSecurity(
++  SOCKET Socket,
++  const SOCKET_SECURITY_SETTINGS *SecuritySettings,
++  ULONG SecuritySettingsLen,
++  LPWSAOVERLAPPED Overlapped,
++  LPWSAOVERLAPPED_COMPLETION_ROUTINE CompletionRoutine
++);
++ */
++
++#define InetNtopA inet_ntop
++
++WINSOCK_API_LINKAGE LPCWSTR WSAAPI InetNtopW(INT Family, PVOID pAddr, LPWSTR pStringBuf, size_t StringBufSIze);
++WINSOCK_API_LINKAGE LPCSTR WSAAPI InetNtopA(INT Family, PVOID pAddr, LPSTR pStringBuf, size_t StringBufSize);
++
++#define InetNtop __AW_SUFFIXED__(InetNtop)
++
++#define InetPtonA inet_pton
++
++WINSOCK_API_LINKAGE INT WSAAPI InetPtonW(INT Family, LPCWSTR pStringBuf, PVOID pAddr);
++WINSOCK_API_LINKAGE INT WSAAPI InetPtonA(INT Family, LPCSTR pStringBuf, PVOID pAddr);
++
++#define InetPton __AW_SUFFIXED__(InetPton)
++
++#endif /* Vista */
++
+ #ifdef  __cplusplus
+ }
+ #endif
+--- w32api-5.0.2/include/ifdef.h.orig	1970-01-01 01:00:00.000000000 +0100
++++ w32api-5.0.2/include/ifdef.h	2018-09-18 18:11:18.793218987 +0200
+@@ -0,0 +1,118 @@
++/* https://github.com/Alexpux/mingw-w64/raw/master/mingw-w64-headers/include/ifdef.h
++   with IF_OPER_STATUS definition (already defined in mingw32 iptypes.h) replaced by iptypes.h include */
++/**
++ * This file has no copyright assigned and is placed in the Public Domain.
++ * This file is part of the mingw-w64 runtime package.
++ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
++ */
++#ifndef _INC_IFDEF
++#define _INC_IFDEF
++
++#include <ipifcons.h>
++#include <iptypes.h>
++
++#ifdef __cplusplus
++extern "C" {
++#endif
++
++#define IF_MAX_STRING_SIZE 256
++#define IF_MAX_PHYS_ADDRESS_LENGTH 32
++
++typedef UINT32 NET_IF_COMPARTMENT_ID, *PNET_IF_COMPARTMENT_ID;
++
++typedef ULONG NET_IFINDEX, *PNET_IFINDEX;
++typedef UINT16 NET_IFTYPE, *PNET_IFTYPE;
++typedef NET_IFINDEX IF_INDEX, *PIF_INDEX;
++
++typedef GUID NET_IF_NETWORK_GUID;
++
++typedef enum _NET_IF_OPER_STATUS {
++  NET_IF_OPER_STATUS_UP                = 1,
++  NET_IF_OPER_STATUS_DOWN,
++  NET_IF_OPER_STATUS_TESTING,
++  NET_IF_OPER_STATUS_UNKNOWN,
++  NET_IF_OPER_STATUS_DORMANT,
++  NET_IF_OPER_STATUS_NOT_PRESENT,
++  NET_IF_OPER_STATUS_LOWER_LAYER_DOWN
++} NET_IF_OPER_STATUS, *PNET_IF_OPER_STATUS;
++
++typedef enum _NET_IF_ADMIN_STATUS {
++  NET_IF_ADMIN_STATUS_UP        = 1,
++  NET_IF_ADMIN_STATUS_DOWN,
++  NET_IF_ADMIN_STATUS_TESTING 
++} NET_IF_ADMIN_STATUS, *PNET_IF_ADMIN_STATUS;
++
++typedef enum _NET_IF_MEDIA_CONNECT_STATE {
++  MediaConnectStateUnknown,
++  MediaConnectStateConnected,
++  MediaConnectStateDisconnected 
++} NET_IF_MEDIA_CONNECT_STATE, *PNET_IF_MEDIA_CONNECT_STATE;
++
++typedef enum _NET_IF_ACCESS_TYPE {
++  NET_IF_ACCESS_LOOPBACK               = 1,
++  NET_IF_ACCESS_BROADCAST,
++  NET_IF_ACCESS_POINT_TO_POINT,
++  NET_IF_ACCESS_POINT_TO_MULTI_POINT,
++  NET_IF_ACCESS_MAXIMUM 
++} NET_IF_ACCESS_TYPE, *PNET_IF_ACCESS_TYPE;
++
++typedef enum _NET_IF_CONNECTION_TYPE {
++  NET_IF_CONNECTION_DEDICATED   = 1,
++  NET_IF_CONNECTION_PASSIVE,
++  NET_IF_CONNECTION_DEMAND,
++  NET_IF_CONNECTION_MAXIMUM 
++} NET_IF_CONNECTION_TYPE, *PNET_IF_CONNECTION_TYPE;
++
++typedef enum _NET_IF_DIRECTION_TYPE {
++  NET_IF_DIRECTION_SENDRECEIVE,
++  NET_IF_DIRECTION_SENDONLY,
++  NET_IF_DIRECTION_RECEIVEONLY,
++  NET_IF_DIRECTION_MAXIMUM 
++} NET_IF_DIRECTION_TYPE, *PNET_IF_DIRECTION_TYPE;
++
++typedef enum _NET_IF_MEDIA_DUPLEX_STATE {
++  MediaDuplexStateUnknown,
++  MediaDuplexStateHalf,
++  MediaDuplexStateFull 
++} NET_IF_MEDIA_DUPLEX_STATE, *PNET_IF_MEDIA_DUPLEX_STATE;
++
++typedef enum _TUNNEL_TYPE {
++  TUNNEL_TYPE_NONE      = 0,
++  TUNNEL_TYPE_OTHER     = 1,
++  TUNNEL_TYPE_DIRECT    = 2,
++  TUNNEL_TYPE_6TO4      = 11,
++  TUNNEL_TYPE_ISATAP    = 13,
++  TUNNEL_TYPE_TEREDO    = 14,
++  TUNNEL_TYPE_IPHTTPS   = 15
++} TUNNEL_TYPE, *PTUNNEL_TYPE;
++
++typedef union _NET_LUID {
++  ULONG64 Value;
++  _ANONYMOUS_STRUCT struct { /* bitfield with 64 bit types. */
++    ULONG64 Reserved  :24;
++    ULONG64 NetLuidIndex  :24;
++    ULONG64 IfType  :16;
++  } Info;
++} NET_LUID, *PNET_LUID;
++
++typedef NET_LUID IF_LUID, *PIF_LUID;
++
++typedef struct _IF_COUNTED_STRING_LH {
++    USHORT Length;
++    WCHAR  String[IF_MAX_STRING_SIZE + 1];
++} IF_COUNTED_STRING_LH, *PIF_COUNTED_STRING_LH;
++typedef IF_COUNTED_STRING_LH IF_COUNTED_STRING;
++typedef IF_COUNTED_STRING *PIF_COUNTED_STRING;
++
++typedef struct _IF_PHYSICAL_ADDRESS_LH {
++    USHORT Length;
++    UCHAR  Address[IF_MAX_PHYS_ADDRESS_LENGTH];
++} IF_PHYSICAL_ADDRESS_LH, *PIF_PHYSICAL_ADDRESS_LH;
++typedef IF_PHYSICAL_ADDRESS_LH IF_PHYSICAL_ADDRESS;
++typedef IF_PHYSICAL_ADDRESS *PIF_PHYSICAL_ADDRESS;
++
++#ifdef __cplusplus
++}
++#endif
++
++#endif /* _INC_IFDEF */
+--- w32api-5.0.2/include/iphlpapi.h.orig	2017-11-28 19:03:04.000000000 +0100
++++ w32api-5.0.2/include/iphlpapi.h	2018-09-18 17:20:54.629920182 +0200
+@@ -7,6 +7,8 @@
+ #include <iprtrmib.h>
+ #include <ipexport.h>
+ #include <iptypes.h>
++#include <ifdef.h>
++
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+@@ -71,6 +73,10 @@
+ DWORD WINAPI SetTcpEntry(PMIB_TCPROW);
+ DWORD WINAPI UnenableRouter(OVERLAPPED*, LPDWORD);
+ 
++#if NTDDI_VERSION >= __NTDDI_VISTA
++#include <netioapi.h>
++#endif
++
+ #ifdef __cplusplus
+ }
+ #endif
+--- w32api-5.0.2/include/winreg.h.orig	2017-11-28 19:03:04.000000000 +0100
++++ w32api-5.0.2/include/winreg.h	2018-09-18 20:52:03.946442081 +0200
+@@ -18,6 +18,9 @@
+ #define HKEY_PERFORMANCE_DATA	((HKEY)0x80000004)
+ #define HKEY_CURRENT_CONFIG	((HKEY)0x80000005)
+ #define HKEY_DYN_DATA	((HKEY)0x80000006)
++#define HKEY_PERFORMANCE_TEXT ((HKEY)0x80000050)
++#define HKEY_PERFORMANCE_NLSTEXT ((HKEY)0x80000060)
++
+ #define REG_OPTION_VOLATILE 1
+ #define REG_OPTION_NON_VOLATILE 0
+ #define REG_CREATED_NEW_KEY 1
+--- w32api-5.0.2/include/nldef.h.orig	1970-01-01 01:00:00.000000000 +0100
++++ w32api-5.0.2/include/nldef.h	2018-09-19 20:48:36.358791357 +0200
+@@ -0,0 +1,193 @@
++/* https://github.com/Alexpux/mingw-w64/raw/master/mingw-w64-headers/include/nldef.h */
++/**
++ * This file is part of the mingw-w64 runtime package.
++ * No warranty is given; refer to the file DISCLAIMER within this package.
++ */
++
++#ifndef _NLDEF_
++#define _NLDEF_
++
++#include <iptypes.h>
++/*
++#include <winapifamily.h>
++
++#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) || _WIN32_WINNT >= 0x0A00
++ */
++
++typedef enum {
++  NldsInvalid,
++  NldsTentative,
++  NldsDuplicate,
++  NldsDeprecated,
++  NldsPreferred,
++/*IpDadStateInvalid = 0,
++  IpDadStateTentative,
++  IpDadStateDuplicate,
++  IpDadStateDeprecated,
++  IpDadStatePreferred, */
++} NL_DAD_STATE;
++
++#define MAKE_ROUTE_PROTOCOL(N, V) MIB_IPPROTO_ ## N = V, PROTO_IP_ ## N = V
++
++typedef enum {
++  RouteProtocolOther = 1,
++  RouteProtocolLocal = 2,
++  RouteProtocolNetMgmt = 3,
++  RouteProtocolIcmp = 4,
++  RouteProtocolEgp = 5,
++  RouteProtocolGgp = 6,
++  RouteProtocolHello = 7,
++  RouteProtocolRip = 8,
++  RouteProtocolIsIs = 9,
++  RouteProtocolEsIs = 10,
++  RouteProtocolCisco = 11,
++  RouteProtocolBbn = 12,
++  RouteProtocolOspf = 13,
++  RouteProtocolBgp = 14,
++
++  MAKE_ROUTE_PROTOCOL (OTHER, 1),
++  MAKE_ROUTE_PROTOCOL (LOCAL, 2),
++  MAKE_ROUTE_PROTOCOL (NETMGMT, 3),
++  MAKE_ROUTE_PROTOCOL (ICMP, 4),
++  MAKE_ROUTE_PROTOCOL (EGP, 5),
++  MAKE_ROUTE_PROTOCOL (GGP, 6),
++  MAKE_ROUTE_PROTOCOL (HELLO, 7),
++  MAKE_ROUTE_PROTOCOL (RIP, 8),
++  MAKE_ROUTE_PROTOCOL (IS_IS, 9),
++  MAKE_ROUTE_PROTOCOL (ES_IS, 10),
++  MAKE_ROUTE_PROTOCOL (CISCO, 11),
++  MAKE_ROUTE_PROTOCOL (BBN, 12),
++  MAKE_ROUTE_PROTOCOL (OSPF, 13),
++  MAKE_ROUTE_PROTOCOL (BGP, 14),
++  MAKE_ROUTE_PROTOCOL (NT_AUTOSTATIC, 10002),
++  MAKE_ROUTE_PROTOCOL (NT_STATIC, 10006),
++  MAKE_ROUTE_PROTOCOL (NT_STATIC_NON_DOD, 10007)
++} NL_ROUTE_PROTOCOL,*PNL_ROUTE_PROTOCOL;
++
++typedef IP_PREFIX_ORIGIN /* enum {
++  IpPrefixOriginOther = 0,
++  IpPrefixOriginManual,
++  IpPrefixOriginWellKnown,
++  IpPrefixOriginDhcp,
++  IpPrefixOriginRouterAdvertisement,
++  IpPrefixOriginUnchanged = 16 
++}*/ NL_PREFIX_ORIGIN;
++
++typedef enum {
++  NlsoOther = 0,
++  NlsoManual,
++  NlsoWellKnown,
++  NlsoDhcp,
++  NlsoLinkLayerAddress,
++  NlsoRandom,
++/*IpSuffixOriginOther = 0,
++  IpSuffixOriginManual,
++  IpSuffixOriginWellKnown,
++  IpSuffixOriginDhcp,
++  IpSuffixOriginLinkLayerAddress,
++  IpSuffixOriginRandom,
++  IpSuffixOriginUnchanged = 16*/
++} NL_SUFFIX_ORIGIN;
++
++typedef enum {
++  NlatUnspecified,
++  NlatUnicast,
++  NlatAnycast,
++  NlatMulticast,
++  NlatBroadcast,
++  NlatInvalid
++} NL_ADDRESS_TYPE, *PNL_ADDRESS_TYPE;
++
++typedef enum _NL_ROUTE_ORIGIN {
++  NlroManual,
++  NlroWellKnown,
++  NlroDHCP,
++  NlroRouterAdvertisement,
++  Nlro6to4,
++} NL_ROUTE_ORIGIN, *PNL_ROUTE_ORIGIN;
++
++typedef enum _NL_NEIGHBOR_STATE {
++  NlnsUnreachable,
++  NlnsIncomplete,
++  NlnsProbe,
++  NlnsDelay,
++  NlnsStale,
++  NlnsReachable,
++  NlnsPermanent,
++  NlnsMaximum,
++} NL_NEIGHBOR_STATE, *PNL_NEIGHBOR_STATE;
++
++typedef enum _NL_LINK_LOCAL_ADDRESS_BEHAVIOR {
++  LinkLocalAlwaysOff = 0,
++  LinkLocalDelayed,
++  LinkLocalAlwaysOn,
++  LinkLocalUnchanged = -1
++} NL_LINK_LOCAL_ADDRESS_BEHAVIOR;
++
++typedef enum _NL_ROUTER_DISCOVERY_BEHAVIOR {
++  RouterDiscoveryDisabled = 0,
++  RouterDiscoveryEnabled,
++  RouterDiscoveryDhcp,
++  RouterDiscoveryUnchanged = -1
++} NL_ROUTER_DISCOVERY_BEHAVIOR;
++
++typedef enum _NL_BANDWIDTH_FLAG {
++  NlbwDisabled = 0,
++  NlbwEnabled,
++  NlbwUnchanged = -1
++} NL_BANDWIDTH_FLAG, *PNL_BANDWIDTH_FLAG;
++
++typedef enum _NL_INTERFACE_NETWORK_CATEGORY_STATE {
++  NlincCategoryUnknown = 0,
++  NlincPublic = 1,
++  NlincPrivate = 2,
++  NlincDomainAuthenticated = 3,
++  NlincCategoryStateMax
++} NL_INTERFACE_NETWORK_CATEGORY_STATE, *PNL_INTERFACE_NETWORK_CATEGORY_STATE;
++
++typedef struct _NL_INTERFACE_OFFLOAD_ROD {
++  BOOLEAN NlChecksumSupported : 1;
++  BOOLEAN NlOptionsSupported : 1;
++  BOOLEAN TlDatagramChecksumSupported : 1;
++  BOOLEAN TlStreamChecksumSupported : 1;
++  BOOLEAN TlStreamOptionsSupported : 1;
++  BOOLEAN FastPathCompatible : 1;
++  BOOLEAN TlLargeSendOffloadSupported : 1;
++  BOOLEAN TlGiantSendOffloadSupported : 1;
++} NL_INTERFACE_OFFLOAD_ROD, *PNL_INTERFACE_OFFLOAD_ROD;
++
++typedef struct _NL_PATH_BANDWIDTH_ROD {
++  ULONG64 Bandwidth;
++  ULONG64 Instability;
++  BOOLEAN BandwidthPeaked;
++} NL_PATH_BANDWIDTH_ROD, *PNL_PATH_BANDWIDTH_ROD;
++
++typedef enum _NL_NETWORK_CATEGORY {
++  NetworkCategoryPublic,
++  NetworkCategoryPrivate,
++  NetworkCategoryDomainAuthenticated,
++  NetworkCategoryUnchanged = -1,
++  NetworkCategoryUnknown = -1
++} NL_NETWORK_CATEGORY,*PNL_NETWORK_CATEGORY;
++
++typedef struct _NL_BANDWIDTH_INFORMATION {
++  ULONG64 Bandwidth;
++  ULONG64 Instability;
++  BOOLEAN BandwidthPeaked;
++} NL_BANDWIDTH_INFORMATION, *PNL_BANDWIDTH_INFORMATION;
++
++#define NlpoOther IpPrefixOriginOther
++#define NlpoManual IpPrefixOriginManual
++#define NlpoWellKnown IpPrefixOriginWellKnown
++#define NlpoDhcp IpPrefixOriginDhcp
++#define NlpoRouterAdvertisement IpPrefixOriginRouterAdvertisement
++
++#define NL_MAX_METRIC_COMPONENT ((((ULONG) 1) << 31) - 1)
++
++#define NET_IF_CURRENT_SESSION ((ULONG)-1)
++
++/*
++#endif
++ */
++
++#endif
+--- w32api-5.0.2/include/netioapi.h.orig	1970-01-01 01:00:00.000000000 +0100
++++ w32api-5.0.2/include/netioapi.h	2018-09-19 20:50:20.355456840 +0200
+@@ -0,0 +1,398 @@
++/* https://github.com/Alexpux/mingw-w64/raw/master/mingw-w64-headers/include/netioapi.h, adjusted for mingw32 */
++/**
++ * This file is part of the mingw-w64 runtime package.
++ * No warranty is given; refer to the file DISCLAIMER within this pack
++ */
++
++#ifndef _NETIOAPI_H_
++#define _NETIOAPI_H_
++
++/*
++#include <winapifamily.h>
++
++#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
++ */
++
++#ifdef __cplusplus
++extern "C" {
++#endif
++
++#ifndef ANY_SIZE
++#define ANY_SIZE 1
++#endif
++
++#ifdef _IPHLPAPI_H
++#define NETIO_STATUS DWORD
++#define NETIO_SUCCESS(x) ((x) == NO_ERROR)
++#define NETIOAPI_API_ WINAPI
++#else
++#ifndef __MINGW32__
++#include <ws2def.h>
++#ifndef __CYGWIN__
++#include <ws2ipdef.h>
++#endif
++#endif
++#include <iprtrmib.h>
++#include <ifdef.h>
++#include <nldef.h>
++#include <ntdef.h> /* for NTSTATUS */
++
++#define NETIO_STATUS NTSTATUS
++#define NETIO_SUCCESS(x) NT_SUCCESS (x)
++#define NETIOAPI_API_ NTAPI
++#endif
++
++#define _NETIOAPI_SUCCESS_
++#define NETIOAPI_API NETIO_STATUS NETIOAPI_API_
++
++#define IF_NAMESIZE NDIS_IF_MAX_STRING_SIZE
++
++  typedef enum _MIB_NOTIFICATION_TYPE {
++    MibParameterNotification,
++    MibAddInstance,
++    MibDeleteInstance,
++    MibInitialNotification
++  } MIB_NOTIFICATION_TYPE,*PMIB_NOTIFICATION_TYPE;
++
++#ifdef _NLDEF_ /* _WS2IPDEF_ */
++#include <ntddndis.h>
++
++#define MIB_INVALID_TEREDO_PORT_NUMBER 0
++
++  typedef enum _MIB_IF_TABLE_LEVEL {
++    MibIfTableNormal,
++    MibIfTableRaw
++  } MIB_IF_TABLE_LEVEL, *PMIB_IF_TABLE_LEVEL;
++
++  typedef struct _MIB_IF_ROW2 {
++    NET_LUID InterfaceLuid;
++    NET_IFINDEX InterfaceIndex;
++    GUID InterfaceGuid;
++    WCHAR Alias[IF_MAX_STRING_SIZE + 1];
++    WCHAR Description[IF_MAX_STRING_SIZE + 1];
++    ULONG PhysicalAddressLength;
++    UCHAR PhysicalAddress[IF_MAX_PHYS_ADDRESS_LENGTH];
++    UCHAR PermanentPhysicalAddress[IF_MAX_PHYS_ADDRESS_LENGTH];
++    ULONG Mtu;
++    IFTYPE Type;
++    TUNNEL_TYPE TunnelType;
++    NDIS_MEDIUM MediaType;
++    NDIS_PHYSICAL_MEDIUM PhysicalMediumType;
++    NET_IF_ACCESS_TYPE AccessType;
++    NET_IF_DIRECTION_TYPE DirectionType;
++    struct {
++      BOOLEAN HardwareInterface : 1;
++      BOOLEAN FilterInterface : 1;
++      BOOLEAN ConnectorPresent : 1;
++      BOOLEAN NotAuthenticated : 1;
++      BOOLEAN NotMediaConnected : 1;
++      BOOLEAN Paused : 1;
++      BOOLEAN LowPower : 1;
++      BOOLEAN EndPointInterface : 1;
++    } InterfaceAndOperStatusFlags;
++    IF_OPER_STATUS OperStatus;
++    NET_IF_ADMIN_STATUS AdminStatus;
++    NET_IF_MEDIA_CONNECT_STATE MediaConnectState;
++    NET_IF_NETWORK_GUID NetworkGuid;
++    NET_IF_CONNECTION_TYPE ConnectionType;
++    ULONG64 TransmitLinkSpeed;
++    ULONG64 ReceiveLinkSpeed;
++    ULONG64 InOctets;
++    ULONG64 InUcastPkts;
++    ULONG64 InNUcastPkts;
++    ULONG64 InDiscards;
++    ULONG64 InErrors;
++    ULONG64 InUnknownProtos;
++    ULONG64 InUcastOctets;
++    ULONG64 InMulticastOctets;
++    ULONG64 InBroadcastOctets;
++    ULONG64 OutOctets;
++    ULONG64 OutUcastPkts;
++    ULONG64 OutNUcastPkts;
++    ULONG64 OutDiscards;
++    ULONG64 OutErrors;
++    ULONG64 OutUcastOctets;
++    ULONG64 OutMulticastOctets;
++    ULONG64 OutBroadcastOctets;
++    ULONG64 OutQLen;
++  } MIB_IF_ROW2,*PMIB_IF_ROW2;
++
++  typedef struct _MIB_IF_TABLE2 {
++    ULONG NumEntries;
++    MIB_IF_ROW2 Table[ANY_SIZE];
++  } MIB_IF_TABLE2, *PMIB_IF_TABLE2;
++
++  typedef struct _MIB_IPINTERFACE_ROW {
++    ADDRESS_FAMILY Family;
++    NET_LUID InterfaceLuid;
++    NET_IFINDEX InterfaceIndex;
++    ULONG MaxReassemblySize;
++    ULONG64 InterfaceIdentifier;
++    ULONG MinRouterAdvertisementInterval;
++    ULONG MaxRouterAdvertisementInterval;
++    BOOLEAN AdvertisingEnabled;
++    BOOLEAN ForwardingEnabled;
++    BOOLEAN WeakHostSend;
++    BOOLEAN WeakHostReceive;
++    BOOLEAN UseAutomaticMetric;
++    BOOLEAN UseNeighborUnreachabilityDetection;
++    BOOLEAN ManagedAddressConfigurationSupported;
++    BOOLEAN OtherStatefulConfigurationSupported;
++    BOOLEAN AdvertiseDefaultRoute;
++    NL_ROUTER_DISCOVERY_BEHAVIOR RouterDiscoveryBehavior;
++    ULONG DadTransmits;
++    ULONG BaseReachableTime;
++    ULONG RetransmitTime;
++    ULONG PathMtuDiscoveryTimeout;
++    NL_LINK_LOCAL_ADDRESS_BEHAVIOR LinkLocalAddressBehavior;
++    ULONG LinkLocalAddressTimeout;
++    ULONG ZoneIndices[ScopeLevelCount];
++    ULONG SitePrefixLength;
++    ULONG Metric;
++    ULONG NlMtu;
++    BOOLEAN Connected;
++    BOOLEAN SupportsWakeUpPatterns;
++    BOOLEAN SupportsNeighborDiscovery;
++    BOOLEAN SupportsRouterDiscovery;
++    ULONG ReachableTime;
++    NL_INTERFACE_OFFLOAD_ROD TransmitOffload;
++    NL_INTERFACE_OFFLOAD_ROD ReceiveOffload;
++    BOOLEAN DisableDefaultRoutes;
++  } MIB_IPINTERFACE_ROW,*PMIB_IPINTERFACE_ROW;
++
++  typedef struct _MIB_IPINTERFACE_TABLE {
++    ULONG NumEntries;
++    MIB_IPINTERFACE_ROW Table[ANY_SIZE];
++  } MIB_IPINTERFACE_TABLE,*PMIB_IPINTERFACE_TABLE;
++
++  typedef struct _MIB_IFSTACK_ROW {
++    NET_IFINDEX HigherLayerInterfaceIndex;
++    NET_IFINDEX LowerLayerInterfaceIndex;
++  } MIB_IFSTACK_ROW,*PMIB_IFSTACK_ROW;
++
++  typedef struct _MIB_INVERTEDIFSTACK_ROW {
++    NET_IFINDEX LowerLayerInterfaceIndex;
++    NET_IFINDEX HigherLayerInterfaceIndex;
++  } MIB_INVERTEDIFSTACK_ROW,*PMIB_INVERTEDIFSTACK_ROW;
++
++  typedef struct _MIB_IFSTACK_TABLE {
++    ULONG NumEntries;
++    MIB_IFSTACK_ROW Table[ANY_SIZE];
++  } MIB_IFSTACK_TABLE,*PMIB_IFSTACK_TABLE;
++
++  typedef struct _MIB_INVERTEDIFSTACK_TABLE {
++    ULONG NumEntries;
++    MIB_INVERTEDIFSTACK_ROW Table[ANY_SIZE];
++  } MIB_INVERTEDIFSTACK_TABLE,*PMIB_INVERTEDIFSTACK_TABLE;
++
++  typedef struct _MIB_IP_NETWORK_CONNECTION_BANDWIDTH_ESTIMATES {
++    NL_BANDWIDTH_INFORMATION InboundBandwidthInformation;
++    NL_BANDWIDTH_INFORMATION OutboundBandwidthInformation;
++  } MIB_IP_NETWORK_CONNECTION_BANDWIDTH_ESTIMATES, *PMIB_IP_NETWORK_CONNECTION_BANDWIDTH_ESTIMATES;
++
++  typedef struct _MIB_UNICASTIPADDRESS_ROW {
++    SOCKADDR_INET Address;
++    NET_LUID InterfaceLuid;
++    NET_IFINDEX InterfaceIndex;
++    NL_PREFIX_ORIGIN PrefixOrigin;
++    NL_SUFFIX_ORIGIN SuffixOrigin;
++    ULONG ValidLifetime;
++    ULONG PreferredLifetime;
++    UINT8 OnLinkPrefixLength;
++    BOOLEAN SkipAsSource;
++    NL_DAD_STATE DadState;
++    SCOPE_ID ScopeId;
++    LARGE_INTEGER CreationTimeStamp;
++  } MIB_UNICASTIPADDRESS_ROW,*PMIB_UNICASTIPADDRESS_ROW;
++
++  typedef struct _MIB_UNICASTIPADDRESS_TABLE {
++    ULONG NumEntries;
++    MIB_UNICASTIPADDRESS_ROW Table[ANY_SIZE];
++  } MIB_UNICASTIPADDRESS_TABLE,*PMIB_UNICASTIPADDRESS_TABLE;
++
++  typedef struct _MIB_ANYCASTIPADDRESS_ROW {
++    SOCKADDR_INET Address;
++    NET_LUID InterfaceLuid;
++    NET_IFINDEX InterfaceIndex;
++    SCOPE_ID ScopeId;
++  } MIB_ANYCASTIPADDRESS_ROW,*PMIB_ANYCASTIPADDRESS_ROW;
++
++  typedef struct _MIB_ANYCASTIPADDRESS_TABLE {
++    ULONG NumEntries;
++    MIB_ANYCASTIPADDRESS_ROW Table[ANY_SIZE];
++  } MIB_ANYCASTIPADDRESS_TABLE,*PMIB_ANYCASTIPADDRESS_TABLE;
++
++  typedef struct _MIB_MULTICASTIPADDRESS_ROW {
++    SOCKADDR_INET Address;
++    NET_IFINDEX InterfaceIndex;
++    NET_LUID InterfaceLuid;
++    SCOPE_ID ScopeId;
++  } MIB_MULTICASTIPADDRESS_ROW,*PMIB_MULTICASTIPADDRESS_ROW;
++
++  typedef struct _MIB_MULTICASTIPADDRESS_TABLE {
++    ULONG NumEntries;
++    MIB_MULTICASTIPADDRESS_ROW Table[ANY_SIZE];
++  } MIB_MULTICASTIPADDRESS_TABLE,*PMIB_MULTICASTIPADDRESS_TABLE;
++
++  typedef struct _IP_ADDRESS_PREFIX {
++    SOCKADDR_INET Prefix;
++    UINT8 PrefixLength;
++  } IP_ADDRESS_PREFIX,*PIP_ADDRESS_PREFIX;
++
++  typedef struct _MIB_IPFORWARD_ROW2 {
++    NET_LUID InterfaceLuid;
++    NET_IFINDEX InterfaceIndex;
++    IP_ADDRESS_PREFIX DestinationPrefix;
++    SOCKADDR_INET NextHop;
++    UCHAR SitePrefixLength;
++    ULONG ValidLifetime;
++    ULONG PreferredLifetime;
++    ULONG Metric;
++    NL_ROUTE_PROTOCOL Protocol;
++    BOOLEAN Loopback;
++    BOOLEAN AutoconfigureAddress;
++    BOOLEAN Publish;
++    BOOLEAN Immortal;
++    ULONG Age;
++    NL_ROUTE_ORIGIN Origin;
++  } MIB_IPFORWARD_ROW2,*PMIB_IPFORWARD_ROW2;
++
++  typedef struct _MIB_IPFORWARD_TABLE2 {
++    ULONG NumEntries;
++    MIB_IPFORWARD_ROW2 Table[ANY_SIZE];
++  } MIB_IPFORWARD_TABLE2,*PMIB_IPFORWARD_TABLE2;
++
++  typedef struct _MIB_IPPATH_ROW {
++    SOCKADDR_INET Source;
++    SOCKADDR_INET Destination;
++    NET_LUID InterfaceLuid;
++    NET_IFINDEX InterfaceIndex;
++    SOCKADDR_INET CurrentNextHop;
++    ULONG PathMtu;
++    ULONG RttMean;
++    ULONG RttDeviation;
++    _ANONYMOUS_UNION union {
++      ULONG LastReachable;
++      ULONG LastUnreachable;
++    };
++    BOOLEAN IsReachable;
++    ULONG64 LinkTransmitSpeed;
++    ULONG64 LinkReceiveSpeed;
++  } MIB_IPPATH_ROW,*PMIB_IPPATH_ROW;
++
++  typedef struct _MIB_IPPATH_TABLE {
++    ULONG NumEntries;
++    MIB_IPPATH_ROW Table[ANY_SIZE];
++  } MIB_IPPATH_TABLE,*PMIB_IPPATH_TABLE;
++
++  typedef struct _MIB_IPNET_ROW2 {
++    SOCKADDR_INET Address;
++    NET_IFINDEX InterfaceIndex;
++    NET_LUID InterfaceLuid;
++    UCHAR PhysicalAddress[IF_MAX_PHYS_ADDRESS_LENGTH];
++    ULONG PhysicalAddressLength;
++    NL_NEIGHBOR_STATE State;
++    _ANONYMOUS_UNION union {
++      _ANONYMOUS_STRUCT struct {
++	BOOLEAN IsRouter : 1;
++	BOOLEAN IsUnreachable : 1;
++      };
++      UCHAR Flags;
++    };
++    union {
++      ULONG LastReachable;
++      ULONG LastUnreachable;
++    } ReachabilityTime;
++  } MIB_IPNET_ROW2, *PMIB_IPNET_ROW2;
++
++  typedef struct _MIB_IPNET_TABLE2 {
++    ULONG NumEntries;
++    MIB_IPNET_ROW2 Table[ANY_SIZE];
++  } MIB_IPNET_TABLE2, *PMIB_IPNET_TABLE2;
++
++  typedef VOID (NETIOAPI_API_ *PIPINTERFACE_CHANGE_CALLBACK) (PVOID CallerContext, PMIB_IPINTERFACE_ROW Row, MIB_NOTIFICATION_TYPE NotificationType);
++  typedef VOID (NETIOAPI_API_ *PUNICAST_IPADDRESS_CHANGE_CALLBACK) (PVOID CallerContext, PMIB_UNICASTIPADDRESS_ROW Row, MIB_NOTIFICATION_TYPE NotificationType);
++  typedef VOID (NETIOAPI_API_ *PSTABLE_UNICAST_IPADDRESS_TABLE_CALLBACK) (PVOID CallerContext, PMIB_UNICASTIPADDRESS_TABLE AddressTable);
++
++  typedef VOID (NETIOAPI_API_ *PTEREDO_PORT_CHANGE_CALLBACK) (PVOID CallerContext, USHORT Port, MIB_NOTIFICATION_TYPE NotificationType);
++  typedef VOID (NETIOAPI_API_ *PIPFORWARD_CHANGE_CALLBACK) (PVOID CallerContext, PMIB_IPFORWARD_ROW2 Row, MIB_NOTIFICATION_TYPE NotificationType);
++
++  NETIO_STATUS NETIOAPI_API_ GetIfEntry2 (PMIB_IF_ROW2 Row);
++  NETIO_STATUS NETIOAPI_API_ GetIfTable2 (PMIB_IF_TABLE2 *Table);
++  NETIO_STATUS NETIOAPI_API_ GetIfTable2Ex (MIB_IF_TABLE_LEVEL Level, PMIB_IF_TABLE2 *Table);
++  NETIO_STATUS NETIOAPI_API_ GetIfStackTable (PMIB_IFSTACK_TABLE *Table);
++  NETIO_STATUS NETIOAPI_API_ GetInvertedIfStackTable (PMIB_INVERTEDIFSTACK_TABLE *Table);
++  NETIO_STATUS NETIOAPI_API_ GetIpInterfaceEntry (PMIB_IPINTERFACE_ROW Row);
++  NETIO_STATUS NETIOAPI_API_ GetIpInterfaceTable (ADDRESS_FAMILY Family, PMIB_IPINTERFACE_TABLE *Table);
++  VOID NETIOAPI_API_ InitializeIpInterfaceEntry (PMIB_IPINTERFACE_ROW Row);
++  NETIO_STATUS NETIOAPI_API_ NotifyIpInterfaceChange (ADDRESS_FAMILY Family, PIPINTERFACE_CHANGE_CALLBACK Callback, PVOID CallerContext, BOOLEAN InitialNotification, HANDLE *NotificationHandle);
++  NETIO_STATUS NETIOAPI_API_ SetIpInterfaceEntry (PMIB_IPINTERFACE_ROW Row);
++  NETIO_STATUS NETIOAPI_API_ GetIpNetworkConnectionBandwidthEstimates (NET_IFINDEX InterfaceIndex, ADDRESS_FAMILY AddressFamily, PMIB_IP_NETWORK_CONNECTION_BANDWIDTH_ESTIMATES BandwidthEstimates);
++  NETIO_STATUS NETIOAPI_API_ CreateUnicastIpAddressEntry (CONST MIB_UNICASTIPADDRESS_ROW *Row);
++  NETIO_STATUS NETIOAPI_API_ DeleteUnicastIpAddressEntry (CONST MIB_UNICASTIPADDRESS_ROW *Row);
++  NETIO_STATUS NETIOAPI_API_ GetUnicastIpAddressEntry (PMIB_UNICASTIPADDRESS_ROW Row);
++  NETIO_STATUS NETIOAPI_API_ GetUnicastIpAddressTable (ADDRESS_FAMILY Family, PMIB_UNICASTIPADDRESS_TABLE *Table);
++  VOID NETIOAPI_API_ InitializeUnicastIpAddressEntry (PMIB_UNICASTIPADDRESS_ROW Row);
++  NETIO_STATUS NETIOAPI_API_ NotifyUnicastIpAddressChange (ADDRESS_FAMILY Family, PUNICAST_IPADDRESS_CHANGE_CALLBACK Callback, PVOID CallerContext, BOOLEAN InitialNotification, HANDLE *NotificationHandle);
++  NETIO_STATUS NETIOAPI_API_ CreateAnycastIpAddressEntry (CONST MIB_ANYCASTIPADDRESS_ROW *Row);
++  NETIO_STATUS NETIOAPI_API_ DeleteAnycastIpAddressEntry (CONST MIB_ANYCASTIPADDRESS_ROW *Row);
++  NETIO_STATUS NETIOAPI_API_ GetAnycastIpAddressEntry (PMIB_ANYCASTIPADDRESS_ROW Row);
++  NETIO_STATUS NETIOAPI_API_ GetAnycastIpAddressTable (ADDRESS_FAMILY Family, PMIB_ANYCASTIPADDRESS_TABLE *Table);
++  NETIO_STATUS NETIOAPI_API_ NotifyStableUnicastIpAddressTable (ADDRESS_FAMILY Family, PMIB_UNICASTIPADDRESS_TABLE *Table, PSTABLE_UNICAST_IPADDRESS_TABLE_CALLBACK CallerCallback, PVOID CallerContext, HANDLE *NotificationHandle);
++  NETIO_STATUS NETIOAPI_API_ SetUnicastIpAddressEntry (CONST MIB_UNICASTIPADDRESS_ROW *Row);
++  NETIO_STATUS NETIOAPI_API_ GetMulticastIpAddressEntry (PMIB_MULTICASTIPADDRESS_ROW Row);
++  NETIO_STATUS NETIOAPI_API_ GetMulticastIpAddressTable (ADDRESS_FAMILY Family, PMIB_MULTICASTIPADDRESS_TABLE *Table);
++  NETIO_STATUS NETIOAPI_API_ CreateIpForwardEntry2 (CONST MIB_IPFORWARD_ROW2 *Row);
++  NETIO_STATUS NETIOAPI_API_ DeleteIpForwardEntry2 (CONST MIB_IPFORWARD_ROW2 *Row);
++  NETIO_STATUS NETIOAPI_API_ GetBestRoute2 (NET_LUID *InterfaceLuid, NET_IFINDEX InterfaceIndex, CONST SOCKADDR_INET *SourceAddress, CONST SOCKADDR_INET *DestinationAddress, ULONG AddressSortOptions, PMIB_IPFORWARD_ROW2 BestRoute, SOCKADDR_INET *BestSourceAddress);
++  NETIO_STATUS NETIOAPI_API_ GetIpForwardEntry2 (PMIB_IPFORWARD_ROW2 Row);
++  NETIO_STATUS NETIOAPI_API_ GetIpForwardTable2 (ADDRESS_FAMILY Family, PMIB_IPFORWARD_TABLE2 *Table);
++  VOID NETIOAPI_API_ InitializeIpForwardEntry (PMIB_IPFORWARD_ROW2 Row);
++  NETIO_STATUS NETIOAPI_API_ NotifyRouteChange2 (ADDRESS_FAMILY AddressFamily, PIPFORWARD_CHANGE_CALLBACK Callback, PVOID CallerContext, BOOLEAN InitialNotification, HANDLE *NotificationHandle);
++  NETIO_STATUS NETIOAPI_API_ SetIpForwardEntry2 (CONST MIB_IPFORWARD_ROW2 *Route);
++  NETIO_STATUS NETIOAPI_API_ FlushIpPathTable (ADDRESS_FAMILY Family);
++  NETIO_STATUS NETIOAPI_API_ GetIpPathEntry (PMIB_IPPATH_ROW Row);
++  NETIO_STATUS NETIOAPI_API_ GetIpPathTable (ADDRESS_FAMILY Family, PMIB_IPPATH_TABLE *Table);
++  NETIO_STATUS NETIOAPI_API_ CreateIpNetEntry2 (CONST MIB_IPNET_ROW2 *Row);
++  NETIO_STATUS NETIOAPI_API_ DeleteIpNetEntry2 (CONST MIB_IPNET_ROW2 *Row);
++  NETIO_STATUS NETIOAPI_API_ FlushIpNetTable2 (ADDRESS_FAMILY Family, NET_IFINDEX InterfaceIndex);
++  NETIO_STATUS NETIOAPI_API_ GetIpNetEntry2 (PMIB_IPNET_ROW2 Row);
++  NETIO_STATUS NETIOAPI_API_ GetIpNetTable2 (ADDRESS_FAMILY Family, PMIB_IPNET_TABLE2 *Table);
++  NETIO_STATUS NETIOAPI_API_ ResolveIpNetEntry2 (PMIB_IPNET_ROW2 Row, CONST SOCKADDR_INET *SourceAddress);
++  NETIO_STATUS NETIOAPI_API_ SetIpNetEntry2 (PMIB_IPNET_ROW2 Row);
++  NETIO_STATUS NETIOAPI_API_ NotifyTeredoPortChange (PTEREDO_PORT_CHANGE_CALLBACK Callback, PVOID CallerContext, BOOLEAN InitialNotification, HANDLE *NotificationHandle);
++  NETIO_STATUS NETIOAPI_API_ GetTeredoPort (USHORT *Port);
++  NETIO_STATUS NETIOAPI_API_ CancelMibChangeNotify2 (HANDLE NotificationHandle);
++  VOID NETIOAPI_API_ FreeMibTable (PVOID Memory);
++  NETIO_STATUS NETIOAPI_API_ CreateSortedAddressPairs (const PSOCKADDR_IN6 SourceAddressList, ULONG SourceAddressCount, const PSOCKADDR_IN6 DestinationAddressList, ULONG DestinationAddressCount, ULONG AddressSortOptions, PSOCKADDR_IN6_PAIR *SortedAddressPairList, ULONG *SortedAddressPairCount);
++#endif
++
++  NETIO_STATUS NETIOAPI_API_ ConvertInterfaceNameToLuidA (CONST CHAR *InterfaceName, NET_LUID *InterfaceLuid);
++  NETIO_STATUS NETIOAPI_API_ ConvertInterfaceNameToLuidW (CONST WCHAR *InterfaceName, NET_LUID *InterfaceLuid);
++  NETIO_STATUS NETIOAPI_API_ ConvertInterfaceLuidToNameA (CONST NET_LUID *InterfaceLuid, PSTR InterfaceName, SIZE_T Length);
++  NETIO_STATUS NETIOAPI_API_ ConvertInterfaceLuidToNameW (CONST NET_LUID *InterfaceLuid, PWSTR InterfaceName, SIZE_T Length);
++  NETIO_STATUS NETIOAPI_API_ ConvertInterfaceLuidToIndex (CONST NET_LUID *InterfaceLuid, PNET_IFINDEX InterfaceIndex);
++  NETIO_STATUS NETIOAPI_API_ ConvertInterfaceIndexToLuid (NET_IFINDEX InterfaceIndex, PNET_LUID InterfaceLuid);
++  NETIO_STATUS NETIOAPI_API_ ConvertInterfaceLuidToAlias (CONST NET_LUID *InterfaceLuid, PWSTR InterfaceAlias, SIZE_T Length);
++  NETIO_STATUS NETIOAPI_API_ ConvertInterfaceAliasToLuid (CONST WCHAR *InterfaceAlias, PNET_LUID InterfaceLuid);
++  NETIO_STATUS NETIOAPI_API_ ConvertInterfaceLuidToGuid (CONST NET_LUID *InterfaceLuid, GUID *InterfaceGuid);
++  NETIO_STATUS NETIOAPI_API_ ConvertInterfaceGuidToLuid (CONST GUID *InterfaceGuid, PNET_LUID InterfaceLuid);
++  NET_IFINDEX NETIOAPI_API_ if_nametoindex (PCSTR InterfaceName);
++  PCHAR NETIOAPI_API_ if_indextoname (NET_IFINDEX InterfaceIndex, PCHAR InterfaceName);
++  NET_IF_COMPARTMENT_ID NETIOAPI_API_ GetCurrentThreadCompartmentId (VOID);
++  NETIO_STATUS NETIOAPI_API_ SetCurrentThreadCompartmentId (NET_IF_COMPARTMENT_ID CompartmentId);
++  NET_IF_COMPARTMENT_ID NETIOAPI_API_ GetSessionCompartmentId (ULONG SessionId);
++  NETIO_STATUS NETIOAPI_API_ SetSessionCompartmentId (ULONG SessionId, NET_IF_COMPARTMENT_ID CompartmentId);
++  NETIO_STATUS NETIOAPI_API_ GetNetworkInformation (CONST NET_IF_NETWORK_GUID *NetworkGuid, PNET_IF_COMPARTMENT_ID CompartmentId, PULONG SiteId, PWCHAR NetworkName, ULONG Length);
++  NETIO_STATUS NETIOAPI_API_ SetNetworkInformation (CONST NET_IF_NETWORK_GUID *NetworkGuid, NET_IF_COMPARTMENT_ID CompartmentId, CONST WCHAR *NetworkName);
++  NETIO_STATUS NETIOAPI_API_ ConvertLengthToIpv4Mask (ULONG MaskLength, PULONG Mask);
++  NETIO_STATUS NETIOAPI_API_ ConvertIpv4MaskToLength (ULONG Mask, PUINT8 MaskLength);
++
++#ifdef __cplusplus
++}
++#endif
++
++/*
++#endif
++ */
++#endif
+--- w32api-5.0.2/include/basetsd.h.orig	2017-11-09 02:35:48.000000000 +0100
++++ w32api-5.0.2/include/basetsd.h	2018-09-21 22:06:01.713431915 +0200
+@@ -47,14 +47,14 @@
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+-typedef signed char INT8;
+-typedef signed short INT16;
++typedef signed char INT8, *PINT8;
++typedef signed short INT16, *PINT16;
+ typedef int LONG32, *PLONG32;
+ #ifndef XFree86Server
+ typedef int INT32, *PINT32;
+ #endif /* ndef XFree86Server */
+-typedef unsigned char UINT8;
+-typedef unsigned short UINT16;
++typedef unsigned char UINT8, *PUINT8;
++typedef unsigned short UINT16, *PUINT16;
+ typedef unsigned int ULONG32, *PULONG32;
+ typedef unsigned int DWORD32, *PDWORD32;
+ typedef unsigned int UINT32, *PUINT32;
+--- w32api-5.0.2/include/ipifcons.h.orig	2017-11-09 02:35:48.000000000 +0100
++++ w32api-5.0.2/include/ipifcons.h	2018-09-22 08:35:34.133000622 +0200
+@@ -13,6 +13,12 @@
+ #pragma GCC system_header
+ #endif
+ 
++#ifdef __cplusplus
++extern "C" {
++#endif
++
++typedef ULONG IFTYPE;
++
+ #define MIN_IF_TYPE 1
+ #define IF_TYPE_OTHER 1
+ #define IF_TYPE_REGULAR_1822 2
+@@ -196,4 +202,7 @@
+ #define MIB_IF_TYPE_LOOPBACK 24
+ #define MIB_IF_TYPE_SLIP 28
+ 
++#ifdef __cplusplus
++}
++#endif
+ #endif
+--- w32api-5.0.2/include/ntddndis.h.orig	1970-01-01 01:00:00.000000000 +0100
++++ w32api-5.0.2/include/ntddndis.h	2018-09-22 09:39:12.409623691 +0200
+@@ -0,0 +1,4589 @@
++/* https://github.com/Alexpux/mingw-w64/raw/master/mingw-w64-headers/include/ntddndis.h */
++/**
++* This file is part of the mingw-w64 runtime package.
++* No warranty is given; refer to the file DISCLAIMER within this package.
++*/
++
++#ifndef _NTDDNDIS_
++#define _NTDDNDIS_
++
++/*
++#include <winapifamily.h>
++
++#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
++ */
++
++#ifdef __cplusplus
++extern "C" {
++#endif
++
++#ifndef NDIS_SUPPORT_NDIS6
++#if defined (UM_NDIS60) || defined (UM_NDIS61) || defined (UM_NDIS620) || defined (UM_NDIS630)
++#define NDIS_SUPPORT_NDIS6 1
++#else
++#define NDIS_SUPPORT_NDIS6 0
++#endif
++#endif
++
++#if NTDDI_VERSION >= 0x06000000 || NDIS_SUPPORT_NDIS6
++#include <ifdef.h>
++/*
++#include <devpkey.h>
++#include <pciprop.h>
++ */
++#endif
++
++#ifndef NDIS_SUPPORT_NDIS61
++#if defined (UM_NDIS61) || defined (UM_NDIS620) || defined (UM_NDIS630)
++#define NDIS_SUPPORT_NDIS61 1
++#else
++#define NDIS_SUPPORT_NDIS61 0
++#endif
++#endif
++
++#ifndef NDIS_SUPPORT_NDIS620
++#if defined (UM_NDIS620) || defined (UM_NDIS630)
++#define NDIS_SUPPORT_NDIS620 1
++#else
++#define NDIS_SUPPORT_NDIS620 0
++#endif
++#endif
++
++#ifndef NDIS_SUPPORT_NDIS630
++#ifdef UM_NDIS630
++#define NDIS_SUPPORT_NDIS630 1
++#else
++#define NDIS_SUPPORT_NDIS630 0
++#endif
++#endif
++
++#define DD_NDIS_DEVICE_NAME "\\Device\\UNKNOWN"
++
++#define _NDIS_CONTROL_CODE(request, method) CTL_CODE (FILE_DEVICE_PHYSICAL_NETCARD, request, method, FILE_ANY_ACCESS)
++
++#define IOCTL_NDIS_QUERY_GLOBAL_STATS _NDIS_CONTROL_CODE (0, METHOD_OUT_DIRECT)
++#define IOCTL_NDIS_QUERY_ALL_STATS _NDIS_CONTROL_CODE (1, METHOD_OUT_DIRECT)
++#define IOCTL_NDIS_DO_PNP_OPERATION _NDIS_CONTROL_CODE (2, METHOD_BUFFERED)
++#define IOCTL_NDIS_QUERY_SELECTED_STATS _NDIS_CONTROL_CODE (3, METHOD_OUT_DIRECT)
++#define IOCTL_NDIS_ENUMERATE_INTERFACES _NDIS_CONTROL_CODE (4, METHOD_BUFFERED)
++#define IOCTL_NDIS_ADD_TDI_DEVICE _NDIS_CONTROL_CODE (5, METHOD_BUFFERED)
++#define IOCTL_NDIS_GET_LOG_DATA _NDIS_CONTROL_CODE (7, METHOD_OUT_DIRECT)
++#define IOCTL_NDIS_GET_VERSION _NDIS_CONTROL_CODE (8, METHOD_BUFFERED)
++
++#define IOCTL_NDIS_RESERVED1 _NDIS_CONTROL_CODE (9, METHOD_BUFFERED)
++#define IOCTL_NDIS_RESERVED2 _NDIS_CONTROL_CODE (0xa, METHOD_BUFFERED)
++#define IOCTL_NDIS_RESERVED3 _NDIS_CONTROL_CODE (0xb, METHOD_BUFFERED)
++#define IOCTL_NDIS_RESERVED4 _NDIS_CONTROL_CODE (0xc, METHOD_BUFFERED)
++#define IOCTL_NDIS_RESERVED5 CTL_CODE (FILE_DEVICE_PHYSICAL_NETCARD, 0xd, METHOD_BUFFERED, FILE_ANY_ACCESS)
++#define IOCTL_NDIS_RESERVED6 CTL_CODE (FILE_DEVICE_PHYSICAL_NETCARD, 0xe, METHOD_BUFFERED, FILE_WRITE_ACCESS)
++#define IOCTL_NDIS_RESERVED7 _NDIS_CONTROL_CODE (0xf, METHOD_OUT_DIRECT)
++#define IOCTL_NDIS_RESERVED8 _NDIS_CONTROL_CODE (0x10, METHOD_BUFFERED)
++#define IOCTL_NDIS_RESERVED9 _NDIS_CONTROL_CODE (0x11, METHOD_BUFFERED)
++#define IOCTL_NDIS_RESERVED10 _NDIS_CONTROL_CODE (0x12, METHOD_BUFFERED)
++#define IOCTL_NDIS_RESERVED11 _NDIS_CONTROL_CODE (0x13, METHOD_BUFFERED)
++#define IOCTL_NDIS_RESERVED12 _NDIS_CONTROL_CODE (0x14, METHOD_BUFFERED)
++#define IOCTL_NDIS_RESERVED13 _NDIS_CONTROL_CODE (0x15, METHOD_BUFFERED)
++#define IOCTL_NDIS_RESERVED14 _NDIS_CONTROL_CODE (0x16, METHOD_BUFFERED)
++#define IOCTL_NDIS_RESERVED15 _NDIS_CONTROL_CODE (0x17, METHOD_BUFFERED)
++#define IOCTL_NDIS_RESERVED16 _NDIS_CONTROL_CODE (0x18, METHOD_BUFFERED)
++#define IOCTL_NDIS_RESERVED17 _NDIS_CONTROL_CODE (0x19, METHOD_BUFFERED)
++#define IOCTL_NDIS_RESERVED18 _NDIS_CONTROL_CODE (0x1a, METHOD_BUFFERED)
++#define IOCTL_NDIS_RESERVED19 _NDIS_CONTROL_CODE (0x1b, METHOD_BUFFERED)
++#define IOCTL_NDIS_RESERVED20 _NDIS_CONTROL_CODE (0x1c, METHOD_BUFFERED)
++#define IOCTL_NDIS_RESERVED21 _NDIS_CONTROL_CODE (0x1d, METHOD_BUFFERED)
++#define IOCTL_NDIS_RESERVED22 _NDIS_CONTROL_CODE (0x1e, METHOD_BUFFERED)
++#define IOCTL_NDIS_RESERVED23 _NDIS_CONTROL_CODE (0x1f, METHOD_BUFFERED)
++#define IOCTL_NDIS_RESERVED24 _NDIS_CONTROL_CODE (0x20, METHOD_BUFFERED)
++#define IOCTL_NDIS_RESERVED25 _NDIS_CONTROL_CODE (0x21, METHOD_BUFFERED)
++#define IOCTL_NDIS_RESERVED26 _NDIS_CONTROL_CODE (0x22, METHOD_BUFFERED)
++#define IOCTL_NDIS_RESERVED27 _NDIS_CONTROL_CODE (0x23, METHOD_BUFFERED)
++#define IOCTL_NDIS_RESERVED28 _NDIS_CONTROL_CODE (0x24, METHOD_BUFFERED)
++#define IOCTL_NDIS_RESERVED29 _NDIS_CONTROL_CODE (0x25, METHOD_BUFFERED)
++#define IOCTL_NDIS_RESERVED30 _NDIS_CONTROL_CODE (0x26, METHOD_BUFFERED)
++
++  typedef ULONG NDIS_OID, *PNDIS_OID;
++  typedef struct _NDIS_STATISTICS_VALUE {
++    NDIS_OID Oid;
++    ULONG DataLength;
++    UCHAR Data[1];
++  } NDIS_STATISTICS_VALUE;
++
++  typedef NDIS_STATISTICS_VALUE UNALIGNED *PNDIS_STATISTICS_VALUE;
++
++#if NTDDI_VERSION >= 0x06000000 || NDIS_SUPPORT_NDIS6
++  typedef struct _NDIS_STATISTICS_VALUE_EX {
++    NDIS_OID Oid;
++    ULONG DataLength;
++    ULONG Length;
++    UCHAR Data[1];
++  } NDIS_STATISTICS_VALUE_EX;
++
++  typedef NDIS_STATISTICS_VALUE_EX UNALIGNED *PNDIS_STATISTICS_VALUE_EX;
++#endif
++
++  typedef struct _NDIS_VAR_DATA_DESC {
++    USHORT Length;
++    USHORT MaximumLength;
++    ULONG_PTR Offset;
++  } NDIS_VAR_DATA_DESC, *PNDIS_VAR_DATA_DESC;
++
++#ifndef GUID_DEFINED
++/* not in mingw32, use replacement
++#include <guiddef.h>
++ */
++#include <basetyps.h>
++#endif
++
++#define NDIS_OBJECT_TYPE_DEFAULT 0x80
++#define NDIS_OBJECT_TYPE_MINIPORT_INIT_PARAMETERS 0x81
++#define NDIS_OBJECT_TYPE_SG_DMA_DESCRIPTION 0x83
++#define NDIS_OBJECT_TYPE_MINIPORT_INTERRUPT 0x84
++#define NDIS_OBJECT_TYPE_DEVICE_OBJECT_ATTRIBUTES 0x85
++#define NDIS_OBJECT_TYPE_BIND_PARAMETERS 0x86
++#define NDIS_OBJECT_TYPE_OPEN_PARAMETERS 0x87
++#define NDIS_OBJECT_TYPE_RSS_CAPABILITIES 0x88
++#define NDIS_OBJECT_TYPE_RSS_PARAMETERS 0x89
++#define NDIS_OBJECT_TYPE_MINIPORT_DRIVER_CHARACTERISTICS 0x8a
++#define NDIS_OBJECT_TYPE_FILTER_DRIVER_CHARACTERISTICS 0x8b
++#define NDIS_OBJECT_TYPE_FILTER_PARTIAL_CHARACTERISTICS 0x8c
++#define NDIS_OBJECT_TYPE_FILTER_ATTRIBUTES 0x8d
++#define NDIS_OBJECT_TYPE_CLIENT_CHIMNEY_OFFLOAD_GENERIC_CHARACTERISTICS 0x8e
++#define NDIS_OBJECT_TYPE_PROVIDER_CHIMNEY_OFFLOAD_GENERIC_CHARACTERISTICS 0x8f
++#define NDIS_OBJECT_TYPE_CO_PROTOCOL_CHARACTERISTICS 0x90
++#define NDIS_OBJECT_TYPE_CO_MINIPORT_CHARACTERISTICS 0x91
++#define NDIS_OBJECT_TYPE_MINIPORT_PNP_CHARACTERISTICS 0x92
++#define NDIS_OBJECT_TYPE_CLIENT_CHIMNEY_OFFLOAD_CHARACTERISTICS 0x93
++#define NDIS_OBJECT_TYPE_PROVIDER_CHIMNEY_OFFLOAD_CHARACTERISTICS 0x94
++#define NDIS_OBJECT_TYPE_PROTOCOL_DRIVER_CHARACTERISTICS 0x95
++#define NDIS_OBJECT_TYPE_REQUEST_EX 0x96
++#define NDIS_OBJECT_TYPE_OID_REQUEST 0x96
++#define NDIS_OBJECT_TYPE_TIMER_CHARACTERISTICS 0x97
++#define NDIS_OBJECT_TYPE_STATUS_INDICATION 0x98
++#define NDIS_OBJECT_TYPE_FILTER_ATTACH_PARAMETERS 0x99
++#define NDIS_OBJECT_TYPE_FILTER_PAUSE_PARAMETERS 0x9a
++#define NDIS_OBJECT_TYPE_FILTER_RESTART_PARAMETERS 0x9b
++#define NDIS_OBJECT_TYPE_PORT_CHARACTERISTICS 0x9c
++#define NDIS_OBJECT_TYPE_PORT_STATE 0x9d
++#define NDIS_OBJECT_TYPE_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES 0x9e
++#define NDIS_OBJECT_TYPE_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES 0x9f
++#define NDIS_OBJECT_TYPE_MINIPORT_ADAPTER_OFFLOAD_ATTRIBUTES 0xa0
++#define NDIS_OBJECT_TYPE_MINIPORT_ADAPTER_NATIVE_802_11_ATTRIBUTES 0xa1
++#define NDIS_OBJECT_TYPE_RESTART_GENERAL_ATTRIBUTES 0xa2
++#define NDIS_OBJECT_TYPE_PROTOCOL_RESTART_PARAMETERS 0xa3
++#define NDIS_OBJECT_TYPE_MINIPORT_ADD_DEVICE_REGISTRATION_ATTRIBUTES 0xa4
++#define NDIS_OBJECT_TYPE_CO_CALL_MANAGER_OPTIONAL_HANDLERS 0xa5
++#define NDIS_OBJECT_TYPE_CO_CLIENT_OPTIONAL_HANDLERS 0xa6
++#define NDIS_OBJECT_TYPE_OFFLOAD 0xa7
++#define NDIS_OBJECT_TYPE_OFFLOAD_ENCAPSULATION 0xa8
++#define NDIS_OBJECT_TYPE_CONFIGURATION_OBJECT 0xa9
++#define NDIS_OBJECT_TYPE_DRIVER_WRAPPER_OBJECT 0xaa
++#if NDIS_SUPPORT_NDIS61
++#define NDIS_OBJECT_TYPE_HD_SPLIT_ATTRIBUTES 0xab
++#endif
++#define NDIS_OBJECT_TYPE_NSI_NETWORK_RW_STRUCT 0xac
++#define NDIS_OBJECT_TYPE_NSI_COMPARTMENT_RW_STRUCT 0xad
++#define NDIS_OBJECT_TYPE_NSI_INTERFACE_PERSIST_RW_STRUCT 0xae
++#if NDIS_SUPPORT_NDIS61
++#define NDIS_OBJECT_TYPE_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES 0xaf
++#endif
++#if NDIS_SUPPORT_NDIS620
++#define NDIS_OBJECT_TYPE_SHARED_MEMORY_PROVIDER_CHARACTERISTICS 0xb0
++#define NDIS_OBJECT_TYPE_RSS_PROCESSOR_INFO 0xb1
++#endif
++#if NDIS_SUPPORT_NDIS630
++#define NDIS_OBJECT_TYPE_NDK_PROVIDER_CHARACTERISTICS 0xb2
++#define NDIS_OBJECT_TYPE_MINIPORT_ADAPTER_NDK_ATTRIBUTES 0xb3
++#define NDIS_OBJECT_TYPE_MINIPORT_SS_CHARACTERISTICS 0xb4
++#define NDIS_OBJECT_TYPE_QOS_CAPABILITIES 0xb5
++#define NDIS_OBJECT_TYPE_QOS_PARAMETERS 0xb6
++#define NDIS_OBJECT_TYPE_QOS_CLASSIFICATION_ELEMENT 0xb7
++#define NDIS_OBJECT_TYPE_SWITCH_OPTIONAL_HANDLERS 0xb8
++#define NDIS_OBJECT_TYPE_IOCTL_OID_INFO 0xb9
++#define NDIS_OBJECT_TYPE_LBFO_DIAGNOSTIC_OID 0xba
++#endif
++
++  typedef struct _NDIS_OBJECT_HEADER {
++    UCHAR Type;
++    UCHAR Revision;
++    USHORT Size;
++  } NDIS_OBJECT_HEADER, *PNDIS_OBJECT_HEADER;
++
++  typedef enum _NDIS_REQUEST_TYPE {
++    NdisRequestQueryInformation,
++    NdisRequestSetInformation,
++    NdisRequestQueryStatistics,
++    NdisRequestOpen,
++    NdisRequestClose,
++    NdisRequestSend,
++    NdisRequestTransferData,
++    NdisRequestReset,
++    NdisRequestGeneric1,
++    NdisRequestGeneric2,
++    NdisRequestGeneric3,
++    NdisRequestGeneric4
++#if NDIS_SUPPORT_NDIS6
++    , NdisRequestMethod
++#endif
++  } NDIS_REQUEST_TYPE, *PNDIS_REQUEST_TYPE;
++
++#define NDIS_OBJECT_REVISION_1 1
++
++#if NTDDI_VERSION >= 0x06000000 || NDIS_SUPPORT_NDIS6
++#define NDIS_STATISTICS_FLAGS_VALID_DIRECTED_FRAMES_RCV 0x00000001
++#define NDIS_STATISTICS_FLAGS_VALID_MULTICAST_FRAMES_RCV 0x00000002
++#define NDIS_STATISTICS_FLAGS_VALID_BROADCAST_FRAMES_RCV 0x00000004
++#define NDIS_STATISTICS_FLAGS_VALID_BYTES_RCV 0x00000008
++#define NDIS_STATISTICS_FLAGS_VALID_RCV_DISCARDS 0x00000010
++#define NDIS_STATISTICS_FLAGS_VALID_RCV_ERROR 0x00000020
++#define NDIS_STATISTICS_FLAGS_VALID_DIRECTED_FRAMES_XMIT 0x00000040
++#define NDIS_STATISTICS_FLAGS_VALID_MULTICAST_FRAMES_XMIT 0x00000080
++#define NDIS_STATISTICS_FLAGS_VALID_BROADCAST_FRAMES_XMIT 0x00000100
++#define NDIS_STATISTICS_FLAGS_VALID_BYTES_XMIT 0x00000200
++#define NDIS_STATISTICS_FLAGS_VALID_XMIT_ERROR 0x00000400
++#define NDIS_STATISTICS_FLAGS_VALID_XMIT_DISCARDS 0x00008000
++#define NDIS_STATISTICS_FLAGS_VALID_DIRECTED_BYTES_RCV 0x00010000
++#define NDIS_STATISTICS_FLAGS_VALID_MULTICAST_BYTES_RCV 0x00020000
++#define NDIS_STATISTICS_FLAGS_VALID_BROADCAST_BYTES_RCV 0x00040000
++#define NDIS_STATISTICS_FLAGS_VALID_DIRECTED_BYTES_XMIT 0x00080000
++#define NDIS_STATISTICS_FLAGS_VALID_MULTICAST_BYTES_XMIT 0x00100000
++#define NDIS_STATISTICS_FLAGS_VALID_BROADCAST_BYTES_XMIT 0x00200000
++
++#define NDIS_INTERRUPT_MODERATION_CHANGE_NEEDS_RESET 0x00000001
++#define NDIS_INTERRUPT_MODERATION_CHANGE_NEEDS_REINITIALIZE 0x00000002
++
++#define NDIS_STATISTICS_INFO_REVISION_1 1
++#define NDIS_INTERRUPT_MODERATION_PARAMETERS_REVISION_1 1
++#define NDIS_TIMEOUT_DPC_REQUEST_CAPABILITIES_REVISION_1 1
++#define NDIS_OBJECT_TYPE_PCI_DEVICE_CUSTOM_PROPERTIES_REVISION_1 1
++#if NTDDI_VERSION >= 0x06010000 || NDIS_SUPPORT_NDIS620
++#define NDIS_OBJECT_TYPE_PCI_DEVICE_CUSTOM_PROPERTIES_REVISION_2 2
++#endif
++#if NDIS_SUPPORT_NDIS630
++#define NDIS_RSC_STATISTICS_REVISION_1 1
++#endif
++
++#define NDIS_SIZEOF_STATISTICS_INFO_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_STATISTICS_INFO, ifHCOutBroadcastOctets)
++#define NDIS_SIZEOF_INTERRUPT_MODERATION_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_INTERRUPT_MODERATION_PARAMETERS, InterruptModeration)
++#define NDIS_SIZEOF_TIMEOUT_DPC_REQUEST_CAPABILITIES_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_TIMEOUT_DPC_REQUEST_CAPABILITIES, TimeoutArray)
++#define NDIS_SIZEOF_PCI_DEVICE_CUSTOM_PROPERTIES_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_PCI_DEVICE_CUSTOM_PROPERTIES, MaxLinkWidth)
++#if NTDDI_VERSION >= 0x06010000 || NDIS_SUPPORT_NDIS620
++#define NDIS_SIZEOF_PCI_DEVICE_CUSTOM_PROPERTIES_REVISION_2 RTL_SIZEOF_THROUGH_FIELD (NDIS_PCI_DEVICE_CUSTOM_PROPERTIES, MaxInterruptMessages)
++#endif
++#if NDIS_SUPPORT_NDIS630
++#define NDIS_SIZEOF_RSC_STATISTICS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_RSC_STATISTICS_INFO, Aborts)
++#endif
++
++  typedef struct _NDIS_STATISTICS_INFO {
++    NDIS_OBJECT_HEADER Header;
++    ULONG SupportedStatistics;
++    ULONG64 ifInDiscards;
++    ULONG64 ifInErrors;
++    ULONG64 ifHCInOctets;
++    ULONG64 ifHCInUcastPkts;
++    ULONG64 ifHCInMulticastPkts;
++    ULONG64 ifHCInBroadcastPkts;
++    ULONG64 ifHCOutOctets;
++    ULONG64 ifHCOutUcastPkts;
++    ULONG64 ifHCOutMulticastPkts;
++    ULONG64 ifHCOutBroadcastPkts;
++    ULONG64 ifOutErrors;
++    ULONG64 ifOutDiscards;
++    ULONG64 ifHCInUcastOctets;
++    ULONG64 ifHCInMulticastOctets;
++    ULONG64 ifHCInBroadcastOctets;
++    ULONG64 ifHCOutUcastOctets;
++    ULONG64 ifHCOutMulticastOctets;
++    ULONG64 ifHCOutBroadcastOctets;
++  } NDIS_STATISTICS_INFO, *PNDIS_STATISTICS_INFO;
++
++#if NDIS_SUPPORT_NDIS630
++  typedef struct _NDIS_RSC_STATISTICS_INFO {
++    NDIS_OBJECT_HEADER Header;
++    ULONG64 CoalescedPkts;
++    ULONG64 CoalescedOctets;
++    ULONG64 CoalesceEvents;
++    ULONG64 Aborts;
++  } NDIS_RSC_STATISTICS_INFO, *PNDIS_RSC_STATISTICS_INFO;
++#endif
++
++  typedef enum _NDIS_INTERRUPT_MODERATION {
++    NdisInterruptModerationUnknown,
++    NdisInterruptModerationNotSupported,
++    NdisInterruptModerationEnabled,
++    NdisInterruptModerationDisabled
++  } NDIS_INTERRUPT_MODERATION, *PNDIS_INTERRUPT_MODERATION;
++
++  typedef struct _NDIS_INTERRUPT_MODERATION_PARAMETERS {
++    NDIS_OBJECT_HEADER Header;
++    ULONG Flags;
++    NDIS_INTERRUPT_MODERATION InterruptModeration;
++  } NDIS_INTERRUPT_MODERATION_PARAMETERS, *PNDIS_INTERRUPT_MODERATION_PARAMETERS;
++
++  typedef struct _NDIS_TIMEOUT_DPC_REQUEST_CAPABILITIES {
++    NDIS_OBJECT_HEADER Header;
++    ULONG Flags;
++    ULONG TimeoutArrayLength;
++    ULONG TimeoutArray[1];
++  } NDIS_TIMEOUT_DPC_REQUEST_CAPABILITIES, *PNDIS_TIMEOUT_DPC_REQUEST_CAPABILITIES;
++
++  typedef struct _NDIS_PCI_DEVICE_CUSTOM_PROPERTIES {
++    NDIS_OBJECT_HEADER Header;
++    UINT32 DeviceType;
++    UINT32 CurrentSpeedAndMode;
++    UINT32 CurrentPayloadSize;
++    UINT32 MaxPayloadSize;
++    UINT32 MaxReadRequestSize;
++    UINT32 CurrentLinkSpeed;
++    UINT32 CurrentLinkWidth;
++    UINT32 MaxLinkSpeed;
++    UINT32 MaxLinkWidth;
++#if (NTDDI_VERSION >= 0x06010000 || NDIS_SUPPORT_NDIS620)
++    UINT32 PciExpressVersion;
++    UINT32 InterruptType;
++    UINT32 MaxInterruptMessages;
++#endif
++  } NDIS_PCI_DEVICE_CUSTOM_PROPERTIES, *PNDIS_PCI_DEVICE_CUSTOM_PROPERTIES;
++#endif
++
++#define OID_GEN_SUPPORTED_LIST 0x00010101
++#define OID_GEN_HARDWARE_STATUS 0x00010102
++#define OID_GEN_MEDIA_SUPPORTED 0x00010103
++#define OID_GEN_MEDIA_IN_USE 0x00010104
++#define OID_GEN_MAXIMUM_LOOKAHEAD 0x00010105
++#define OID_GEN_MAXIMUM_FRAME_SIZE 0x00010106
++#define OID_GEN_LINK_SPEED 0x00010107
++#define OID_GEN_TRANSMIT_BUFFER_SPACE 0x00010108
++#define OID_GEN_RECEIVE_BUFFER_SPACE 0x00010109
++#define OID_GEN_TRANSMIT_BLOCK_SIZE 0x0001010a
++#define OID_GEN_RECEIVE_BLOCK_SIZE 0x0001010b
++#define OID_GEN_VENDOR_ID 0x0001010c
++#define OID_GEN_VENDOR_DESCRIPTION 0x0001010d
++#define OID_GEN_CURRENT_PACKET_FILTER 0x0001010e
++#define OID_GEN_CURRENT_LOOKAHEAD 0x0001010f
++#define OID_GEN_DRIVER_VERSION 0x00010110
++#define OID_GEN_MAXIMUM_TOTAL_SIZE 0x00010111
++#define OID_GEN_PROTOCOL_OPTIONS 0x00010112
++#define OID_GEN_MAC_OPTIONS 0x00010113
++#define OID_GEN_MEDIA_CONNECT_STATUS 0x00010114
++#define OID_GEN_MAXIMUM_SEND_PACKETS 0x00010115
++
++#define OID_GEN_VENDOR_DRIVER_VERSION 0x00010116
++#define OID_GEN_SUPPORTED_GUIDS 0x00010117
++#define OID_GEN_NETWORK_LAYER_ADDRESSES 0x00010118
++#define OID_GEN_TRANSPORT_HEADER_OFFSET 0x00010119
++#define OID_GEN_MEDIA_CAPABILITIES 0x00010201
++#define OID_GEN_PHYSICAL_MEDIUM 0x00010202
++#if NTDDI_VERSION >= 0x06000000 || NDIS_SUPPORT_NDIS6
++#define OID_GEN_RECEIVE_SCALE_CAPABILITIES 0x00010203
++#define OID_GEN_RECEIVE_SCALE_PARAMETERS 0x00010204
++#define OID_GEN_MAC_ADDRESS 0x00010205
++#define OID_GEN_MAX_LINK_SPEED 0x00010206
++#define OID_GEN_LINK_STATE 0x00010207
++#define OID_GEN_LINK_PARAMETERS 0x00010208
++#define OID_GEN_INTERRUPT_MODERATION 0x00010209
++#define OID_GEN_NDIS_RESERVED_3 0x0001020a
++#define OID_GEN_NDIS_RESERVED_4 0x0001020b
++#define OID_GEN_NDIS_RESERVED_5 0x0001020c
++#define OID_GEN_ENUMERATE_PORTS 0x0001020d
++#define OID_GEN_PORT_STATE 0x0001020e
++#define OID_GEN_PORT_AUTHENTICATION_PARAMETERS 0x0001020f
++#define OID_GEN_TIMEOUT_DPC_REQUEST_CAPABILITIES 0x00010210
++#define OID_GEN_PCI_DEVICE_CUSTOM_PROPERTIES 0x00010211
++#define OID_GEN_NDIS_RESERVED_6 0x00010212
++#define OID_GEN_PHYSICAL_MEDIUM_EX 0x00010213
++#endif
++
++#define OID_GEN_MACHINE_NAME 0x0001021a
++#define OID_GEN_RNDIS_CONFIG_PARAMETER 0x0001021b
++#define OID_GEN_VLAN_ID 0x0001021c
++#if NTDDI_VERSION >= 0x06000000 || NDIS_SUPPORT_NDIS6
++#define OID_GEN_RECEIVE_HASH 0x0001021f
++#define OID_GEN_MINIPORT_RESTART_ATTRIBUTES 0x0001021d
++
++#if NDIS_SUPPORT_NDIS61
++#define OID_GEN_HD_SPLIT_PARAMETERS 0x0001021e
++#define OID_GEN_HD_SPLIT_CURRENT_CONFIG 0x00010220
++#endif
++
++#define OID_GEN_PROMISCUOUS_MODE 0x00010280
++#define OID_GEN_LAST_CHANGE 0x00010281
++#define OID_GEN_DISCONTINUITY_TIME 0x00010282
++#define OID_GEN_OPERATIONAL_STATUS 0x00010283
++#define OID_GEN_XMIT_LINK_SPEED 0x00010284
++#define OID_GEN_RCV_LINK_SPEED 0x00010285
++#define OID_GEN_UNKNOWN_PROTOS 0x00010286
++#define OID_GEN_INTERFACE_INFO 0x00010287
++#define OID_GEN_ADMIN_STATUS 0x00010288
++#define OID_GEN_ALIAS 0x00010289
++#define OID_GEN_MEDIA_CONNECT_STATUS_EX 0x0001028a
++#define OID_GEN_LINK_SPEED_EX 0x0001028b
++#define OID_GEN_MEDIA_DUPLEX_STATE 0x0001028c
++#define OID_GEN_IP_OPER_STATUS 0x0001028d
++
++#define OID_WWAN_DRIVER_CAPS 0x0e010100
++#define OID_WWAN_DEVICE_CAPS 0x0e010101
++#define OID_WWAN_READY_INFO 0x0e010102
++#define OID_WWAN_RADIO_STATE 0x0e010103
++#define OID_WWAN_PIN 0x0e010104
++#define OID_WWAN_PIN_LIST 0x0e010105
++#define OID_WWAN_HOME_PROVIDER 0x0e010106
++#define OID_WWAN_PREFERRED_PROVIDERS 0x0e010107
++#define OID_WWAN_VISIBLE_PROVIDERS 0x0e010108
++#define OID_WWAN_REGISTER_STATE 0x0e010109
++#define OID_WWAN_PACKET_SERVICE 0x0e01010a
++#define OID_WWAN_SIGNAL_STATE 0x0e01010b
++#define OID_WWAN_CONNECT 0x0e01010c
++#define OID_WWAN_PROVISIONED_CONTEXTS 0x0e01010d
++#define OID_WWAN_SERVICE_ACTIVATION 0x0e01010e
++#define OID_WWAN_SMS_CONFIGURATION 0x0e01010f
++#define OID_WWAN_SMS_READ 0x0e010110
++#define OID_WWAN_SMS_SEND 0x0e010111
++#define OID_WWAN_SMS_DELETE 0x0e010112
++#define OID_WWAN_SMS_STATUS 0x0e010113
++#define OID_WWAN_VENDOR_SPECIFIC 0x0e010114
++#endif
++
++#if NTDDI_VERSION >= 0x06020000 || NDIS_SUPPORT_NDIS630
++#define OID_WWAN_AUTH_CHALLENGE 0x0e010115
++#define OID_WWAN_ENUMERATE_DEVICE_SERVICES 0x0e010116
++#define OID_WWAN_SUBSCRIBE_DEVICE_SERVICE_EVENTS 0x0e010117
++#define OID_WWAN_DEVICE_SERVICE_COMMAND 0x0e010118
++#define OID_WWAN_USSD 0x0e010119
++#define OID_WWAN_PIN_EX 0x0e010121
++#define OID_WWAN_ENUMERATE_DEVICE_SERVICE_COMMANDS 0x0e010122
++#define OID_WWAN_DEVICE_SERVICE_SESSION 0x0e010123
++#define OID_WWAN_DEVICE_SERVICE_SESSION_WRITE 0x0e010124
++#define OID_WWAN_PREFERRED_MULTICARRIER_PROVIDERS 0x0e010125
++#endif
++
++#define OID_GEN_XMIT_OK 0x00020101
++#define OID_GEN_RCV_OK 0x00020102
++#define OID_GEN_XMIT_ERROR 0x00020103
++#define OID_GEN_RCV_ERROR 0x00020104
++#define OID_GEN_RCV_NO_BUFFER 0x00020105
++#if NTDDI_VERSION >= 0x06000000 || NDIS_SUPPORT_NDIS6
++#define OID_GEN_STATISTICS 0x00020106
++#endif
++
++#define OID_GEN_DIRECTED_BYTES_XMIT 0x00020201
++#define OID_GEN_DIRECTED_FRAMES_XMIT 0x00020202
++#define OID_GEN_MULTICAST_BYTES_XMIT 0x00020203
++#define OID_GEN_MULTICAST_FRAMES_XMIT 0x00020204
++#define OID_GEN_BROADCAST_BYTES_XMIT 0x00020205
++#define OID_GEN_BROADCAST_FRAMES_XMIT 0x00020206
++#define OID_GEN_DIRECTED_BYTES_RCV 0x00020207
++#define OID_GEN_DIRECTED_FRAMES_RCV 0x00020208
++#define OID_GEN_MULTICAST_BYTES_RCV 0x00020209
++#define OID_GEN_MULTICAST_FRAMES_RCV 0x0002020a
++#define OID_GEN_BROADCAST_BYTES_RCV 0x0002020b
++#define OID_GEN_BROADCAST_FRAMES_RCV 0x0002020c
++#define OID_GEN_RCV_CRC_ERROR 0x0002020d
++#define OID_GEN_TRANSMIT_QUEUE_LENGTH 0x0002020e
++#define OID_GEN_GET_TIME_CAPS 0x0002020f
++#define OID_GEN_GET_NETCARD_TIME 0x00020210
++#define OID_GEN_NETCARD_LOAD 0x00020211
++#define OID_GEN_DEVICE_PROFILE 0x00020212
++#define OID_GEN_INIT_TIME_MS 0x00020213
++#define OID_GEN_RESET_COUNTS 0x00020214
++#define OID_GEN_MEDIA_SENSE_COUNTS 0x00020215
++#define OID_GEN_FRIENDLY_NAME 0x00020216
++#define OID_GEN_NDIS_RESERVED_1 0x00020217
++#define OID_GEN_NDIS_RESERVED_2 0x00020218
++#define OID_GEN_NDIS_RESERVED_5 0x0001020c
++#if NTDDI_VERSION >= 0x06000000 || NDIS_SUPPORT_NDIS6
++#define OID_GEN_BYTES_RCV 0x00020219
++#define OID_GEN_BYTES_XMIT 0x0002021a
++#define OID_GEN_RCV_DISCARDS 0x0002021b
++#define OID_GEN_XMIT_DISCARDS 0x0002021c
++#endif
++#if NTDDI_VERSION >= 0x06020000 || NDIS_SUPPORT_NDIS630
++#define OID_TCP_RSC_STATISTICS 0x0002021d
++#define OID_GEN_NDIS_RESERVED_7 0x0002021e
++#endif
++
++#define OID_GEN_CO_SUPPORTED_LIST OID_GEN_SUPPORTED_LIST
++#define OID_GEN_CO_HARDWARE_STATUS OID_GEN_HARDWARE_STATUS
++#define OID_GEN_CO_MEDIA_SUPPORTED OID_GEN_MEDIA_SUPPORTED
++#define OID_GEN_CO_MEDIA_IN_USE OID_GEN_MEDIA_IN_USE
++#define OID_GEN_CO_LINK_SPEED OID_GEN_LINK_SPEED
++#define OID_GEN_CO_VENDOR_ID OID_GEN_VENDOR_ID
++#define OID_GEN_CO_VENDOR_DESCRIPTION OID_GEN_VENDOR_DESCRIPTION
++#define OID_GEN_CO_DRIVER_VERSION OID_GEN_DRIVER_VERSION
++#define OID_GEN_CO_PROTOCOL_OPTIONS OID_GEN_PROTOCOL_OPTIONS
++#define OID_GEN_CO_MAC_OPTIONS OID_GEN_MAC_OPTIONS
++#define OID_GEN_CO_MEDIA_CONNECT_STATUS OID_GEN_MEDIA_CONNECT_STATUS
++#define OID_GEN_CO_VENDOR_DRIVER_VERSION OID_GEN_VENDOR_DRIVER_VERSION
++#define OID_GEN_CO_SUPPORTED_GUIDS OID_GEN_SUPPORTED_GUIDS
++#define OID_GEN_CO_GET_TIME_CAPS OID_GEN_GET_TIME_CAPS
++#define OID_GEN_CO_GET_NETCARD_TIME OID_GEN_GET_NETCARD_TIME
++#define OID_GEN_CO_MINIMUM_LINK_SPEED 0x00020120
++
++#define OID_GEN_CO_XMIT_PDUS_OK OID_GEN_XMIT_OK
++#define OID_GEN_CO_RCV_PDUS_OK OID_GEN_RCV_OK
++#define OID_GEN_CO_XMIT_PDUS_ERROR OID_GEN_XMIT_ERROR
++#define OID_GEN_CO_RCV_PDUS_ERROR OID_GEN_RCV_ERROR
++#define OID_GEN_CO_RCV_PDUS_NO_BUFFER OID_GEN_RCV_NO_BUFFER
++
++#define OID_GEN_CO_RCV_CRC_ERROR OID_GEN_RCV_CRC_ERROR
++#define OID_GEN_CO_TRANSMIT_QUEUE_LENGTH OID_GEN_TRANSMIT_QUEUE_LENGTH
++#define OID_GEN_CO_BYTES_XMIT OID_GEN_DIRECTED_BYTES_XMIT
++#define OID_GEN_CO_BYTES_RCV OID_GEN_DIRECTED_BYTES_RCV
++#define OID_GEN_CO_NETCARD_LOAD OID_GEN_NETCARD_LOAD
++#define OID_GEN_CO_DEVICE_PROFILE OID_GEN_DEVICE_PROFILE
++#define OID_GEN_CO_BYTES_XMIT_OUTSTANDING 0x00020221
++
++#define OID_802_3_PERMANENT_ADDRESS 0x01010101
++#define OID_802_3_CURRENT_ADDRESS 0x01010102
++#define OID_802_3_MULTICAST_LIST 0x01010103
++#define OID_802_3_MAXIMUM_LIST_SIZE 0x01010104
++
++#define OID_802_3_MAC_OPTIONS 0x01010105
++
++#define NDIS_802_3_MAC_OPTION_PRIORITY 0x00000001
++
++#define OID_802_3_RCV_ERROR_ALIGNMENT 0x01020101
++#define OID_802_3_XMIT_ONE_COLLISION 0x01020102
++#define OID_802_3_XMIT_MORE_COLLISIONS 0x01020103
++
++#define OID_802_3_XMIT_DEFERRED 0x01020201
++#define OID_802_3_XMIT_MAX_COLLISIONS 0x01020202
++#define OID_802_3_RCV_OVERRUN 0x01020203
++#define OID_802_3_XMIT_UNDERRUN 0x01020204
++#define OID_802_3_XMIT_HEARTBEAT_FAILURE 0x01020205
++#define OID_802_3_XMIT_TIMES_CRS_LOST 0x01020206
++#define OID_802_3_XMIT_LATE_COLLISIONS 0x01020207
++
++#if (NTDDI_VERSION >= 0x06000000 || NDIS_SUPPORT_NDIS6)
++#define OID_802_3_ADD_MULTICAST_ADDRESS 0x01010208
++#define OID_802_3_DELETE_MULTICAST_ADDRESS 0x01010209
++#endif
++
++#define OID_802_5_PERMANENT_ADDRESS 0x02010101
++#define OID_802_5_CURRENT_ADDRESS 0x02010102
++#define OID_802_5_CURRENT_FUNCTIONAL 0x02010103
++#define OID_802_5_CURRENT_GROUP 0x02010104
++#define OID_802_5_LAST_OPEN_STATUS 0x02010105
++#define OID_802_5_CURRENT_RING_STATUS 0x02010106
++#define OID_802_5_CURRENT_RING_STATE 0x02010107
++
++#define OID_802_5_LINE_ERRORS 0x02020101
++#define OID_802_5_LOST_FRAMES 0x02020102
++
++#define OID_802_5_BURST_ERRORS 0x02020201
++#define OID_802_5_AC_ERRORS 0x02020202
++#define OID_802_5_ABORT_DELIMETERS 0x02020203
++#define OID_802_5_FRAME_COPIED_ERRORS 0x02020204
++#define OID_802_5_FREQUENCY_ERRORS 0x02020205
++#define OID_802_5_TOKEN_ERRORS 0x02020206
++#define OID_802_5_INTERNAL_ERRORS 0x02020207
++
++#define OID_FDDI_LONG_PERMANENT_ADDR 0x03010101
++#define OID_FDDI_LONG_CURRENT_ADDR 0x03010102
++#define OID_FDDI_LONG_MULTICAST_LIST 0x03010103
++#define OID_FDDI_LONG_MAX_LIST_SIZE 0x03010104
++#define OID_FDDI_SHORT_PERMANENT_ADDR 0x03010105
++#define OID_FDDI_SHORT_CURRENT_ADDR 0x03010106
++#define OID_FDDI_SHORT_MULTICAST_LIST 0x03010107
++#define OID_FDDI_SHORT_MAX_LIST_SIZE 0x03010108
++
++#define OID_FDDI_ATTACHMENT_TYPE 0x03020101
++#define OID_FDDI_UPSTREAM_NODE_LONG 0x03020102
++#define OID_FDDI_DOWNSTREAM_NODE_LONG 0x03020103
++#define OID_FDDI_FRAME_ERRORS 0x03020104
++#define OID_FDDI_FRAMES_LOST 0x03020105
++#define OID_FDDI_RING_MGT_STATE 0x03020106
++#define OID_FDDI_LCT_FAILURES 0x03020107
++#define OID_FDDI_LEM_REJECTS 0x03020108
++#define OID_FDDI_LCONNECTION_STATE 0x03020109
++
++#define OID_FDDI_SMT_STATION_ID 0x03030201
++#define OID_FDDI_SMT_OP_VERSION_ID 0x03030202
++#define OID_FDDI_SMT_HI_VERSION_ID 0x03030203
++#define OID_FDDI_SMT_LO_VERSION_ID 0x03030204
++#define OID_FDDI_SMT_MANUFACTURER_DATA 0x03030205
++#define OID_FDDI_SMT_USER_DATA 0x03030206
++#define OID_FDDI_SMT_MIB_VERSION_ID 0x03030207
++#define OID_FDDI_SMT_MAC_CT 0x03030208
++#define OID_FDDI_SMT_NON_MASTER_CT 0x03030209
++#define OID_FDDI_SMT_MASTER_CT 0x0303020a
++#define OID_FDDI_SMT_AVAILABLE_PATHS 0x0303020b
++#define OID_FDDI_SMT_CONFIG_CAPABILITIES 0x0303020c
++#define OID_FDDI_SMT_CONFIG_POLICY 0x0303020d
++#define OID_FDDI_SMT_CONNECTION_POLICY 0x0303020e
++#define OID_FDDI_SMT_T_NOTIFY 0x0303020f
++#define OID_FDDI_SMT_STAT_RPT_POLICY 0x03030210
++#define OID_FDDI_SMT_TRACE_MAX_EXPIRATION 0x03030211
++#define OID_FDDI_SMT_PORT_INDEXES 0x03030212
++#define OID_FDDI_SMT_MAC_INDEXES 0x03030213
++#define OID_FDDI_SMT_BYPASS_PRESENT 0x03030214
++#define OID_FDDI_SMT_ECM_STATE 0x03030215
++#define OID_FDDI_SMT_CF_STATE 0x03030216
++#define OID_FDDI_SMT_HOLD_STATE 0x03030217
++#define OID_FDDI_SMT_REMOTE_DISCONNECT_FLAG 0x03030218
++#define OID_FDDI_SMT_STATION_STATUS 0x03030219
++#define OID_FDDI_SMT_PEER_WRAP_FLAG 0x0303021a
++#define OID_FDDI_SMT_MSG_TIME_STAMP 0x0303021b
++#define OID_FDDI_SMT_TRANSITION_TIME_STAMP 0x0303021c
++#define OID_FDDI_SMT_SET_COUNT 0x0303021d
++#define OID_FDDI_SMT_LAST_SET_STATION_ID 0x0303021e
++#define OID_FDDI_MAC_FRAME_STATUS_FUNCTIONS 0x0303021f
++#define OID_FDDI_MAC_BRIDGE_FUNCTIONS 0x03030220
++#define OID_FDDI_MAC_T_MAX_CAPABILITY 0x03030221
++#define OID_FDDI_MAC_TVX_CAPABILITY 0x03030222
++#define OID_FDDI_MAC_AVAILABLE_PATHS 0x03030223
++#define OID_FDDI_MAC_CURRENT_PATH 0x03030224
++#define OID_FDDI_MAC_UPSTREAM_NBR 0x03030225
++#define OID_FDDI_MAC_DOWNSTREAM_NBR 0x03030226
++#define OID_FDDI_MAC_OLD_UPSTREAM_NBR 0x03030227
++#define OID_FDDI_MAC_OLD_DOWNSTREAM_NBR 0x03030228
++#define OID_FDDI_MAC_DUP_ADDRESS_TEST 0x03030229
++#define OID_FDDI_MAC_REQUESTED_PATHS 0x0303022a
++#define OID_FDDI_MAC_DOWNSTREAM_PORT_TYPE 0x0303022b
++#define OID_FDDI_MAC_INDEX 0x0303022c
++#define OID_FDDI_MAC_SMT_ADDRESS 0x0303022d
++#define OID_FDDI_MAC_LONG_GRP_ADDRESS 0x0303022e
++#define OID_FDDI_MAC_SHORT_GRP_ADDRESS 0x0303022f
++#define OID_FDDI_MAC_T_REQ 0x03030230
++#define OID_FDDI_MAC_T_NEG 0x03030231
++#define OID_FDDI_MAC_T_MAX 0x03030232
++#define OID_FDDI_MAC_TVX_VALUE 0x03030233
++#define OID_FDDI_MAC_T_PRI0 0x03030234
++#define OID_FDDI_MAC_T_PRI1 0x03030235
++#define OID_FDDI_MAC_T_PRI2 0x03030236
++#define OID_FDDI_MAC_T_PRI3 0x03030237
++#define OID_FDDI_MAC_T_PRI4 0x03030238
++#define OID_FDDI_MAC_T_PRI5 0x03030239
++#define OID_FDDI_MAC_T_PRI6 0x0303023a
++#define OID_FDDI_MAC_FRAME_CT 0x0303023b
++#define OID_FDDI_MAC_COPIED_CT 0x0303023c
++#define OID_FDDI_MAC_TRANSMIT_CT 0x0303023d
++#define OID_FDDI_MAC_TOKEN_CT 0x0303023e
++#define OID_FDDI_MAC_ERROR_CT 0x0303023f
++#define OID_FDDI_MAC_LOST_CT 0x03030240
++#define OID_FDDI_MAC_TVX_EXPIRED_CT 0x03030241
++#define OID_FDDI_MAC_NOT_COPIED_CT 0x03030242
++#define OID_FDDI_MAC_LATE_CT 0x03030243
++#define OID_FDDI_MAC_RING_OP_CT 0x03030244
++#define OID_FDDI_MAC_FRAME_ERROR_THRESHOLD 0x03030245
++#define OID_FDDI_MAC_FRAME_ERROR_RATIO 0x03030246
++#define OID_FDDI_MAC_NOT_COPIED_THRESHOLD 0x03030247
++#define OID_FDDI_MAC_NOT_COPIED_RATIO 0x03030248
++#define OID_FDDI_MAC_RMT_STATE 0x03030249
++#define OID_FDDI_MAC_DA_FLAG 0x0303024a
++#define OID_FDDI_MAC_UNDA_FLAG 0x0303024b
++#define OID_FDDI_MAC_FRAME_ERROR_FLAG 0x0303024c
++#define OID_FDDI_MAC_NOT_COPIED_FLAG 0x0303024d
++#define OID_FDDI_MAC_MA_UNITDATA_AVAILABLE 0x0303024e
++#define OID_FDDI_MAC_HARDWARE_PRESENT 0x0303024f
++#define OID_FDDI_MAC_MA_UNITDATA_ENABLE 0x03030250
++#define OID_FDDI_PATH_INDEX 0x03030251
++#define OID_FDDI_PATH_RING_LATENCY 0x03030252
++#define OID_FDDI_PATH_TRACE_STATUS 0x03030253
++#define OID_FDDI_PATH_SBA_PAYLOAD 0x03030254
++#define OID_FDDI_PATH_SBA_OVERHEAD 0x03030255
++#define OID_FDDI_PATH_CONFIGURATION 0x03030256
++#define OID_FDDI_PATH_T_R_MODE 0x03030257
++#define OID_FDDI_PATH_SBA_AVAILABLE 0x03030258
++#define OID_FDDI_PATH_TVX_LOWER_BOUND 0x03030259
++#define OID_FDDI_PATH_T_MAX_LOWER_BOUND 0x0303025a
++#define OID_FDDI_PATH_MAX_T_REQ 0x0303025b
++#define OID_FDDI_PORT_MY_TYPE 0x0303025c
++#define OID_FDDI_PORT_NEIGHBOR_TYPE 0x0303025d
++#define OID_FDDI_PORT_CONNECTION_POLICIES 0x0303025e
++#define OID_FDDI_PORT_MAC_INDICATED 0x0303025f
++#define OID_FDDI_PORT_CURRENT_PATH 0x03030260
++#define OID_FDDI_PORT_REQUESTED_PATHS 0x03030261
++#define OID_FDDI_PORT_MAC_PLACEMENT 0x03030262
++#define OID_FDDI_PORT_AVAILABLE_PATHS 0x03030263
++#define OID_FDDI_PORT_MAC_LOOP_TIME 0x03030264
++#define OID_FDDI_PORT_PMD_CLASS 0x03030265
++#define OID_FDDI_PORT_CONNECTION_CAPABILITIES 0x03030266
++#define OID_FDDI_PORT_INDEX 0x03030267
++#define OID_FDDI_PORT_MAINT_LS 0x03030268
++#define OID_FDDI_PORT_BS_FLAG 0x03030269
++#define OID_FDDI_PORT_PC_LS 0x0303026a
++#define OID_FDDI_PORT_EB_ERROR_CT 0x0303026b
++#define OID_FDDI_PORT_LCT_FAIL_CT 0x0303026c
++#define OID_FDDI_PORT_LER_ESTIMATE 0x0303026d
++#define OID_FDDI_PORT_LEM_REJECT_CT 0x0303026e
++#define OID_FDDI_PORT_LEM_CT 0x0303026f
++#define OID_FDDI_PORT_LER_CUTOFF 0x03030270
++#define OID_FDDI_PORT_LER_ALARM 0x03030271
++#define OID_FDDI_PORT_CONNNECT_STATE 0x03030272
++#define OID_FDDI_PORT_PCM_STATE 0x03030273
++#define OID_FDDI_PORT_PC_WITHHOLD 0x03030274
++#define OID_FDDI_PORT_LER_FLAG 0x03030275
++#define OID_FDDI_PORT_HARDWARE_PRESENT 0x03030276
++#define OID_FDDI_SMT_STATION_ACTION 0x03030277
++#define OID_FDDI_PORT_ACTION 0x03030278
++#define OID_FDDI_IF_DESCR 0x03030279
++#define OID_FDDI_IF_TYPE 0x0303027a
++#define OID_FDDI_IF_MTU 0x0303027b
++#define OID_FDDI_IF_SPEED 0x0303027c
++#define OID_FDDI_IF_PHYS_ADDRESS 0x0303027d
++#define OID_FDDI_IF_ADMIN_STATUS 0x0303027e
++#define OID_FDDI_IF_OPER_STATUS 0x0303027f
++#define OID_FDDI_IF_LAST_CHANGE 0x03030280
++#define OID_FDDI_IF_IN_OCTETS 0x03030281
++#define OID_FDDI_IF_IN_UCAST_PKTS 0x03030282
++#define OID_FDDI_IF_IN_NUCAST_PKTS 0x03030283
++#define OID_FDDI_IF_IN_DISCARDS 0x03030284
++#define OID_FDDI_IF_IN_ERRORS 0x03030285
++#define OID_FDDI_IF_IN_UNKNOWN_PROTOS 0x03030286
++#define OID_FDDI_IF_OUT_OCTETS 0x03030287
++#define OID_FDDI_IF_OUT_UCAST_PKTS 0x03030288
++#define OID_FDDI_IF_OUT_NUCAST_PKTS 0x03030289
++#define OID_FDDI_IF_OUT_DISCARDS 0x0303028a
++#define OID_FDDI_IF_OUT_ERRORS 0x0303028b
++#define OID_FDDI_IF_OUT_QLEN 0x0303028c
++#define OID_FDDI_IF_SPECIFIC 0x0303028d
++
++#define OID_WAN_PERMANENT_ADDRESS 0x04010101
++#define OID_WAN_CURRENT_ADDRESS 0x04010102
++#define OID_WAN_QUALITY_OF_SERVICE 0x04010103
++#define OID_WAN_PROTOCOL_TYPE 0x04010104
++#define OID_WAN_MEDIUM_SUBTYPE 0x04010105
++#define OID_WAN_HEADER_FORMAT 0x04010106
++
++#define OID_WAN_GET_INFO 0x04010107
++#define OID_WAN_SET_LINK_INFO 0x04010108
++#define OID_WAN_GET_LINK_INFO 0x04010109
++#define OID_WAN_LINE_COUNT 0x0401010a
++#define OID_WAN_PROTOCOL_CAPS 0x0401010b
++
++#define OID_WAN_GET_BRIDGE_INFO 0x0401020a
++#define OID_WAN_SET_BRIDGE_INFO 0x0401020b
++#define OID_WAN_GET_COMP_INFO 0x0401020c
++#define OID_WAN_SET_COMP_INFO 0x0401020d
++#define OID_WAN_GET_STATS_INFO 0x0401020e
++
++#define OID_WAN_CO_GET_INFO 0x04010180
++#define OID_WAN_CO_SET_LINK_INFO 0x04010181
++#define OID_WAN_CO_GET_LINK_INFO 0x04010182
++#define OID_WAN_CO_GET_COMP_INFO 0x04010280
++#define OID_WAN_CO_SET_COMP_INFO 0x04010281
++#define OID_WAN_CO_GET_STATS_INFO 0x04010282
++
++#define OID_LTALK_CURRENT_NODE_ID 0x05010102
++
++#define OID_LTALK_IN_BROADCASTS 0x05020101
++#define OID_LTALK_IN_LENGTH_ERRORS 0x05020102
++
++#define OID_LTALK_OUT_NO_HANDLERS 0x05020201
++#define OID_LTALK_COLLISIONS 0x05020202
++#define OID_LTALK_DEFERS 0x05020203
++#define OID_LTALK_NO_DATA_ERRORS 0x05020204
++#define OID_LTALK_RANDOM_CTS_ERRORS 0x05020205
++#define OID_LTALK_FCS_ERRORS 0x05020206
++
++#define OID_ARCNET_PERMANENT_ADDRESS 0x06010101
++#define OID_ARCNET_CURRENT_ADDRESS 0x06010102
++
++#define OID_ARCNET_RECONFIGURATIONS 0x06020201
++
++#define OID_TAPI_ACCEPT 0x07030101
++#define OID_TAPI_ANSWER 0x07030102
++#define OID_TAPI_CLOSE 0x07030103
++#define OID_TAPI_CLOSE_CALL 0x07030104
++#define OID_TAPI_CONDITIONAL_MEDIA_DETECTION 0x07030105
++#define OID_TAPI_CONFIG_DIALOG 0x07030106
++#define OID_TAPI_DEV_SPECIFIC 0x07030107
++#define OID_TAPI_DIAL 0x07030108
++#define OID_TAPI_DROP 0x07030109
++#define OID_TAPI_GET_ADDRESS_CAPS 0x0703010a
++#define OID_TAPI_GET_ADDRESS_ID 0x0703010b
++#define OID_TAPI_GET_ADDRESS_STATUS 0x0703010c
++#define OID_TAPI_GET_CALL_ADDRESS_ID 0x0703010d
++#define OID_TAPI_GET_CALL_INFO 0x0703010e
++#define OID_TAPI_GET_CALL_STATUS 0x0703010f
++#define OID_TAPI_GET_DEV_CAPS 0x07030110
++#define OID_TAPI_GET_DEV_CONFIG 0x07030111
++#define OID_TAPI_GET_EXTENSION_ID 0x07030112
++#define OID_TAPI_GET_ID 0x07030113
++#define OID_TAPI_GET_LINE_DEV_STATUS 0x07030114
++#define OID_TAPI_MAKE_CALL 0x07030115
++#define OID_TAPI_NEGOTIATE_EXT_VERSION 0x07030116
++#define OID_TAPI_OPEN 0x07030117
++#define OID_TAPI_PROVIDER_INITIALIZE 0x07030118
++#define OID_TAPI_PROVIDER_SHUTDOWN 0x07030119
++#define OID_TAPI_SECURE_CALL 0x0703011a
++#define OID_TAPI_SELECT_EXT_VERSION 0x0703011b
++#define OID_TAPI_SEND_USER_USER_INFO 0x0703011c
++#define OID_TAPI_SET_APP_SPECIFIC 0x0703011d
++#define OID_TAPI_SET_CALL_PARAMS 0x0703011e
++#define OID_TAPI_SET_DEFAULT_MEDIA_DETECTION 0x0703011f
++#define OID_TAPI_SET_DEV_CONFIG 0x07030120
++#define OID_TAPI_SET_MEDIA_MODE 0x07030121
++#define OID_TAPI_SET_STATUS_MESSAGES 0x07030122
++#define OID_TAPI_GATHER_DIGITS 0x07030123
++#define OID_TAPI_MONITOR_DIGITS 0x07030124
++
++#define OID_ATM_SUPPORTED_VC_RATES 0x08010101
++#define OID_ATM_SUPPORTED_SERVICE_CATEGORY 0x08010102
++#define OID_ATM_SUPPORTED_AAL_TYPES 0x08010103
++#define OID_ATM_HW_CURRENT_ADDRESS 0x08010104
++#define OID_ATM_MAX_ACTIVE_VCS 0x08010105
++#define OID_ATM_MAX_ACTIVE_VCI_BITS 0x08010106
++#define OID_ATM_MAX_ACTIVE_VPI_BITS 0x08010107
++#define OID_ATM_MAX_AAL0_PACKET_SIZE 0x08010108
++#define OID_ATM_MAX_AAL1_PACKET_SIZE 0x08010109
++#define OID_ATM_MAX_AAL34_PACKET_SIZE 0x0801010a
++#define OID_ATM_MAX_AAL5_PACKET_SIZE 0x0801010b
++
++#define OID_ATM_SIGNALING_VPIVCI 0x08010201
++#define OID_ATM_ASSIGNED_VPI 0x08010202
++#define OID_ATM_ACQUIRE_ACCESS_NET_RESOURCES 0x08010203
++#define OID_ATM_RELEASE_ACCESS_NET_RESOURCES 0x08010204
++#define OID_ATM_ILMI_VPIVCI 0x08010205
++#define OID_ATM_DIGITAL_BROADCAST_VPIVCI 0x08010206
++#define OID_ATM_GET_NEAREST_FLOW 0x08010207
++#define OID_ATM_ALIGNMENT_REQUIRED 0x08010208
++#define OID_ATM_LECS_ADDRESS 0x08010209
++#define OID_ATM_SERVICE_ADDRESS 0x0801020a
++
++#define OID_ATM_CALL_PROCEEDING 0x0801020b
++#define OID_ATM_CALL_ALERTING 0x0801020c
++#define OID_ATM_PARTY_ALERTING 0x0801020d
++#define OID_ATM_CALL_NOTIFY 0x0801020e
++
++#define OID_ATM_MY_IP_NM_ADDRESS 0x0801020f
++
++#define OID_ATM_RCV_CELLS_OK 0x08020101
++#define OID_ATM_XMIT_CELLS_OK 0x08020102
++#define OID_ATM_RCV_CELLS_DROPPED 0x08020103
++
++#define OID_ATM_RCV_INVALID_VPI_VCI 0x08020201
++#define OID_ATM_CELLS_HEC_ERROR 0x08020202
++#define OID_ATM_RCV_REASSEMBLY_ERROR 0x08020203
++
++#define OID_802_11_BSSID 0x0d010101
++#define OID_802_11_SSID 0x0d010102
++#define OID_802_11_NETWORK_TYPES_SUPPORTED 0x0d010203
++#define OID_802_11_NETWORK_TYPE_IN_USE 0x0d010204
++#define OID_802_11_TX_POWER_LEVEL 0x0d010205
++#define OID_802_11_RSSI 0x0d010206
++#define OID_802_11_RSSI_TRIGGER 0x0d010207
++#define OID_802_11_INFRASTRUCTURE_MODE 0x0d010108
++#define OID_802_11_FRAGMENTATION_THRESHOLD 0x0d010209
++#define OID_802_11_RTS_THRESHOLD 0x0d01020a
++#define OID_802_11_NUMBER_OF_ANTENNAS 0x0d01020b
++#define OID_802_11_RX_ANTENNA_SELECTED 0x0d01020c
++#define OID_802_11_TX_ANTENNA_SELECTED 0x0d01020d
++#define OID_802_11_SUPPORTED_RATES 0x0d01020e
++#define OID_802_11_DESIRED_RATES 0x0d010210
++#define OID_802_11_CONFIGURATION 0x0d010211
++#define OID_802_11_STATISTICS 0x0d020212
++#define OID_802_11_ADD_WEP 0x0d010113
++#define OID_802_11_REMOVE_WEP 0x0d010114
++#define OID_802_11_DISASSOCIATE 0x0d010115
++#define OID_802_11_POWER_MODE 0x0d010216
++#define OID_802_11_BSSID_LIST 0x0d010217
++#define OID_802_11_AUTHENTICATION_MODE 0x0d010118
++#define OID_802_11_PRIVACY_FILTER 0x0d010119
++#define OID_802_11_BSSID_LIST_SCAN 0x0d01011a
++#define OID_802_11_WEP_STATUS 0x0d01011b
++
++#define OID_802_11_ENCRYPTION_STATUS OID_802_11_WEP_STATUS
++#define OID_802_11_RELOAD_DEFAULTS 0x0d01011c
++
++#define OID_802_11_ADD_KEY 0x0d01011d
++#define OID_802_11_REMOVE_KEY 0x0d01011e
++#define OID_802_11_ASSOCIATION_INFORMATION 0x0d01011f
++#define OID_802_11_TEST 0x0d010120
++#define OID_802_11_MEDIA_STREAM_MODE 0x0d010121
++#define OID_802_11_CAPABILITY 0x0d010122
++#define OID_802_11_PMKID 0x0d010123
++#define OID_802_11_NON_BCAST_SSID_LIST 0x0d010124
++#define OID_802_11_RADIO_STATUS 0x0d010125
++
++#define NDIS_ETH_TYPE_IPV4 0x0800
++#define NDIS_ETH_TYPE_ARP 0x0806
++#define NDIS_ETH_TYPE_IPV6 0x86dd
++#define NDIS_ETH_TYPE_802_1X 0x888e
++#define NDIS_ETH_TYPE_802_1Q 0x8100
++#define NDIS_ETH_TYPE_SLOW_PROTOCOL 0x8809
++
++#define NDIS_802_11_LENGTH_SSID 32
++#define NDIS_802_11_LENGTH_RATES 8
++#define NDIS_802_11_LENGTH_RATES_EX 16
++
++#define NDIS_802_11_AUTH_REQUEST_REAUTH 0x01
++#define NDIS_802_11_AUTH_REQUEST_KEYUPDATE 0x02
++#define NDIS_802_11_AUTH_REQUEST_PAIRWISE_ERROR 0x06
++#define NDIS_802_11_AUTH_REQUEST_GROUP_ERROR 0x0e
++#define NDIS_802_11_AUTH_REQUEST_AUTH_FIELDS 0x0f
++
++#define NDIS_802_11_PMKID_CANDIDATE_PREAUTH_ENABLED 0x01
++
++#define NDIS_802_11_AI_REQFI_CAPABILITIES 1
++#define NDIS_802_11_AI_REQFI_LISTENINTERVAL 2
++#define NDIS_802_11_AI_REQFI_CURRENTAPADDRESS 4
++
++#define NDIS_802_11_AI_RESFI_CAPABILITIES 1
++#define NDIS_802_11_AI_RESFI_STATUSCODE 2
++#define NDIS_802_11_AI_RESFI_ASSOCIATIONID 4
++
++  typedef enum _NDIS_802_11_STATUS_TYPE {
++    Ndis802_11StatusType_Authentication,
++    Ndis802_11StatusType_MediaStreamMode,
++    Ndis802_11StatusType_PMKID_CandidateList,
++    Ndis802_11StatusTypeMax
++  } NDIS_802_11_STATUS_TYPE, *PNDIS_802_11_STATUS_TYPE;
++
++  typedef UCHAR NDIS_802_11_MAC_ADDRESS[6];
++
++  typedef struct _NDIS_802_11_STATUS_INDICATION {
++    NDIS_802_11_STATUS_TYPE StatusType;
++  } NDIS_802_11_STATUS_INDICATION, *PNDIS_802_11_STATUS_INDICATION;
++
++  typedef struct _NDIS_802_11_AUTHENTICATION_REQUEST {
++    ULONG Length;
++    NDIS_802_11_MAC_ADDRESS Bssid;
++    ULONG Flags;
++  } NDIS_802_11_AUTHENTICATION_REQUEST, *PNDIS_802_11_AUTHENTICATION_REQUEST;
++
++  typedef struct _PMKID_CANDIDATE {
++    NDIS_802_11_MAC_ADDRESS BSSID;
++    ULONG Flags;
++  } PMKID_CANDIDATE, *PPMKID_CANDIDATE;
++
++  typedef struct _NDIS_802_11_PMKID_CANDIDATE_LIST {
++    ULONG Version;
++    ULONG NumCandidates;
++    PMKID_CANDIDATE CandidateList[1];
++  } NDIS_802_11_PMKID_CANDIDATE_LIST, *PNDIS_802_11_PMKID_CANDIDATE_LIST;
++
++  typedef enum _NDIS_802_11_NETWORK_TYPE {
++    Ndis802_11FH,
++    Ndis802_11DS,
++    Ndis802_11OFDM5,
++    Ndis802_11OFDM24,
++    Ndis802_11Automode,
++    Ndis802_11NetworkTypeMax
++  } NDIS_802_11_NETWORK_TYPE, *PNDIS_802_11_NETWORK_TYPE;
++
++  typedef struct _NDIS_802_11_NETWORK_TYPE_LIST {
++    ULONG NumberOfItems;
++    NDIS_802_11_NETWORK_TYPE NetworkType [1];
++  } NDIS_802_11_NETWORK_TYPE_LIST, *PNDIS_802_11_NETWORK_TYPE_LIST;
++
++  typedef enum _NDIS_802_11_POWER_MODE {
++    Ndis802_11PowerModeCAM,
++    Ndis802_11PowerModeMAX_PSP,
++    Ndis802_11PowerModeFast_PSP,
++    Ndis802_11PowerModeMax
++  } NDIS_802_11_POWER_MODE, *PNDIS_802_11_POWER_MODE;
++
++  typedef ULONG NDIS_802_11_TX_POWER_LEVEL;
++  typedef LONG NDIS_802_11_RSSI;
++
++  typedef struct _NDIS_802_11_CONFIGURATION_FH {
++    ULONG Length;
++    ULONG HopPattern;
++    ULONG HopSet;
++    ULONG DwellTime;
++  } NDIS_802_11_CONFIGURATION_FH, *PNDIS_802_11_CONFIGURATION_FH;
++
++  typedef struct _NDIS_802_11_CONFIGURATION {
++    ULONG Length;
++    ULONG BeaconPeriod;
++    ULONG ATIMWindow;
++    ULONG DSConfig;
++    NDIS_802_11_CONFIGURATION_FH FHConfig;
++  } NDIS_802_11_CONFIGURATION, *PNDIS_802_11_CONFIGURATION;
++
++  typedef struct _NDIS_802_11_STATISTICS {
++    ULONG Length;
++    LARGE_INTEGER TransmittedFragmentCount;
++    LARGE_INTEGER MulticastTransmittedFrameCount;
++    LARGE_INTEGER FailedCount;
++    LARGE_INTEGER RetryCount;
++    LARGE_INTEGER MultipleRetryCount;
++    LARGE_INTEGER RTSSuccessCount;
++    LARGE_INTEGER RTSFailureCount;
++    LARGE_INTEGER ACKFailureCount;
++    LARGE_INTEGER FrameDuplicateCount;
++    LARGE_INTEGER ReceivedFragmentCount;
++    LARGE_INTEGER MulticastReceivedFrameCount;
++    LARGE_INTEGER FCSErrorCount;
++    LARGE_INTEGER TKIPLocalMICFailures;
++    LARGE_INTEGER TKIPICVErrorCount;
++    LARGE_INTEGER TKIPCounterMeasuresInvoked;
++    LARGE_INTEGER TKIPReplays;
++    LARGE_INTEGER CCMPFormatErrors;
++    LARGE_INTEGER CCMPReplays;
++    LARGE_INTEGER CCMPDecryptErrors;
++    LARGE_INTEGER FourWayHandshakeFailures;
++    LARGE_INTEGER WEPUndecryptableCount;
++    LARGE_INTEGER WEPICVErrorCount;
++    LARGE_INTEGER DecryptSuccessCount;
++    LARGE_INTEGER DecryptFailureCount;
++  } NDIS_802_11_STATISTICS, *PNDIS_802_11_STATISTICS;
++
++  typedef ULONG NDIS_802_11_KEY_INDEX;
++  typedef ULONGLONG NDIS_802_11_KEY_RSC;
++
++  typedef struct _NDIS_802_11_KEY {
++    ULONG Length;
++    ULONG KeyIndex;
++    ULONG KeyLength;
++    NDIS_802_11_MAC_ADDRESS BSSID;
++    NDIS_802_11_KEY_RSC KeyRSC;
++    UCHAR KeyMaterial[1];
++  } NDIS_802_11_KEY, *PNDIS_802_11_KEY;
++
++  typedef struct _NDIS_802_11_REMOVE_KEY {
++    ULONG Length;
++    ULONG KeyIndex;
++    NDIS_802_11_MAC_ADDRESS BSSID;
++  } NDIS_802_11_REMOVE_KEY, *PNDIS_802_11_REMOVE_KEY;
++  typedef struct _NDIS_802_11_WEP {
++    ULONG Length;
++    ULONG KeyIndex;
++    ULONG KeyLength;
++    UCHAR KeyMaterial[1];
++  } NDIS_802_11_WEP, *PNDIS_802_11_WEP;
++
++  typedef enum _NDIS_802_11_NETWORK_INFRASTRUCTURE {
++    Ndis802_11IBSS,
++    Ndis802_11Infrastructure,
++    Ndis802_11AutoUnknown,
++    Ndis802_11InfrastructureMax
++  } NDIS_802_11_NETWORK_INFRASTRUCTURE, *PNDIS_802_11_NETWORK_INFRASTRUCTURE;
++
++  typedef enum _NDIS_802_11_AUTHENTICATION_MODE {
++    Ndis802_11AuthModeOpen,
++    Ndis802_11AuthModeShared,
++    Ndis802_11AuthModeAutoSwitch,
++    Ndis802_11AuthModeWPA,
++    Ndis802_11AuthModeWPAPSK,
++    Ndis802_11AuthModeWPANone,
++    Ndis802_11AuthModeWPA2,
++    Ndis802_11AuthModeWPA2PSK,
++    Ndis802_11AuthModeMax
++  } NDIS_802_11_AUTHENTICATION_MODE, *PNDIS_802_11_AUTHENTICATION_MODE;
++
++  typedef UCHAR NDIS_802_11_RATES[NDIS_802_11_LENGTH_RATES];
++  typedef UCHAR NDIS_802_11_RATES_EX[NDIS_802_11_LENGTH_RATES_EX];
++
++  typedef struct _NDIS_802_11_SSID {
++    ULONG SsidLength;
++    UCHAR Ssid[NDIS_802_11_LENGTH_SSID];
++  } NDIS_802_11_SSID, *PNDIS_802_11_SSID;
++
++  typedef struct _NDIS_WLAN_BSSID {
++    ULONG Length;
++    NDIS_802_11_MAC_ADDRESS MacAddress;
++    UCHAR Reserved[2];
++    NDIS_802_11_SSID Ssid;
++    ULONG Privacy;
++    NDIS_802_11_RSSI Rssi;
++    NDIS_802_11_NETWORK_TYPE NetworkTypeInUse;
++    NDIS_802_11_CONFIGURATION Configuration;
++    NDIS_802_11_NETWORK_INFRASTRUCTURE InfrastructureMode;
++    NDIS_802_11_RATES SupportedRates;
++  } NDIS_WLAN_BSSID, *PNDIS_WLAN_BSSID;
++
++  typedef struct _NDIS_802_11_BSSID_LIST {
++    ULONG NumberOfItems;
++    NDIS_WLAN_BSSID Bssid[1];
++  } NDIS_802_11_BSSID_LIST, *PNDIS_802_11_BSSID_LIST;
++
++  typedef struct _NDIS_WLAN_BSSID_EX {
++    ULONG Length;
++    NDIS_802_11_MAC_ADDRESS MacAddress;
++    UCHAR Reserved[2];
++    NDIS_802_11_SSID Ssid;
++    ULONG Privacy;
++    NDIS_802_11_RSSI Rssi;
++    NDIS_802_11_NETWORK_TYPE NetworkTypeInUse;
++    NDIS_802_11_CONFIGURATION Configuration;
++    NDIS_802_11_NETWORK_INFRASTRUCTURE InfrastructureMode;
++    NDIS_802_11_RATES_EX SupportedRates;
++    ULONG IELength;
++    UCHAR IEs[1];
++  } NDIS_WLAN_BSSID_EX, *PNDIS_WLAN_BSSID_EX;
++
++  typedef struct _NDIS_802_11_BSSID_LIST_EX {
++    ULONG NumberOfItems;
++    NDIS_WLAN_BSSID_EX Bssid[1];
++  } NDIS_802_11_BSSID_LIST_EX, *PNDIS_802_11_BSSID_LIST_EX;
++
++  typedef struct _NDIS_802_11_FIXED_IEs {
++    UCHAR Timestamp[8];
++    USHORT BeaconInterval;
++    USHORT Capabilities;
++  } NDIS_802_11_FIXED_IEs, *PNDIS_802_11_FIXED_IEs;
++
++  typedef struct _NDIS_802_11_VARIABLE_IEs {
++    UCHAR ElementID;
++    UCHAR Length;
++    UCHAR data[1];
++  } NDIS_802_11_VARIABLE_IEs, *PNDIS_802_11_VARIABLE_IEs;
++
++  typedef ULONG NDIS_802_11_FRAGMENTATION_THRESHOLD;
++  typedef ULONG NDIS_802_11_RTS_THRESHOLD;
++  typedef ULONG NDIS_802_11_ANTENNA;
++
++  typedef enum _NDIS_802_11_PRIVACY_FILTER {
++    Ndis802_11PrivFilterAcceptAll,
++    Ndis802_11PrivFilter8021xWEP
++  } NDIS_802_11_PRIVACY_FILTER, *PNDIS_802_11_PRIVACY_FILTER;
++
++  typedef enum _NDIS_802_11_WEP_STATUS {
++    Ndis802_11WEPEnabled,
++    Ndis802_11Encryption1Enabled = Ndis802_11WEPEnabled,
++    Ndis802_11WEPDisabled,
++    Ndis802_11EncryptionDisabled = Ndis802_11WEPDisabled,
++    Ndis802_11WEPKeyAbsent,
++    Ndis802_11Encryption1KeyAbsent = Ndis802_11WEPKeyAbsent,
++    Ndis802_11WEPNotSupported,
++    Ndis802_11EncryptionNotSupported = Ndis802_11WEPNotSupported,
++    Ndis802_11Encryption2Enabled,
++    Ndis802_11Encryption2KeyAbsent,
++    Ndis802_11Encryption3Enabled,
++    Ndis802_11Encryption3KeyAbsent
++  } NDIS_802_11_WEP_STATUS, *PNDIS_802_11_WEP_STATUS, NDIS_802_11_ENCRYPTION_STATUS, *PNDIS_802_11_ENCRYPTION_STATUS;
++
++  typedef enum _NDIS_802_11_RELOAD_DEFAULTS {
++    Ndis802_11ReloadWEPKeys
++  } NDIS_802_11_RELOAD_DEFAULTS, *PNDIS_802_11_RELOAD_DEFAULTS;
++
++  typedef struct _NDIS_802_11_AI_REQFI {
++    USHORT Capabilities;
++    USHORT ListenInterval;
++    NDIS_802_11_MAC_ADDRESS CurrentAPAddress;
++  } NDIS_802_11_AI_REQFI, *PNDIS_802_11_AI_REQFI;
++
++  typedef struct _NDIS_802_11_AI_RESFI {
++    USHORT Capabilities;
++    USHORT StatusCode;
++    USHORT AssociationId;
++  } NDIS_802_11_AI_RESFI, *PNDIS_802_11_AI_RESFI;
++
++  typedef struct _NDIS_802_11_ASSOCIATION_INFORMATION {
++    ULONG Length;
++    USHORT AvailableRequestFixedIEs;
++    NDIS_802_11_AI_REQFI RequestFixedIEs;
++    ULONG RequestIELength;
++    ULONG OffsetRequestIEs;
++    USHORT AvailableResponseFixedIEs;
++    NDIS_802_11_AI_RESFI ResponseFixedIEs;
++    ULONG ResponseIELength;
++    ULONG OffsetResponseIEs;
++  } NDIS_802_11_ASSOCIATION_INFORMATION, *PNDIS_802_11_ASSOCIATION_INFORMATION;
++
++  typedef struct _NDIS_802_11_AUTHENTICATION_EVENT {
++    NDIS_802_11_STATUS_INDICATION Status;
++    NDIS_802_11_AUTHENTICATION_REQUEST Request[1];
++  } NDIS_802_11_AUTHENTICATION_EVENT, *PNDIS_802_11_AUTHENTICATION_EVENT;
++
++  typedef struct _NDIS_802_11_TEST {
++    ULONG Length;
++    ULONG Type;
++    _ANONYMOUS_UNION union {
++      NDIS_802_11_AUTHENTICATION_EVENT AuthenticationEvent;
++      NDIS_802_11_RSSI RssiTrigger;
++    };
++  } NDIS_802_11_TEST, *PNDIS_802_11_TEST;
++
++  typedef enum _NDIS_802_11_MEDIA_STREAM_MODE {
++    Ndis802_11MediaStreamOff,
++    Ndis802_11MediaStreamOn,
++  } NDIS_802_11_MEDIA_STREAM_MODE, *PNDIS_802_11_MEDIA_STREAM_MODE;
++
++  typedef UCHAR NDIS_802_11_PMKID_VALUE[16];
++
++  typedef struct _BSSID_INFO {
++    NDIS_802_11_MAC_ADDRESS BSSID;
++    NDIS_802_11_PMKID_VALUE PMKID;
++  } BSSID_INFO, *PBSSID_INFO;
++
++  typedef struct _NDIS_802_11_PMKID {
++    ULONG Length;
++    ULONG BSSIDInfoCount;
++    BSSID_INFO BSSIDInfo[1];
++  } NDIS_802_11_PMKID, *PNDIS_802_11_PMKID;
++
++  typedef struct _NDIS_802_11_AUTHENTICATION_ENCRYPTION {
++    NDIS_802_11_AUTHENTICATION_MODE AuthModeSupported;
++    NDIS_802_11_ENCRYPTION_STATUS EncryptStatusSupported;
++  } NDIS_802_11_AUTHENTICATION_ENCRYPTION, *PNDIS_802_11_AUTHENTICATION_ENCRYPTION;
++
++  typedef struct _NDIS_802_11_CAPABILITY {
++    ULONG Length;
++    ULONG Version;
++    ULONG NoOfPMKIDs;
++    ULONG NoOfAuthEncryptPairsSupported;
++    NDIS_802_11_AUTHENTICATION_ENCRYPTION AuthenticationEncryptionSupported[1];
++  } NDIS_802_11_CAPABILITY, *PNDIS_802_11_CAPABILITY;
++
++  typedef struct _NDIS_802_11_NON_BCAST_SSID_LIST {
++    ULONG NumberOfItems;
++    NDIS_802_11_SSID Non_Bcast_Ssid[1];
++  } NDIS_802_11_NON_BCAST_SSID_LIST, *PNDIS_802_11_NON_BCAST_SSID_LIST;
++
++  typedef enum _NDIS_802_11_RADIO_STATUS {
++    Ndis802_11RadioStatusOn,
++    Ndis802_11RadioStatusHardwareOff,
++    Ndis802_11RadioStatusSoftwareOff,
++    Ndis802_11RadioStatusHardwareSoftwareOff,
++    Ndis802_11RadioStatusMax
++  } NDIS_802_11_RADIO_STATUS, *PNDIS_802_11_RADIO_STATUS;
++
++#define OID_IRDA_RECEIVING 0x0a010100
++#define OID_IRDA_TURNAROUND_TIME 0x0a010101
++#define OID_IRDA_SUPPORTED_SPEEDS 0x0a010102
++#define OID_IRDA_LINK_SPEED 0x0a010103
++#define OID_IRDA_MEDIA_BUSY 0x0a010104
++
++#define OID_IRDA_EXTRA_RCV_BOFS 0x0a010200
++#define OID_IRDA_RATE_SNIFF 0x0a010201
++#define OID_IRDA_UNICAST_LIST 0x0a010202
++#define OID_IRDA_MAX_UNICAST_LIST_SIZE 0x0a010203
++#define OID_IRDA_MAX_RECEIVE_WINDOW_SIZE 0x0a010204
++#define OID_IRDA_MAX_SEND_WINDOW_SIZE 0x0a010205
++#define OID_IRDA_RESERVED1 0x0a01020a
++#define OID_IRDA_RESERVED2 0x0a01020f
++
++#define OID_1394_LOCAL_NODE_INFO 0x0c010101
++#define OID_1394_VC_INFO 0x0c010102
++
++#define OID_CO_ADD_PVC 0xfe000001
++#define OID_CO_DELETE_PVC 0xfe000002
++#define OID_CO_GET_CALL_INFORMATION 0xfe000003
++#define OID_CO_ADD_ADDRESS 0xfe000004
++#define OID_CO_DELETE_ADDRESS 0xfe000005
++#define OID_CO_GET_ADDRESSES 0xfe000006
++#define OID_CO_ADDRESS_CHANGE 0xfe000007
++#define OID_CO_SIGNALING_ENABLED 0xfe000008
++#define OID_CO_SIGNALING_DISABLED 0xfe000009
++#define OID_CO_AF_CLOSE 0xfe00000a
++
++#define OID_CO_TAPI_CM_CAPS 0xfe001001
++#define OID_CO_TAPI_LINE_CAPS 0xfe001002
++#define OID_CO_TAPI_ADDRESS_CAPS 0xfe001003
++#define OID_CO_TAPI_TRANSLATE_TAPI_CALLPARAMS 0xfe001004
++#define OID_CO_TAPI_TRANSLATE_NDIS_CALLPARAMS 0xfe001005
++#define OID_CO_TAPI_TRANSLATE_TAPI_SAP 0xfe001006
++#define OID_CO_TAPI_GET_CALL_DIAGNOSTICS 0xfe001007
++#define OID_CO_TAPI_REPORT_DIGITS 0xfe001008
++#define OID_CO_TAPI_DONT_REPORT_DIGITS 0xfe001009
++
++#define OID_PNP_CAPABILITIES 0xfd010100
++#define OID_PNP_SET_POWER 0xfd010101
++#define OID_PNP_QUERY_POWER 0xfd010102
++#define OID_PNP_ADD_WAKE_UP_PATTERN 0xfd010103
++#define OID_PNP_REMOVE_WAKE_UP_PATTERN 0xfd010104
++#define OID_PNP_WAKE_UP_PATTERN_LIST 0xfd010105
++#define OID_PNP_ENABLE_WAKE_UP 0xfd010106
++
++#define OID_PNP_WAKE_UP_OK 0xfd020200
++#define OID_PNP_WAKE_UP_ERROR 0xfd020201
++
++#if (NTDDI_VERSION >= 0x06010000 || NDIS_SUPPORT_NDIS620)
++#define OID_PM_CURRENT_CAPABILITIES 0xfd010107
++#define OID_PM_HARDWARE_CAPABILITIES 0xfd010108
++#define OID_PM_PARAMETERS 0xfd010109
++#define OID_PM_ADD_WOL_PATTERN 0xfd01010a
++#define OID_PM_REMOVE_WOL_PATTERN 0xfd01010b
++#define OID_PM_WOL_PATTERN_LIST 0xfd01010c
++#define OID_PM_ADD_PROTOCOL_OFFLOAD 0xfd01010d
++#define OID_PM_GET_PROTOCOL_OFFLOAD 0xfd01010e
++#define OID_PM_REMOVE_PROTOCOL_OFFLOAD 0xfd01010f
++#define OID_PM_PROTOCOL_OFFLOAD_LIST 0xfd010110
++#define OID_PM_RESERVED_1 0xfd010111
++
++#define OID_RECEIVE_FILTER_HARDWARE_CAPABILITIES 0x00010221
++#define OID_RECEIVE_FILTER_GLOBAL_PARAMETERS 0x00010222
++#define OID_RECEIVE_FILTER_ALLOCATE_QUEUE 0x00010223
++#define OID_RECEIVE_FILTER_FREE_QUEUE 0x00010224
++#define OID_RECEIVE_FILTER_ENUM_QUEUES 0x00010225
++#define OID_RECEIVE_FILTER_QUEUE_PARAMETERS 0x00010226
++#define OID_RECEIVE_FILTER_SET_FILTER 0x00010227
++#define OID_RECEIVE_FILTER_CLEAR_FILTER 0x00010228
++#define OID_RECEIVE_FILTER_ENUM_FILTERS 0x00010229
++#define OID_RECEIVE_FILTER_PARAMETERS 0x0001022a
++#define OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE 0x0001022b
++#define OID_RECEIVE_FILTER_CURRENT_CAPABILITIES 0x0001022d
++#define OID_NIC_SWITCH_HARDWARE_CAPABILITIES 0x0001022e
++#define OID_NIC_SWITCH_CURRENT_CAPABILITIES 0x0001022f
++#if NDIS_SUPPORT_NDIS630
++#define OID_RECEIVE_FILTER_MOVE_FILTER 0x00010230
++#endif
++#define OID_VLAN_RESERVED1 0x00010231
++#define OID_VLAN_RESERVED2 0x00010232
++#define OID_VLAN_RESERVED3 0x00010233
++#define OID_VLAN_RESERVED4 0x00010234
++#if NDIS_SUPPORT_NDIS630
++#define OID_PACKET_COALESCING_FILTER_MATCH_COUNT 0x00010235
++#endif
++#endif
++
++#if NTDDI_VERSION >= 0x06020000 || NDIS_SUPPORT_NDIS630
++#define OID_NIC_SWITCH_CREATE_SWITCH 0x00010237
++#define OID_NIC_SWITCH_PARAMETERS 0x00010238
++#define OID_NIC_SWITCH_DELETE_SWITCH 0x00010239
++#define OID_NIC_SWITCH_ENUM_SWITCHES 0x00010240
++#define OID_NIC_SWITCH_CREATE_VPORT 0x00010241
++#define OID_NIC_SWITCH_VPORT_PARAMETERS 0x00010242
++#define OID_NIC_SWITCH_ENUM_VPORTS 0x00010243
++#define OID_NIC_SWITCH_DELETE_VPORT 0x00010244
++#define OID_NIC_SWITCH_ALLOCATE_VF 0x00010245
++#define OID_NIC_SWITCH_FREE_VF 0x00010246
++#define OID_NIC_SWITCH_VF_PARAMETERS 0x00010247
++#define OID_NIC_SWITCH_ENUM_VFS 0x00010248
++
++#define OID_SRIOV_HARDWARE_CAPABILITIES 0x00010249
++#define OID_SRIOV_CURRENT_CAPABILITIES 0x00010250
++#define OID_SRIOV_READ_VF_CONFIG_SPACE 0x00010251
++#define OID_SRIOV_WRITE_VF_CONFIG_SPACE 0x00010252
++#define OID_SRIOV_READ_VF_CONFIG_BLOCK 0x00010253
++#define OID_SRIOV_WRITE_VF_CONFIG_BLOCK 0x00010254
++#define OID_SRIOV_RESET_VF 0x00010255
++#define OID_SRIOV_SET_VF_POWER_STATE 0x00010256
++#define OID_SRIOV_VF_VENDOR_DEVICE_ID 0x00010257
++#define OID_SRIOV_PROBED_BARS 0x00010258
++#define OID_SRIOV_BAR_RESOURCES 0x00010259
++#define OID_SRIOV_PF_LUID 0x00010260
++
++#define OID_SRIOV_CONFIG_STATE 0x00010261
++#define OID_SRIOV_VF_SERIAL_NUMBER 0x00010262
++#define OID_SRIOV_VF_INVALIDATE_CONFIG_BLOCK 0x00010269
++
++#define OID_SWITCH_PROPERTY_ADD 0x00010263
++#define OID_SWITCH_PROPERTY_UPDATE 0x00010264
++#define OID_SWITCH_PROPERTY_DELETE 0x00010265
++#define OID_SWITCH_PROPERTY_ENUM 0x00010266
++#define OID_SWITCH_FEATURE_STATUS_QUERY 0x00010267
++
++#define OID_SWITCH_NIC_REQUEST 0x00010270
++#define OID_SWITCH_PORT_PROPERTY_ADD 0x00010271
++#define OID_SWITCH_PORT_PROPERTY_UPDATE 0x00010272
++#define OID_SWITCH_PORT_PROPERTY_DELETE 0x00010273
++#define OID_SWITCH_PORT_PROPERTY_ENUM 0x00010274
++#define OID_SWITCH_PARAMETERS 0x00010275
++#define OID_SWITCH_PORT_ARRAY 0x00010276
++#define OID_SWITCH_NIC_ARRAY 0x00010277
++#define OID_SWITCH_PORT_CREATE 0x00010278
++#define OID_SWITCH_PORT_DELETE 0x00010279
++#define OID_SWITCH_NIC_CREATE 0x0001027a
++#define OID_SWITCH_NIC_CONNECT 0x0001027b
++#define OID_SWITCH_NIC_DISCONNECT 0x0001027c
++#define OID_SWITCH_NIC_DELETE 0x0001027d
++#define OID_SWITCH_PORT_FEATURE_STATUS_QUERY 0x0001027e
++#define OID_SWITCH_PORT_TEARDOWN 0x0001027f
++#define OID_SWITCH_NIC_SAVE 0x00010290
++#define OID_SWITCH_NIC_SAVE_COMPLETE 0x00010291
++#define OID_SWITCH_NIC_RESTORE 0x00010292
++#define OID_SWITCH_NIC_RESTORE_COMPLETE 0x00010293
++#define OID_SWITCH_NIC_UPDATED 0x00010294
++#define OID_SWITCH_PORT_UPDATED 0x00010295
++#endif
++
++#define NDIS_PNP_WAKE_UP_MAGIC_PACKET 0x00000001
++#define NDIS_PNP_WAKE_UP_PATTERN_MATCH 0x00000002
++#define NDIS_PNP_WAKE_UP_LINK_CHANGE 0x00000004
++
++#define OID_TCP_TASK_OFFLOAD 0xfc010201
++#define OID_TCP_TASK_IPSEC_ADD_SA 0xfc010202
++#define OID_TCP_TASK_IPSEC_DELETE_SA 0xfc010203
++#define OID_TCP_SAN_SUPPORT 0xfc010204
++#define OID_TCP_TASK_IPSEC_ADD_UDPESP_SA 0xfc010205
++#define OID_TCP_TASK_IPSEC_DELETE_UDPESP_SA 0xfc010206
++#define OID_TCP4_OFFLOAD_STATS 0xfc010207
++#define OID_TCP6_OFFLOAD_STATS 0xfc010208
++#define OID_IP4_OFFLOAD_STATS 0xfc010209
++#define OID_IP6_OFFLOAD_STATS 0xfc01020a
++
++#define OID_TCP_OFFLOAD_CURRENT_CONFIG 0xfc01020b
++#define OID_TCP_OFFLOAD_PARAMETERS 0xfc01020c
++#define OID_TCP_OFFLOAD_HARDWARE_CAPABILITIES 0xfc01020d
++#define OID_TCP_CONNECTION_OFFLOAD_CURRENT_CONFIG 0xfc01020e
++#define OID_TCP_CONNECTION_OFFLOAD_HARDWARE_CAPABILITIES 0xfc01020f
++#define OID_OFFLOAD_ENCAPSULATION 0x0101010a
++
++#if NDIS_SUPPORT_NDIS61
++#define OID_TCP_TASK_IPSEC_OFFLOAD_V2_ADD_SA 0xfc030202
++#define OID_TCP_TASK_IPSEC_OFFLOAD_V2_DELETE_SA 0xfc030203
++#define OID_TCP_TASK_IPSEC_OFFLOAD_V2_UPDATE_SA 0xfc030204
++#endif
++#if NDIS_SUPPORT_NDIS630
++#define OID_TCP_TASK_IPSEC_OFFLOAD_V2_ADD_SA_EX 0xfc030205
++#endif
++
++#define OID_FFP_SUPPORT 0xfc010210
++#define OID_FFP_FLUSH 0xfc010211
++#define OID_FFP_CONTROL 0xfc010212
++#define OID_FFP_PARAMS 0xfc010213
++#define OID_FFP_DATA 0xfc010214
++
++#define OID_FFP_DRIVER_STATS 0xfc020210
++#define OID_FFP_ADAPTER_STATS 0xfc020211
++
++#define OID_TCP_CONNECTION_OFFLOAD_PARAMETERS 0xfc030201
++
++#if NTDDI_VERSION >= 0x06010000 || NDIS_SUPPORT_NDIS620
++#define OID_TUNNEL_INTERFACE_SET_OID 0x0f010106
++#define OID_TUNNEL_INTERFACE_RELEASE_OID 0x0f010107
++#endif
++
++#define OID_QOS_RESERVED1 0xfb010100
++#define OID_QOS_RESERVED2 0xfb010101
++#define OID_QOS_RESERVED3 0xfb010102
++#define OID_QOS_RESERVED4 0xfb010103
++#define OID_QOS_RESERVED5 0xfb010104
++#define OID_QOS_RESERVED6 0xfb010105
++#define OID_QOS_RESERVED7 0xfb010106
++#define OID_QOS_RESERVED8 0xfb010107
++#define OID_QOS_RESERVED9 0xfb010108
++#define OID_QOS_RESERVED10 0xfb010109
++#define OID_QOS_RESERVED11 0xfb01010a
++#define OID_QOS_RESERVED12 0xfb01010b
++#define OID_QOS_RESERVED13 0xfb01010c
++#define OID_QOS_RESERVED14 0xfb01010d
++#define OID_QOS_RESERVED15 0xfb01010e
++#define OID_QOS_RESERVED16 0xfb01010f
++#define OID_QOS_RESERVED17 0xfb010110
++#define OID_QOS_RESERVED18 0xfb010111
++#define OID_QOS_RESERVED19 0xfb010112
++#define OID_QOS_RESERVED20 0xfb010113
++
++#define OFFLOAD_MAX_SAS 3
++
++#define OFFLOAD_INBOUND_SA 0x0001
++#define OFFLOAD_OUTBOUND_SA 0x0002
++
++  typedef struct NDIS_CO_DEVICE_PROFILE {
++    NDIS_VAR_DATA_DESC DeviceDescription;
++    NDIS_VAR_DATA_DESC DevSpecificInfo;
++    ULONG ulTAPISupplementaryPassThru;
++    ULONG ulAddressModes;
++    ULONG ulNumAddresses;
++    ULONG ulBearerModes;
++    ULONG ulMaxTxRate;
++    ULONG ulMinTxRate;
++    ULONG ulMaxRxRate;
++    ULONG ulMinRxRate;
++    ULONG ulMediaModes;
++    ULONG ulGenerateToneModes;
++    ULONG ulGenerateToneMaxNumFreq;
++    ULONG ulGenerateDigitModes;
++    ULONG ulMonitorToneMaxNumFreq;
++    ULONG ulMonitorToneMaxNumEntries;
++    ULONG ulMonitorDigitModes;
++    ULONG ulGatherDigitsMinTimeout;
++    ULONG ulGatherDigitsMaxTimeout;
++    ULONG ulDevCapFlags;
++    ULONG ulMaxNumActiveCalls;
++    ULONG ulAnswerMode;
++    ULONG ulUUIAcceptSize;
++    ULONG ulUUIAnswerSize;
++    ULONG ulUUIMakeCallSize;
++    ULONG ulUUIDropSize;
++    ULONG ulUUISendUserUserInfoSize;
++    ULONG ulUUICallInfoSize;
++  } NDIS_CO_DEVICE_PROFILE, *PNDIS_CO_DEVICE_PROFILE;
++
++#ifndef IP_EXPORT_INCLUDED
++  typedef ULONG IPAddr, IPMask;
++#endif
++  typedef ULONG SPI_TYPE;
++
++  typedef enum _OFFLOAD_OPERATION_E {
++    AUTHENTICATE = 1,
++    ENCRYPT
++  } OFFLOAD_OPERATION_E;
++
++  typedef struct _OFFLOAD_ALGO_INFO {
++    ULONG algoIdentifier;
++    ULONG algoKeylen;
++    ULONG algoRounds;
++  } OFFLOAD_ALGO_INFO, *POFFLOAD_ALGO_INFO;
++
++  typedef enum _OFFLOAD_CONF_ALGO {
++    OFFLOAD_IPSEC_CONF_NONE,
++    OFFLOAD_IPSEC_CONF_DES,
++    OFFLOAD_IPSEC_CONF_RESERVED,
++    OFFLOAD_IPSEC_CONF_3_DES,
++    OFFLOAD_IPSEC_CONF_MAX
++  } OFFLOAD_CONF_ALGO;
++
++  typedef enum _OFFLOAD_INTEGRITY_ALGO {
++    OFFLOAD_IPSEC_INTEGRITY_NONE,
++    OFFLOAD_IPSEC_INTEGRITY_MD5,
++    OFFLOAD_IPSEC_INTEGRITY_SHA,
++    OFFLOAD_IPSEC_INTEGRITY_MAX
++  } OFFLOAD_INTEGRITY_ALGO;
++
++  typedef struct _OFFLOAD_SECURITY_ASSOCIATION {
++    OFFLOAD_OPERATION_E Operation;
++    SPI_TYPE SPI;
++    OFFLOAD_ALGO_INFO IntegrityAlgo;
++    OFFLOAD_ALGO_INFO ConfAlgo;
++    OFFLOAD_ALGO_INFO Reserved;
++  } OFFLOAD_SECURITY_ASSOCIATION, *POFFLOAD_SECURITY_ASSOCIATION;
++
++  typedef struct _OFFLOAD_IPSEC_ADD_SA {
++    IPAddr SrcAddr;
++    IPMask SrcMask;
++    IPAddr DestAddr;
++    IPMask DestMask;
++    ULONG Protocol;
++    USHORT SrcPort;
++    USHORT DestPort;
++    IPAddr SrcTunnelAddr;
++    IPAddr DestTunnelAddr;
++    USHORT Flags;
++    SHORT NumSAs;
++    OFFLOAD_SECURITY_ASSOCIATION SecAssoc[OFFLOAD_MAX_SAS];
++    HANDLE OffloadHandle;
++    ULONG KeyLen;
++    UCHAR KeyMat[1];
++  } OFFLOAD_IPSEC_ADD_SA, *POFFLOAD_IPSEC_ADD_SA;
++
++  typedef struct _OFFLOAD_IPSEC_DELETE_SA {
++    HANDLE OffloadHandle;
++  } OFFLOAD_IPSEC_DELETE_SA, *POFFLOAD_IPSEC_DELETE_SA;
++
++  typedef enum _UDP_ENCAP_TYPE {
++    OFFLOAD_IPSEC_UDPESP_ENCAPTYPE_IKE,
++    OFFLOAD_IPSEC_UDPESP_ENCAPTYPE_OTHER
++  } UDP_ENCAP_TYPE, *PUDP_ENCAP_TYPE;
++
++  typedef struct _OFFLOAD_IPSEC_UDPESP_ENCAPTYPE_ENTRY {
++    UDP_ENCAP_TYPE UdpEncapType;
++    USHORT DstEncapPort;
++  } OFFLOAD_IPSEC_UDPESP_ENCAPTYPE_ENTRY, *POFFLOAD_IPSEC_UDPESP_ENCAPTYPE_ENTRY;
++
++  typedef struct _OFFLOAD_IPSEC_ADD_UDPESP_SA {
++    IPAddr SrcAddr;
++    IPMask SrcMask;
++    IPAddr DstAddr;
++    IPMask DstMask;
++    ULONG Protocol;
++    USHORT SrcPort;
++    USHORT DstPort;
++    IPAddr SrcTunnelAddr;
++    IPAddr DstTunnelAddr;
++    USHORT Flags;
++    SHORT NumSAs;
++    OFFLOAD_SECURITY_ASSOCIATION SecAssoc[OFFLOAD_MAX_SAS];
++    HANDLE OffloadHandle;
++    OFFLOAD_IPSEC_UDPESP_ENCAPTYPE_ENTRY EncapTypeEntry;
++    HANDLE EncapTypeEntryOffldHandle;
++    ULONG KeyLen;
++    UCHAR KeyMat[1];
++  } OFFLOAD_IPSEC_ADD_UDPESP_SA, *POFFLOAD_IPSEC_ADD_UDPESP_SA;
++
++  typedef struct _OFFLOAD_IPSEC_DELETE_UDPESP_SA {
++    HANDLE OffloadHandle;
++    HANDLE EncapTypeEntryOffldHandle;
++  } OFFLOAD_IPSEC_DELETE_UDPESP_SA, *POFFLOAD_IPSEC_DELETE_UDPESP_SA;
++
++  typedef ULONG NDIS_VLAN_ID;
++
++  typedef enum _NDIS_MEDIUM {
++    NdisMedium802_3,
++    NdisMedium802_5,
++    NdisMediumFddi,
++    NdisMediumWan,
++    NdisMediumLocalTalk,
++    NdisMediumDix,
++    NdisMediumArcnetRaw,
++    NdisMediumArcnet878_2,
++    NdisMediumAtm,
++    NdisMediumWirelessWan,
++    NdisMediumIrda,
++    NdisMediumBpc,
++    NdisMediumCoWan,
++    NdisMedium1394,
++    NdisMediumInfiniBand,
++#if NTDDI_VERSION >= 0x06000000 || NDIS_SUPPORT_NDIS6
++    NdisMediumTunnel,
++    NdisMediumNative802_11,
++    NdisMediumLoopback,
++#endif
++#if NTDDI_VERSION >= 0x06010000
++    NdisMediumWiMAX,
++    NdisMediumIP,
++#endif
++    NdisMediumMax
++  } NDIS_MEDIUM, *PNDIS_MEDIUM;
++
++  typedef enum _NDIS_PHYSICAL_MEDIUM {
++    NdisPhysicalMediumUnspecified,
++    NdisPhysicalMediumWirelessLan,
++    NdisPhysicalMediumCableModem,
++    NdisPhysicalMediumPhoneLine,
++    NdisPhysicalMediumPowerLine,
++    NdisPhysicalMediumDSL,
++    NdisPhysicalMediumFibreChannel,
++    NdisPhysicalMedium1394,
++    NdisPhysicalMediumWirelessWan,
++    NdisPhysicalMediumNative802_11,
++    NdisPhysicalMediumBluetooth,
++    NdisPhysicalMediumInfiniband,
++    NdisPhysicalMediumWiMax,
++    NdisPhysicalMediumUWB,
++    NdisPhysicalMedium802_3,
++    NdisPhysicalMedium802_5,
++    NdisPhysicalMediumIrda,
++    NdisPhysicalMediumWiredWAN,
++    NdisPhysicalMediumWiredCoWan,
++    NdisPhysicalMediumOther,
++    NdisPhysicalMediumMax
++  } NDIS_PHYSICAL_MEDIUM, *PNDIS_PHYSICAL_MEDIUM;
++
++  typedef struct _TRANSPORT_HEADER_OFFSET {
++    USHORT ProtocolType;
++    USHORT HeaderOffset;
++  } TRANSPORT_HEADER_OFFSET, *PTRANSPORT_HEADER_OFFSET;
++
++  typedef struct _NETWORK_ADDRESS {
++    USHORT AddressLength;
++    USHORT AddressType;
++    UCHAR Address[1];
++  } NETWORK_ADDRESS, *PNETWORK_ADDRESS;
++
++  typedef struct _NETWORK_ADDRESS_LIST {
++    LONG AddressCount;
++    USHORT AddressType;
++    NETWORK_ADDRESS Address[1];
++  } NETWORK_ADDRESS_LIST, *PNETWORK_ADDRESS_LIST;
++
++  typedef struct _NETWORK_ADDRESS_IP {
++    USHORT sin_port;
++    ULONG in_addr;
++    UCHAR sin_zero[8];
++  } NETWORK_ADDRESS_IP, *PNETWORK_ADDRESS_IP;
++
++#define NDIS_PROTOCOL_ID_DEFAULT 0x00
++#define NDIS_PROTOCOL_ID_TCP_IP 0x02
++#define NDIS_PROTOCOL_ID_IPX 0x06
++#define NDIS_PROTOCOL_ID_NBF 0x07
++#define NDIS_PROTOCOL_ID_MAX 0x0f
++#define NDIS_PROTOCOL_ID_MASK 0x0f
++
++#define READABLE_LOCAL_CLOCK 0x00000001
++#define CLOCK_NETWORK_DERIVED 0x00000002
++#define CLOCK_PRECISION 0x00000004
++#define RECEIVE_TIME_INDICATION_CAPABLE 0x00000008
++#define TIMED_SEND_CAPABLE 0x00000010
++#define TIME_STAMP_CAPABLE 0x00000020
++
++#define NDIS_DEVICE_WAKE_UP_ENABLE 0x00000001
++#define NDIS_DEVICE_WAKE_ON_PATTERN_MATCH_ENABLE 0x00000002
++#define NDIS_DEVICE_WAKE_ON_MAGIC_PACKET_ENABLE 0x00000004
++
++#define WAN_PROTOCOL_KEEPS_STATS 0x00000001
++
++#define NETWORK_ADDRESS_LENGTH_IP sizeof (NETWORK_ADDRESS_IP)
++#define NETWORK_ADDRESS_LENGTH_IPX sizeof (NETWORK_ADDRESS_IPX)
++
++  typedef struct _NETWORK_ADDRESS_IPX {
++    ULONG NetworkAddress;
++    UCHAR NodeAddress[6];
++    USHORT Socket;
++  } NETWORK_ADDRESS_IPX, *PNETWORK_ADDRESS_IPX;
++
++  typedef enum _NDIS_HARDWARE_STATUS {
++    NdisHardwareStatusReady,
++    NdisHardwareStatusInitializing,
++    NdisHardwareStatusReset,
++    NdisHardwareStatusClosing,
++    NdisHardwareStatusNotReady
++  } NDIS_HARDWARE_STATUS, *PNDIS_HARDWARE_STATUS;
++
++  typedef struct _GEN_GET_TIME_CAPS {
++    ULONG Flags;
++    ULONG ClockPrecision;
++  } GEN_GET_TIME_CAPS, *PGEN_GET_TIME_CAPS;
++
++  typedef struct _GEN_GET_NETCARD_TIME {
++    ULONGLONG ReadTime;
++  } GEN_GET_NETCARD_TIME, *PGEN_GET_NETCARD_TIME;
++
++  typedef struct _NDIS_PM_PACKET_PATTERN {
++    ULONG Priority;
++    ULONG Reserved;
++    ULONG MaskSize;
++    ULONG PatternOffset;
++    ULONG PatternSize;
++    ULONG PatternFlags;
++  } NDIS_PM_PACKET_PATTERN, *PNDIS_PM_PACKET_PATTERN;
++
++  typedef enum _NDIS_DEVICE_POWER_STATE {
++    NdisDeviceStateUnspecified = 0,
++    NdisDeviceStateD0,
++    NdisDeviceStateD1,
++    NdisDeviceStateD2,
++    NdisDeviceStateD3,
++    NdisDeviceStateMaximum
++  } NDIS_DEVICE_POWER_STATE, *PNDIS_DEVICE_POWER_STATE;
++
++  typedef struct _NDIS_PM_WAKE_UP_CAPABILITIES {
++    NDIS_DEVICE_POWER_STATE MinMagicPacketWakeUp;
++    NDIS_DEVICE_POWER_STATE MinPatternWakeUp;
++    NDIS_DEVICE_POWER_STATE MinLinkChangeWakeUp;
++  } NDIS_PM_WAKE_UP_CAPABILITIES, *PNDIS_PM_WAKE_UP_CAPABILITIES;
++
++  typedef struct _NDIS_PNP_CAPABILITIES {
++    ULONG Flags;
++    NDIS_PM_WAKE_UP_CAPABILITIES WakeUpCapabilities;
++  } NDIS_PNP_CAPABILITIES, *PNDIS_PNP_CAPABILITIES;
++
++  typedef enum _NDIS_FDDI_ATTACHMENT_TYPE {
++    NdisFddiTypeIsolated = 1,
++    NdisFddiTypeLocalA,
++    NdisFddiTypeLocalB,
++    NdisFddiTypeLocalAB,
++    NdisFddiTypeLocalS,
++    NdisFddiTypeWrapA,
++    NdisFddiTypeWrapB,
++    NdisFddiTypeWrapAB,
++    NdisFddiTypeWrapS,
++    NdisFddiTypeCWrapA,
++    NdisFddiTypeCWrapB,
++    NdisFddiTypeCWrapS,
++    NdisFddiTypeThrough
++  } NDIS_FDDI_ATTACHMENT_TYPE, *PNDIS_FDDI_ATTACHMENT_TYPE;
++
++  typedef enum _NDIS_FDDI_RING_MGT_STATE {
++    NdisFddiRingIsolated = 1,
++    NdisFddiRingNonOperational,
++    NdisFddiRingOperational,
++    NdisFddiRingDetect,
++    NdisFddiRingNonOperationalDup,
++    NdisFddiRingOperationalDup,
++    NdisFddiRingDirected,
++    NdisFddiRingTrace
++  } NDIS_FDDI_RING_MGT_STATE, *PNDIS_FDDI_RING_MGT_STATE;
++
++  typedef enum _NDIS_FDDI_LCONNECTION_STATE {
++    NdisFddiStateOff = 1,
++    NdisFddiStateBreak,
++    NdisFddiStateTrace,
++    NdisFddiStateConnect,
++    NdisFddiStateNext,
++    NdisFddiStateSignal,
++    NdisFddiStateJoin,
++    NdisFddiStateVerify,
++    NdisFddiStateActive,
++    NdisFddiStateMaintenance
++  } NDIS_FDDI_LCONNECTION_STATE, *PNDIS_FDDI_LCONNECTION_STATE;
++
++  typedef enum _NDIS_WAN_MEDIUM_SUBTYPE {
++    NdisWanMediumHub,
++    NdisWanMediumX_25,
++    NdisWanMediumIsdn,
++    NdisWanMediumSerial,
++    NdisWanMediumFrameRelay,
++    NdisWanMediumAtm,
++    NdisWanMediumSonet,
++    NdisWanMediumSW56K,
++    NdisWanMediumPPTP,
++    NdisWanMediumL2TP,
++    NdisWanMediumIrda,
++    NdisWanMediumParallel,
++    NdisWanMediumPppoe,
++#if NTDDI_VERSION >= 0x06000000
++    NdisWanMediumSSTP,
++    NdisWanMediumAgileVPN,
++#endif
++  } NDIS_WAN_MEDIUM_SUBTYPE, *PNDIS_WAN_MEDIUM_SUBTYPE;
++
++  typedef enum _NDIS_WAN_HEADER_FORMAT {
++    NdisWanHeaderNative,
++    NdisWanHeaderEthernet
++  } NDIS_WAN_HEADER_FORMAT, *PNDIS_WAN_HEADER_FORMAT;
++
++  typedef enum _NDIS_WAN_QUALITY {
++    NdisWanRaw,
++    NdisWanErrorControl,
++    NdisWanReliable
++  } NDIS_WAN_QUALITY, *PNDIS_WAN_QUALITY;
++
++  typedef struct _NDIS_WAN_PROTOCOL_CAPS {
++    ULONG Flags;
++    ULONG Reserved;
++  } NDIS_WAN_PROTOCOL_CAPS, *PNDIS_WAN_PROTOCOL_CAPS;
++
++  typedef enum _NDIS_802_5_RING_STATE {
++    NdisRingStateOpened = 1,
++    NdisRingStateClosed,
++    NdisRingStateOpening,
++    NdisRingStateClosing,
++    NdisRingStateOpenFailure,
++    NdisRingStateRingFailure
++  } NDIS_802_5_RING_STATE, *PNDIS_802_5_RING_STATE;
++
++  typedef enum _NDIS_MEDIA_STATE {
++    NdisMediaStateConnected,
++    NdisMediaStateDisconnected
++  } NDIS_MEDIA_STATE, *PNDIS_MEDIA_STATE;
++
++  typedef ULONG Priority_802_3;
++
++  typedef struct _NDIS_CO_LINK_SPEED {
++    ULONG Outbound;
++    ULONG Inbound;
++  } NDIS_CO_LINK_SPEED, *PNDIS_CO_LINK_SPEED;
++
++#if NTDDI_VERSION >= 0x06000000 || NDIS_SUPPORT_NDIS6
++#define NDIS_LINK_SPEED_UNKNOWN NET_IF_LINK_SPEED_UNKNOWN
++
++  typedef struct _NDIS_LINK_SPEED {
++    ULONG64 XmitLinkSpeed;
++    ULONG64 RcvLinkSpeed;
++  } NDIS_LINK_SPEED, *PNDIS_LINK_SPEED;
++#endif
++
++#ifndef _NDIS_
++  typedef int NDIS_STATUS, *PNDIS_STATUS;
++#endif
++
++/*
++#if NTDDI_VERSION >= 0x06000000 || NDIS_SUPPORT_NDIS6
++#ifndef __WINDOT11_H__
++#include <windot11.h>
++#endif
++#endif
++ */
++
++#define fNDIS_GUID_TO_OID 0x00000001
++#define fNDIS_GUID_TO_STATUS 0x00000002
++#define fNDIS_GUID_ANSI_STRING 0x00000004
++#define fNDIS_GUID_UNICODE_STRING 0x00000008
++#define fNDIS_GUID_ARRAY 0x00000010
++#define fNDIS_GUID_ALLOW_READ 0x00000020
++#define fNDIS_GUID_ALLOW_WRITE 0x00000040
++#define fNDIS_GUID_METHOD 0x00000080
++#define fNDIS_GUID_NDIS_RESERVED 0x00000100
++#define fNDIS_GUID_SUPPORT_COMMON_HEADER 0x00000200
++
++#define NDIS_PACKET_TYPE_DIRECTED 0x00000001
++#define NDIS_PACKET_TYPE_MULTICAST 0x00000002
++#define NDIS_PACKET_TYPE_ALL_MULTICAST 0x00000004
++#define NDIS_PACKET_TYPE_BROADCAST 0x00000008
++#define NDIS_PACKET_TYPE_SOURCE_ROUTING 0x00000010
++#define NDIS_PACKET_TYPE_PROMISCUOUS 0x00000020
++#define NDIS_PACKET_TYPE_SMT 0x00000040
++#define NDIS_PACKET_TYPE_ALL_LOCAL 0x00000080
++#define NDIS_PACKET_TYPE_GROUP 0x00001000
++#define NDIS_PACKET_TYPE_ALL_FUNCTIONAL 0x00002000
++#define NDIS_PACKET_TYPE_FUNCTIONAL 0x00004000
++#define NDIS_PACKET_TYPE_MAC_FRAME 0x00008000
++#define NDIS_PACKET_TYPE_NO_LOCAL 0x00010000
++
++#define NDIS_RING_SIGNAL_LOSS 0x00008000
++#define NDIS_RING_HARD_ERROR 0x00004000
++#define NDIS_RING_SOFT_ERROR 0x00002000
++#define NDIS_RING_TRANSMIT_BEACON 0x00001000
++#define NDIS_RING_LOBE_WIRE_FAULT 0x00000800
++#define NDIS_RING_AUTO_REMOVAL_ERROR 0x00000400
++#define NDIS_RING_REMOVE_RECEIVED 0x00000200
++#define NDIS_RING_COUNTER_OVERFLOW 0x00000100
++#define NDIS_RING_SINGLE_STATION 0x00000080
++#define NDIS_RING_RING_RECOVERY 0x00000040
++
++#define NDIS_PROT_OPTION_ESTIMATED_LENGTH 0x00000001
++#define NDIS_PROT_OPTION_NO_LOOPBACK 0x00000002
++#define NDIS_PROT_OPTION_NO_RSVD_ON_RCVPKT 0x00000004
++#define NDIS_PROT_OPTION_SEND_RESTRICTED 0x00000008
++
++#define NDIS_MAC_OPTION_COPY_LOOKAHEAD_DATA 0x00000001
++#define NDIS_MAC_OPTION_RECEIVE_SERIALIZED 0x00000002
++#define NDIS_MAC_OPTION_TRANSFERS_NOT_PEND 0x00000004
++#define NDIS_MAC_OPTION_NO_LOOPBACK 0x00000008
++
++#define NDIS_MAC_OPTION_FULL_DUPLEX 0x00000010
++
++#define NDIS_MAC_OPTION_EOTX_INDICATION 0x00000020
++#define NDIS_MAC_OPTION_8021P_PRIORITY 0x00000040
++#define NDIS_MAC_OPTION_SUPPORTS_MAC_ADDRESS_OVERWRITE 0x00000080
++#define NDIS_MAC_OPTION_RECEIVE_AT_DPC 0x00000100
++#define NDIS_MAC_OPTION_8021Q_VLAN 0x00000200
++#define NDIS_MAC_OPTION_RESERVED 0x80000000
++
++#define NDIS_MEDIA_CAP_TRANSMIT 0x00000001
++#define NDIS_MEDIA_CAP_RECEIVE 0x00000002
++
++#define NDIS_CO_MAC_OPTION_DYNAMIC_LINK_SPEED 0x00000001
++
++  typedef struct _NDIS_GUID {
++    GUID Guid;
++    _ANONYMOUS_UNION union {
++      NDIS_OID Oid;
++      NDIS_STATUS Status;
++    };
++    ULONG Size;
++    ULONG Flags;
++  } NDIS_GUID, *PNDIS_GUID;
++
++  typedef struct _NDIS_IRDA_PACKET_INFO {
++    ULONG ExtraBOFs;
++    ULONG MinTurnAroundTime;
++  } NDIS_IRDA_PACKET_INFO, *PNDIS_IRDA_PACKET_INFO;
++
++#if NTDDI_VERSION >= 0x06000000 || NDIS_SUPPORT_NDIS6
++#define NDIS_MAKE_NET_LUID(PNLUID, IFTYPE, NLUIDIDX) { (PNLUID)->Info.IfType = IFTYPE; (PNLUID)->Info.NetLuidIndex = NLUIDIDX; (PNLUID)->Info.Reserved = 0; }
++
++#define MAXIMUM_IP_OPER_STATUS_ADDRESS_FAMILIES_SUPPORTED 32
++
++#define NDIS_IF_MAX_STRING_SIZE IF_MAX_STRING_SIZE
++#define NDIS_MAX_PHYS_ADDRESS_LENGTH IF_MAX_PHYS_ADDRESS_LENGTH
++
++#define NDIS_LINK_STATE_XMIT_LINK_SPEED_AUTO_NEGOTIATED 0x00000001
++#define NDIS_LINK_STATE_RCV_LINK_SPEED_AUTO_NEGOTIATED 0x00000002
++#define NDIS_LINK_STATE_DUPLEX_AUTO_NEGOTIATED 0x00000004
++#define NDIS_LINK_STATE_PAUSE_FUNCTIONS_AUTO_NEGOTIATED 0x00000008
++
++#define NDIS_LINK_STATE_REVISION_1 1
++#define NDIS_LINK_PARAMETERS_REVISION_1 1
++#define NDIS_OPER_STATE_REVISION_1 1
++#define NDIS_IP_OPER_STATUS_INFO_REVISION_1 1
++#define NDIS_IP_OPER_STATE_REVISION_1 1
++
++#define NDIS_SIZEOF_LINK_STATE_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_LINK_STATE, AutoNegotiationFlags)
++#define NDIS_SIZEOF_LINK_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_LINK_PARAMETERS, AutoNegotiationFlags)
++#define NDIS_SIZEOF_OPER_STATE_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_OPER_STATE, OperationalStatusFlags)
++#define NDIS_SIZEOF_IP_OPER_STATUS_INFO_REVISION_1 FIELD_OFFSET (NDIS_IP_OPER_STATUS_INFO, IpOperationalStatus) + MAXIMUM_IP_OPER_STATUS_ADDRESS_FAMILIES_SUPPORTED *sizeof (NDIS_IP_OPER_STATUS)
++#define NDIS_SIZEOF_IP_OPER_STATE_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_IP_OPER_STATE, IpOperationalStatus)
++
++  typedef IF_COUNTED_STRING NDIS_IF_COUNTED_STRING, *PNDIS_IF_COUNTED_STRING;
++  typedef IF_PHYSICAL_ADDRESS NDIS_IF_PHYSICAL_ADDRESS, *PNDIS_IF_PHYSICAL_ADDRESS;
++  typedef NET_IF_MEDIA_CONNECT_STATE NDIS_MEDIA_CONNECT_STATE, *PNDIS_MEDIA_CONNECT_STATE;
++  typedef NET_IF_MEDIA_DUPLEX_STATE NDIS_MEDIA_DUPLEX_STATE, *PNDIS_MEDIA_DUPLEX_STATE;
++
++  typedef enum _NDIS_SUPPORTED_PAUSE_FUNCTIONS {
++    NdisPauseFunctionsUnsupported,
++    NdisPauseFunctionsSendOnly,
++    NdisPauseFunctionsReceiveOnly,
++    NdisPauseFunctionsSendAndReceive,
++    NdisPauseFunctionsUnknown
++  } NDIS_SUPPORTED_PAUSE_FUNCTIONS, *PNDIS_SUPPORTED_PAUSE_FUNCTIONS;
++
++  typedef struct _NDIS_LINK_STATE {
++    NDIS_OBJECT_HEADER Header;
++    NDIS_MEDIA_CONNECT_STATE MediaConnectState;
++    NDIS_MEDIA_DUPLEX_STATE MediaDuplexState;
++    ULONG64 XmitLinkSpeed;
++    ULONG64 RcvLinkSpeed;
++    NDIS_SUPPORTED_PAUSE_FUNCTIONS PauseFunctions;
++    ULONG AutoNegotiationFlags;
++  } NDIS_LINK_STATE, *PNDIS_LINK_STATE;
++
++  typedef struct _NDIS_LINK_PARAMETERS {
++    NDIS_OBJECT_HEADER Header;
++    NDIS_MEDIA_DUPLEX_STATE MediaDuplexState;
++    ULONG64 XmitLinkSpeed;
++    ULONG64 RcvLinkSpeed;
++    NDIS_SUPPORTED_PAUSE_FUNCTIONS PauseFunctions;
++    ULONG AutoNegotiationFlags;
++  } NDIS_LINK_PARAMETERS, *PNDIS_LINK_PARAMETERS;
++
++  typedef struct _NDIS_OPER_STATE {
++    NDIS_OBJECT_HEADER Header;
++    NET_IF_OPER_STATUS OperationalStatus;
++    ULONG OperationalStatusFlags;
++  } NDIS_OPER_STATE, *PNDIS_OPER_STATE;
++
++  typedef struct _NDIS_IP_OPER_STATUS {
++    ULONG AddressFamily;
++    NET_IF_OPER_STATUS OperationalStatus;
++    ULONG OperationalStatusFlags;
++  } NDIS_IP_OPER_STATUS, *PNDIS_IP_OPER_STATUS;
++
++  typedef struct _NDIS_IP_OPER_STATUS_INFO {
++    NDIS_OBJECT_HEADER Header;
++    ULONG Flags;
++    ULONG NumberofAddressFamiliesReturned;
++    NDIS_IP_OPER_STATUS IpOperationalStatus[MAXIMUM_IP_OPER_STATUS_ADDRESS_FAMILIES_SUPPORTED];
++  } NDIS_IP_OPER_STATUS_INFO, *PNDIS_IP_OPER_STATUS_INFO;
++
++  typedef struct _NDIS_IP_OPER_STATE {
++    NDIS_OBJECT_HEADER Header;
++    ULONG Flags;
++    NDIS_IP_OPER_STATUS IpOperationalStatus;
++  } NDIS_IP_OPER_STATE, *PNDIS_IP_OPER_STATE;
++
++#define NDIS_OFFLOAD_PARAMETERS_NO_CHANGE 0
++#define NDIS_OFFLOAD_PARAMETERS_TX_RX_DISABLED 1
++#define NDIS_OFFLOAD_PARAMETERS_TX_ENABLED_RX_DISABLED 2
++#define NDIS_OFFLOAD_PARAMETERS_RX_ENABLED_TX_DISABLED 3
++#define NDIS_OFFLOAD_PARAMETERS_TX_RX_ENABLED 4
++
++#define NDIS_OFFLOAD_PARAMETERS_LSOV1_DISABLED 1
++#define NDIS_OFFLOAD_PARAMETERS_LSOV1_ENABLED 2
++
++#define NDIS_OFFLOAD_PARAMETERS_IPSECV1_DISABLED 1
++#define NDIS_OFFLOAD_PARAMETERS_IPSECV1_AH_ENABLED 2
++#define NDIS_OFFLOAD_PARAMETERS_IPSECV1_ESP_ENABLED 3
++#define NDIS_OFFLOAD_PARAMETERS_IPSECV1_AH_AND_ESP_ENABLED 4
++
++#define NDIS_OFFLOAD_PARAMETERS_LSOV2_DISABLED 1
++#define NDIS_OFFLOAD_PARAMETERS_LSOV2_ENABLED 2
++
++#if NDIS_SUPPORT_NDIS61
++#define NDIS_OFFLOAD_PARAMETERS_IPSECV2_DISABLED 1
++#define NDIS_OFFLOAD_PARAMETERS_IPSECV2_AH_ENABLED 2
++#define NDIS_OFFLOAD_PARAMETERS_IPSECV2_ESP_ENABLED 3
++#define NDIS_OFFLOAD_PARAMETERS_IPSECV2_AH_AND_ESP_ENABLED 4
++#endif
++
++#if NDIS_SUPPORT_NDIS630
++#define NDIS_OFFLOAD_PARAMETERS_RSC_DISABLED 1
++#define NDIS_OFFLOAD_PARAMETERS_RSC_ENABLED 2
++
++#define NDIS_ENCAPSULATION_TYPE_GRE_MAC 0x00000001
++#define NDIS_ENCAPSULATION_TYPE_MAX NDIS_ENCAPSULATION_TYPE_GRE_MAC
++#endif
++
++#define NDIS_OFFLOAD_PARAMETERS_CONNECTION_OFFLOAD_DISABLED 1
++#define NDIS_OFFLOAD_PARAMETERS_CONNECTION_OFFLOAD_ENABLED 2
++
++#define NDIS_OFFLOAD_PARAMETERS_REVISION_1 1
++#if NDIS_SUPPORT_NDIS61
++#define NDIS_OFFLOAD_PARAMETERS_REVISION_2 2
++#endif
++#if NDIS_SUPPORT_NDIS630
++#define NDIS_OFFLOAD_PARAMETERS_REVISION_3 3
++#define NDIS_OFFLOAD_PARAMETERS_SKIP_REGISTRY_UPDATE 0x00000001
++#endif
++
++  typedef struct _NDIS_OFFLOAD_PARAMETERS {
++    NDIS_OBJECT_HEADER Header;
++    UCHAR IPv4Checksum;
++    UCHAR TCPIPv4Checksum;
++    UCHAR UDPIPv4Checksum;
++    UCHAR TCPIPv6Checksum;
++    UCHAR UDPIPv6Checksum;
++    UCHAR LsoV1;
++    UCHAR IPsecV1;
++    UCHAR LsoV2IPv4;
++    UCHAR LsoV2IPv6;
++    UCHAR TcpConnectionIPv4;
++    UCHAR TcpConnectionIPv6;
++    ULONG Flags;
++#if NDIS_SUPPORT_NDIS61
++    UCHAR IPsecV2;
++    UCHAR IPsecV2IPv4;
++#endif
++#if NDIS_SUPPORT_NDIS630
++    _ANONYMOUS_STRUCT struct {
++      UCHAR RscIPv4;
++      UCHAR RscIPv6;
++    };
++#endif
++#if NDIS_SUPPORT_NDIS630
++    _ANONYMOUS_STRUCT struct {
++      UCHAR EncapsulatedPacketTaskOffload;
++      UCHAR EncapsulationTypes;
++    };
++#endif
++  } NDIS_OFFLOAD_PARAMETERS, *PNDIS_OFFLOAD_PARAMETERS;
++
++#define NDIS_SIZEOF_OFFLOAD_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_OFFLOAD_PARAMETERS, Flags)
++#if NDIS_SUPPORT_NDIS61
++#define NDIS_SIZEOF_OFFLOAD_PARAMETERS_REVISION_2 RTL_SIZEOF_THROUGH_FIELD (NDIS_OFFLOAD_PARAMETERS, IPsecV2IPv4)
++#endif
++#if NDIS_SUPPORT_NDIS630
++#define NDIS_SIZEOF_OFFLOAD_PARAMETERS_REVISION_3 RTL_SIZEOF_THROUGH_FIELD (NDIS_OFFLOAD_PARAMETERS, EncapsulationTypes)
++#endif
++
++#define NDIS_OFFLOAD_NOT_SUPPORTED 0
++#define NDIS_OFFLOAD_SUPPORTED 1
++
++#define NDIS_OFFLOAD_SET_NO_CHANGE 0
++#define NDIS_OFFLOAD_SET_ON 1
++#define NDIS_OFFLOAD_SET_OFF 2
++
++#define NDIS_ENCAPSULATION_NOT_SUPPORTED 0x00000000
++#define NDIS_ENCAPSULATION_NULL 0x00000001
++#define NDIS_ENCAPSULATION_IEEE_802_3 0x00000002
++#define NDIS_ENCAPSULATION_IEEE_802_3_P_AND_Q 0x00000004
++#define NDIS_ENCAPSULATION_IEEE_802_3_P_AND_Q_IN_OOB 0x00000008
++#define NDIS_ENCAPSULATION_IEEE_LLC_SNAP_ROUTED 0x00000010
++
++  typedef struct _NDIS_TCP_LARGE_SEND_OFFLOAD_V1 {
++    struct {
++      ULONG Encapsulation;
++      ULONG MaxOffLoadSize;
++      ULONG MinSegmentCount;
++      ULONG TcpOptions:2;
++      ULONG IpOptions:2;
++    } IPv4;
++  } NDIS_TCP_LARGE_SEND_OFFLOAD_V1, *PNDIS_TCP_LARGE_SEND_OFFLOAD_V1;
++
++  typedef struct _NDIS_TCP_IP_CHECKSUM_OFFLOAD {
++    struct {
++      ULONG Encapsulation;
++      ULONG IpOptionsSupported:2;
++      ULONG TcpOptionsSupported:2;
++      ULONG TcpChecksum:2;
++      ULONG UdpChecksum:2;
++      ULONG IpChecksum:2;
++    } IPv4Transmit;
++    struct {
++      ULONG Encapsulation;
++      ULONG IpOptionsSupported:2;
++      ULONG TcpOptionsSupported:2;
++      ULONG TcpChecksum:2;
++      ULONG UdpChecksum:2;
++      ULONG IpChecksum:2;
++    } IPv4Receive;
++    struct {
++      ULONG Encapsulation;
++      ULONG IpExtensionHeadersSupported:2;
++      ULONG TcpOptionsSupported:2;
++      ULONG TcpChecksum:2;
++      ULONG UdpChecksum:2;
++    } IPv6Transmit;
++    struct {
++      ULONG Encapsulation;
++      ULONG IpExtensionHeadersSupported:2;
++      ULONG TcpOptionsSupported:2;
++      ULONG TcpChecksum:2;
++      ULONG UdpChecksum:2;
++    } IPv6Receive;
++  } NDIS_TCP_IP_CHECKSUM_OFFLOAD, *PNDIS_TCP_IP_CHECKSUM_OFFLOAD;
++  typedef struct _NDIS_IPSEC_OFFLOAD_V1 {
++    struct {
++      ULONG Encapsulation;
++      ULONG AhEspCombined;
++      ULONG TransportTunnelCombined;
++      ULONG IPv4Options;
++      ULONG Flags;
++    } Supported;
++    struct {
++      ULONG Md5 : 2;
++      ULONG Sha_1 : 2;
++      ULONG Transport : 2;
++      ULONG Tunnel : 2;
++      ULONG Send : 2;
++      ULONG Receive : 2;
++    } IPv4AH;
++    struct {
++      ULONG Des : 2;
++      ULONG Reserved : 2;
++      ULONG TripleDes : 2;
++      ULONG NullEsp : 2;
++      ULONG Transport : 2;
++      ULONG Tunnel : 2;
++      ULONG Send : 2;
++      ULONG Receive : 2;
++    } IPv4ESP;
++  } NDIS_IPSEC_OFFLOAD_V1, *PNDIS_IPSEC_OFFLOAD_V1;
++
++  typedef struct _NDIS_TCP_LARGE_SEND_OFFLOAD_V2 {
++    struct {
++      ULONG Encapsulation;
++      ULONG MaxOffLoadSize;
++      ULONG MinSegmentCount;
++    }IPv4;
++    struct {
++      ULONG Encapsulation;
++      ULONG MaxOffLoadSize;
++      ULONG MinSegmentCount;
++      ULONG IpExtensionHeadersSupported:2;
++      ULONG TcpOptionsSupported:2;
++    } IPv6;
++  } NDIS_TCP_LARGE_SEND_OFFLOAD_V2, *PNDIS_TCP_LARGE_SEND_OFFLOAD_V2;
++
++#if NDIS_SUPPORT_NDIS61
<Skipped 2749 lines>
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/crossmingw32-w32api.git/commitdiff/85d1e55999166551a14016b812c665fdf1281751



More information about the pld-cvs-commit mailing list