Tag: wsastartup

对于64位应用程序,.NET使用WSAStartup是安全的吗?

对于64位应用程序,.NET Framework版本与WSAData结构的本机Win32版本之间存在不匹配,因为字段的顺序不同。 我复制了.NET版本,用于我们基于C#的产品,同事担心我的内存损坏。 使用DllImport / PInvoke时,由于这种不匹配,是否存在内存损坏的风险? 将本机版本封送到托管版本时是否存在无效内存访问风险? 我们假设我并不关心实际访问生成的WSAData对象的字段。 我只是想确定我对WSAStartup的调用不会破坏内存或使应用程序崩溃。 这是WinSock2.h中的本机C ++版本。 请注意,成员的顺序在64位与32位之间是不同的。 WSADESCRIPTION_LEN为256,WSASYS_STATUS_LEN为128。 typedef struct WSAData { WORD wVersion; WORD wHighVersion; #ifdef _WIN64 unsigned short iMaxSockets; unsigned short iMaxUdpDg; char FAR * lpVendorInfo; char szDescription[WSADESCRIPTION_LEN+1]; char szSystemStatus[WSASYS_STATUS_LEN+1]; #else char szDescription[WSADESCRIPTION_LEN+1]; char szSystemStatus[WSASYS_STATUS_LEN+1]; unsigned short iMaxSockets; unsigned short iMaxUdpDg; char FAR * lpVendorInfo; #endif } WSADATA, […]