11/* ************************************************************************/
2- /* Copyright (c) 2000-2023 NT Kernel Resources. */
2+ /* Copyright (c) 2000-2023 NT KERNEL. */
33/* All Rights Reserved. */
44/* http://www.ntkernel.com */
55/* ndisrd@ntkernel.com */
1212/* User mode */
1313/* */
1414/* ************************************************************************/
15+ #pragma once
1516
1617#ifdef _LIB // must be defined when linking static library version of ndisapi.dll
1718#define NDISAPI_API
2021// from a DLL simpler. All files within this DLL are compiled with the NDISAPI_EXPORTS
2122// symbol defined on the command line. this symbol should not be defined on any project
2223// that uses this DLL. This way any other project whose source files include this file see
23- // NDISAPI_API functions as being imported from a DLL, wheras this DLL sees symbols
24+ // NDISAPI_API functions as being imported from a DLL, whereas this DLL sees symbols
2425// defined with this macro as being exported.
2526#ifdef NDISAPI_EXPORTS
2627#define NDISAPI_API __declspec (dllexport)
@@ -50,38 +51,110 @@ enum
5051
5152typedef BOOL (__stdcall *IsWow64ProcessPtr)(HANDLE hProcess, PBOOL Wow64Process);
5253
53- // Simple OSVERSIONINFO extension
54+ /* *
55+ * @struct CVersionInfo
56+ * @brief An extension of the OSVERSIONINFO structure for retrieving and
57+ * comparing operating system version information.
58+ *
59+ * This structure provides a set of functions to check whether the current
60+ * operating system version is equal to or greater than a specific version,
61+ * such as Windows XP, Windows 7, or Windows 10.
62+ *
63+ * Usage:
64+ * CVersionInfo versionInfo;
65+ * if (versionInfo.IsWindows7OrGreater()) {
66+ * // Code for Windows 7 or later
67+ * }
68+ */
5469struct NDISAPI_API CVersionInfo : private OSVERSIONINFO
5570{
5671#ifdef _USE_LEGACY_VERSION_INFO
57- CVersionInfo () {
72+ /* *
73+ * @brief Constructor that initializes the OSVERSIONINFO structure.
74+ */
75+ CVersionInfo ()
76+ {
5877 dwOSVersionInfoSize = sizeof (OSVERSIONINFO );
5978 ::GetVersionEx (this );
6079 }
6180
81+ /* *
82+ * @brief Checks if the operating system is Windows Vista or greater.
83+ * @return TRUE if Windows Vista or greater, FALSE otherwise.
84+ */
6285 BOOL IsWindowsVistaOrGreater () { return (dwMajorVersion >= 6 ); }
86+
87+ /* *
88+ * @brief Checks if the operating system is Windows 7 or greater.
89+ * @return TRUE if Windows 7 or greater, FALSE otherwise.
90+ */
6391 BOOL IsWindows7OrGreater () { return (dwMajorVersion > 6 ) || ((dwMajorVersion == 6 ) && (dwMinorVersion > 0 )); }
64- BOOL IsWindowsXPOrGreater () { return ((dwMajorVersion == 5 ) && (dwMinorVersion >= 1 ))/* Windows XP/2003*/ || (dwMajorVersion > 5 )/* Windows Vista or later*/ ; }
92+
93+ /* *
94+ * @brief Checks if the operating system is Windows XP or greater.
95+ * @return TRUE if Windows XP or greater, FALSE otherwise.
96+ */
97+ BOOL IsWindowsXPOrGreater () { return ((dwMajorVersion == 5 ) && (dwMinorVersion >= 1 )) || (dwMajorVersion > 5 ); }
98+
99+ /* *
100+ * @brief Checks if the operating system is Windows 10 or greater.
101+ * @return TRUE if Windows 10 or greater, FALSE otherwise.
102+ */
65103 BOOL IsWindows10OrGreater () { return (dwMajorVersion >= 10 ); }
104+
105+ /* *
106+ * @brief Checks if the operating system is of the Windows NT platform.
107+ * @return TRUE if Windows NT platform, FALSE otherwise.
108+ */
66109 BOOL IsWindowsNTPlatform () { return (dwPlatformId == VER_PLATFORM_WIN32_NT ); }
67110#else
68- BOOL IsWindowsVistaOrGreater () { return ::IsWindowsVistaOrGreater (); }
69- BOOL IsWindowsXPOrGreater () { return ::IsWindowsXPOrGreater (); }
70- BOOL IsWindows7OrGreater () { return ::IsWindows7OrGreater (); }
71- BOOL IsWindows10OrGreater () { return ::IsWindowsVersionOrGreater (10 , 0 , 0 ); }
72- BOOL IsWindowsNTPlatform () { return IsWindowsXPOrGreater (); }
111+ /* *
112+ * @brief Static function to check if the operating system is Windows Vista or greater.
113+ * @return TRUE if Windows Vista or greater, FALSE otherwise.
114+ */
115+ static BOOL IsWindowsVistaOrGreater () { return ::IsWindowsVistaOrGreater (); }
116+
117+ /* *
118+ * @brief Static function to check if the operating system is Windows XP or greater.
119+ * @return TRUE if Windows XP or greater, FALSE otherwise.
120+ */
121+ static BOOL IsWindowsXPOrGreater () { return ::IsWindowsXPOrGreater (); }
122+
123+ /* *
124+ * @brief Static function to check if the operating system is Windows 7 or greater.
125+ * @return TRUE if Windows 7 or greater, FALSE otherwise.
126+ */
127+ static BOOL IsWindows7OrGreater () { return ::IsWindows7OrGreater (); }
128+
129+ /* *
130+ * @brief Static function to check if the operating system is Windows 10 or greater.
131+ * @return TRUE if Windows 10 or greater, FALSE otherwise.
132+ */
133+ static BOOL IsWindows10OrGreater () { return ::IsWindowsVersionOrGreater (10 , 0 , 0 ); }
134+
135+ /* *
136+ * @brief Static function to check if the operating system is of the Windows NT platform.
137+ * @return TRUE if Windows NT platform, FALSE otherwise.
138+ */
139+ static BOOL IsWindowsNTPlatform () { return IsWindowsXPOrGreater (); }
73140#endif // _MSC_VER >= 1700
74141};
75142
76143class NDISAPI_API CNdisApi
77144{
78-
79145 class CWow64Helper ;
80146
81147public:
82148 CNdisApi (const TCHAR * pszFileName = _T(DRIVER_NAME_A ));
83149 virtual ~CNdisApi ();
84150
151+ #if _MSC_VER >= 1800 && !defined(_USING_V110_SDK71_)
152+ CNdisApi (const CNdisApi& other) = delete;
153+ CNdisApi (CNdisApi&& other) = delete;
154+ CNdisApi& operator =(const CNdisApi& other) = delete ;
155+ CNdisApi& operator =(CNdisApi&& other) = delete ;
156+ #endif // _MSC_VER >= 1800 && !defined(_USING_V110_SDK71_)
157+
85158private:
86159 // Private member functions
87160 BOOL DeviceIoControl (DWORD dwService, void *BuffIn, int SizeIn, void *BuffOut, int SizeOut, unsigned long *SizeRet = NULL , LPOVERLAPPED povlp = NULL ) const ;
@@ -122,6 +195,7 @@ class NDISAPI_API CNdisApi
122195 BOOL ReadPacketsUnsorted (PINTERMEDIATE_BUFFER * Packets, DWORD dwPacketsNum, PDWORD pdwPacketsSuccess) const ;
123196 BOOL SendPacketsToAdaptersUnsorted (PINTERMEDIATE_BUFFER * Packets, DWORD dwPacketsNum, PDWORD pdwPacketSuccess) const ;
124197 BOOL SendPacketsToMstcpUnsorted (PINTERMEDIATE_BUFFER * Packets, DWORD dwPacketsNum, PDWORD pdwPacketSuccess) const ;
198+ BOOL GetIntermediateBufferPoolSize (PDWORD pdwSize) const ;
125199 DWORD GetBytesReturned () const ;
126200
127201 // Static helper routines
@@ -132,6 +206,9 @@ class NDISAPI_API CNdisApi
132206 static BOOL SetAdaptersStartupMode ( DWORD dwStartupMode );
133207 static DWORD GetAdaptersStartupMode ();
134208
209+ static BOOL SetPoolSize (DWORD dwPoolSize);
210+ static DWORD GetPoolSize ();
211+
135212 static BOOL IsNdiswanIp ( LPCSTR adapterName );
136213 static BOOL IsNdiswanIpv6 ( LPCSTR adapterName );
137214 static BOOL IsNdiswanBh ( LPCSTR adapterName );
@@ -235,12 +312,15 @@ extern "C"
235312 DWORD __stdcall GetMTUDecrement ();
236313 BOOL __stdcall SetAdaptersStartupMode (DWORD dwStartupMode);
237314 DWORD __stdcall GetAdaptersStartupMode ();
315+ BOOL __stdcall SetPoolSize (DWORD dwPoolSize);
316+ DWORD __stdcall GetPoolSize ();
238317 BOOL __stdcall IsDriverLoaded (HANDLE hOpen);
239318 BOOL __stdcall InitializeFastIo (HANDLE hOpen, PFAST_IO_SECTION pFastIo, DWORD dwSize);
240319 BOOL __stdcall AddSecondaryFastIo (HANDLE hOpen, PFAST_IO_SECTION pFastIo, DWORD dwSize);
241320 BOOL __stdcall ReadPacketsUnsorted (HANDLE hOpen, PINTERMEDIATE_BUFFER * Packets, DWORD dwPacketsNum, PDWORD pdwPacketsSuccess);
242321 BOOL __stdcall SendPacketsToAdaptersUnsorted (HANDLE hOpen, PINTERMEDIATE_BUFFER * Packets, DWORD dwPacketsNum, PDWORD pdwPacketSuccess);
243322 BOOL __stdcall SendPacketsToMstcpUnsorted (HANDLE hOpen, PINTERMEDIATE_BUFFER * Packets, DWORD dwPacketsNum, PDWORD pdwPacketSuccess);
323+ BOOL __stdcall GetIntermediateBufferPoolSize (HANDLE hOpen, PDWORD pdwSize);
244324 DWORD __stdcall GetBytesReturned (HANDLE hOpen);
245325
246326 BOOL __stdcall IsNdiswanIp ( LPCSTR adapterName );
0 commit comments