[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