*/
#define ReferenceObject(Object) \
{ \
+ ASSERT((Object)->RefCount); \
InterlockedIncrement(&((Object)->RefCount)); \
}
*/
#define DereferenceObject(Object) \
{ \
+ ASSERT((Object)->RefCount); \
if (InterlockedDecrement(&((Object)->RefCount)) == 0) \
(((Object)->Free)(Object)); \
}
/* Associated listener (see transport/tcp/accept.c) */
IP_ADDRESS AddrCache; /* One entry address cache (destination
address of last packet transmitted) */
+ HANDLE ProcessId; /* Creator process ID */
/* The following members are used to control event notification */
PADDRESS_FILE AddressFile; /* Associated address file object (NULL if none) */
/* Requests */
- LIST_ENTRY ConnectRequest; /* Queued connect rqueusts */
+ LIST_ENTRY ConnectRequest; /* Queued connect requests */
LIST_ENTRY ListenRequest; /* Queued listen requests */
LIST_ENTRY ReceiveRequest; /* Queued receive requests */
LIST_ENTRY SendRequest; /* Queued send requests */
BOOLEAN SendShutdown;
BOOLEAN ReceiveShutdown;
NTSTATUS ReceiveShutdownStatus;
+ BOOLEAN Closing;
struct _CONNECTION_ENDPOINT *Next; /* Next connection in address file list */
} CONNECTION_ENDPOINT, *PCONNECTION_ENDPOINT;