64 lines
2.3 KiB
C
64 lines
2.3 KiB
C
#ifndef WEPOLL_AFD_H_
|
|
#define WEPOLL_AFD_H_
|
|
|
|
#include "internal.h"
|
|
#include "nt.h"
|
|
#include "util.h"
|
|
#include "win.h"
|
|
|
|
/* clang-format off */
|
|
|
|
#define AFD_NO_FAST_IO 0x00000001
|
|
#define AFD_OVERLAPPED 0x00000002
|
|
#define AFD_IMMEDIATE 0x00000004
|
|
|
|
#define AFD_POLL_RECEIVE_BIT 0
|
|
#define AFD_POLL_RECEIVE (1 << AFD_POLL_RECEIVE_BIT)
|
|
#define AFD_POLL_RECEIVE_EXPEDITED_BIT 1
|
|
#define AFD_POLL_RECEIVE_EXPEDITED (1 << AFD_POLL_RECEIVE_EXPEDITED_BIT)
|
|
#define AFD_POLL_SEND_BIT 2
|
|
#define AFD_POLL_SEND (1 << AFD_POLL_SEND_BIT)
|
|
#define AFD_POLL_DISCONNECT_BIT 3
|
|
#define AFD_POLL_DISCONNECT (1 << AFD_POLL_DISCONNECT_BIT)
|
|
#define AFD_POLL_ABORT_BIT 4
|
|
#define AFD_POLL_ABORT (1 << AFD_POLL_ABORT_BIT)
|
|
#define AFD_POLL_LOCAL_CLOSE_BIT 5
|
|
#define AFD_POLL_LOCAL_CLOSE (1 << AFD_POLL_LOCAL_CLOSE_BIT)
|
|
#define AFD_POLL_CONNECT_BIT 6
|
|
#define AFD_POLL_CONNECT (1 << AFD_POLL_CONNECT_BIT)
|
|
#define AFD_POLL_ACCEPT_BIT 7
|
|
#define AFD_POLL_ACCEPT (1 << AFD_POLL_ACCEPT_BIT)
|
|
#define AFD_POLL_CONNECT_FAIL_BIT 8
|
|
#define AFD_POLL_CONNECT_FAIL (1 << AFD_POLL_CONNECT_FAIL_BIT)
|
|
#define AFD_POLL_QOS_BIT 9
|
|
#define AFD_POLL_QOS (1 << AFD_POLL_QOS_BIT)
|
|
#define AFD_POLL_GROUP_QOS_BIT 10
|
|
#define AFD_POLL_GROUP_QOS (1 << AFD_POLL_GROUP_QOS_BIT)
|
|
#define AFD_NUM_POLL_EVENTS 11
|
|
#define AFD_POLL_ALL ((1 << AFD_NUM_POLL_EVENTS) - 1)
|
|
|
|
/* clang-format on */
|
|
|
|
typedef struct _AFD_POLL_HANDLE_INFO {
|
|
HANDLE Handle;
|
|
ULONG Events;
|
|
NTSTATUS Status;
|
|
} AFD_POLL_HANDLE_INFO, *PAFD_POLL_HANDLE_INFO;
|
|
|
|
typedef struct _AFD_POLL_INFO {
|
|
LARGE_INTEGER Timeout;
|
|
ULONG NumberOfHandles;
|
|
ULONG Exclusive;
|
|
AFD_POLL_HANDLE_INFO Handles[1];
|
|
} AFD_POLL_INFO, *PAFD_POLL_INFO;
|
|
|
|
WEPOLL_INTERNAL int afd_poll(SOCKET driver_socket,
|
|
AFD_POLL_INFO* poll_info,
|
|
OVERLAPPED* overlapped);
|
|
|
|
WEPOLL_INTERNAL int afd_get_protocol_info(SOCKET socket,
|
|
SOCKET* afd_socket_out,
|
|
WSAPROTOCOL_INFOW* protocol_info);
|
|
|
|
#endif /* WEPOLL_AFD_H_ */
|