Tôi đã bắt đầu viết điều khiển ActiveX sử dụng ổ cắm.Có thể biết liệu WSAStartup có được gọi trong một tiến trình không?
Các ứng dụng sử dụng điều khiển này có thể hoặc không thể sử dụng ổ cắm. Tôi có thể kiểm soát được liệu WSAStartup có được gọi không?
Nếu không, hãy gọi. Một thử nghiệm nhỏ cho thấy rằng việc gọi WSAStartup nhiều lần được đẩy mạnh. Nhưng điều gì xảy ra nếu một phiên bản winsock khác được yêu cầu? điều này sẽ phá vỡ các phần khác của ứng dụng?
Đừng quên gọi 'closesocket()' nếu 'socket()' thành công trong 'WinsockInitialized()', nếu không bạn sẽ bị rò rỉ. –
điểm tốt! cố định điều đó. – Matt
KHÔNG an toàn khi gọi WSAStartup bất cứ lúc nào. Từ MSDN: "Hàm WSAStartup thường dẫn đến các DLL trợ giúp đặc trưng cho giao thức đang được nạp. Kết quả là, hàm WSAStartup không nên được gọi từ hàm DllMain trong một tệp DLL ứng dụng. Điều này có thể gây ra deadlocks" – czz