private void EnsureGetAcceptExSockaddrs(SafeCloseSocket socketHandle) { if (this.getAcceptExSockaddrs == null) { lock (this.lockObject) { if (this.getAcceptExSockaddrs == null) { Guid guid = new Guid("{0xb5367df2,0xcbac,0x11cf,{0x95, 0xca, 0x00, 0x80, 0x5f, 0x48, 0xa1, 0x92}}"); IntPtr ptr = this.LoadDynamicFunctionPointer(socketHandle, ref guid); this.getAcceptExSockaddrs = (GetAcceptExSockaddrsDelegate)Marshal.GetDelegateForFunctionPointer(ptr, typeof(GetAcceptExSockaddrsDelegate)); } } } }
internal void GetAcceptExSockaddrs(IntPtr buffer, int receiveDataLength, int localAddressLength, int remoteAddressLength, out IntPtr localSocketAddress, out int localSocketAddressLength, out IntPtr remoteSocketAddress, out int remoteSocketAddressLength) { EnsureDynamicWinsockMethods(); GetAcceptExSockaddrsDelegate getAcceptExSockaddrs = _dynamicWinsockMethods.GetDelegate <GetAcceptExSockaddrsDelegate>(_handle); getAcceptExSockaddrs(buffer, receiveDataLength, localAddressLength, remoteAddressLength, out localSocketAddress, out localSocketAddressLength, out remoteSocketAddress, out remoteSocketAddressLength); }