System.Net.Sockets.AcceptOverlappedAsyncResult.SetUnmanagedStructures C# (CSharp) Method

SetUnmanagedStructures() private method

private SetUnmanagedStructures ( byte buffer, int addressBufferLength ) : void
buffer byte
addressBufferLength int
return void
        internal void SetUnmanagedStructures(byte[] buffer, int addressBufferLength)
        {
            // has to be called first to pin memory
            base.SetUnmanagedStructures(buffer);

            // Fill in Buffer Array structure that will be used for our send/recv Buffer
            _addressBufferLength = addressBufferLength;
            _buffer = buffer;
        }

Usage Example

        public static unsafe SocketError AcceptAsync(Socket socket, SafeCloseSocket handle, SafeCloseSocket acceptHandle, int receiveSize, int socketAddressSize, AcceptOverlappedAsyncResult asyncResult)
        {
            // The buffer needs to contain the requested data plus room for two sockaddrs and 16 bytes
            // of associated data for each.
            int addressBufferSize = socketAddressSize + 16;

            byte[] buffer = new byte[receiveSize + ((addressBufferSize) * 2)];

            // Set up asyncResult for overlapped AcceptEx.
            // This call will use completion ports on WinNT.
            asyncResult.SetUnmanagedStructures(buffer, addressBufferSize);

            // This can throw ObjectDisposedException.
            int         bytesTransferred;
            SocketError errorCode = SocketError.Success;

            if (!socket.AcceptEx(
                    handle,
                    acceptHandle,
                    Marshal.UnsafeAddrOfPinnedArrayElement(asyncResult.Buffer, 0),
                    receiveSize,
                    addressBufferSize,
                    addressBufferSize,
                    out bytesTransferred,
                    asyncResult.OverlappedHandle))
            {
                errorCode = GetLastSocketError();
            }

            return(errorCode);
        }
All Usage Examples Of System.Net.Sockets.AcceptOverlappedAsyncResult::SetUnmanagedStructures