[AFD] Introduce and use pool tags. Thanks go to Arty for assisting me with this....
[reactos.git] / drivers / network / afd / include / afd.h
index 04464ff..21aaac5 100644 (file)
@@ -1,5 +1,4 @@
-/* $Id$
- *
+/*
  * COPYRIGHT:        See COPYING in the top level directory
  * PROJECT:          ReactOS kernel
  * FILE:             drivers/net/afd/include/afd.h
 #ifndef _AFD_H
 #define _AFD_H
 
-#include <ntddk.h>
 #include <ntifs.h>
 #include <ndk/obtypes.h>
-#include <ndk/obfuncs.h>
-#include <ndk/mmtypes.h>
-#include <ndk/mmfuncs.h>
 #include <tdi.h>
-#include <tdikrnl.h>
-#include <tdiinfo.h>
-#include <string.h>
+#include <tcpioctl.h>
 #define _WINBASE_
 #define _WINDOWS_H
 #define _INC_WINDOWS
 #define MIN(x,y) (((x)<(y))?(x):(y))
 #endif
 
-#define IOCTL_TCP_QUERY_INFORMATION_EX \
-       CTL_CODE(FILE_DEVICE_NETWORK, 0, METHOD_NEITHER, FILE_ANY_ACCESS)
-
 #define TL_INSTANCE 0
 #define        IP_MIB_STATS_ID 1
 #define        IP_MIB_ADDRTABLE_ENTRY_ID 0x102
 
-typedef struct IPSNMP_INFO {
-       ULONG Forwarding;
-       ULONG DefaultTTL;
-       ULONG InReceives;
-       ULONG InHdrErrors;
-       ULONG InAddrErrors;
-       ULONG ForwDatagrams;
-       ULONG InUnknownProtos;
-       ULONG InDiscards;
-       ULONG InDelivers;
-       ULONG OutRequests;
-       ULONG RoutingDiscards;
-       ULONG OutDiscards;
-       ULONG OutNoRoutes;
-       ULONG ReasmTimeout;
-       ULONG ReasmReqds;
-       ULONG ReasmOks;
-       ULONG ReasmFails;
-       ULONG FragOks;
-       ULONG FragFails;
-       ULONG FragCreates;
-       ULONG NumIf;
-       ULONG NumAddr;
-       ULONG NumRoutes;
-} IPSNMP_INFO, *PIPSNMP_INFO;
+#define TAG_AFD_DATA_BUFFER                'BdfA'
+#define TAG_AFD_TRANSPORT_ADDRESS          'tdfA'
+#define TAG_AFD_SOCKET_CONTEXT             'XdfA'
+#define TAG_AFD_CONNECT_DATA               'cdfA'
+#define TAG_AFD_DISCONNECT_DATA            'ddfA'
+
+#define TAG_AFD_CONNECT_OPTIONS            'ocfA'
+#define TAG_AFD_DISCONNECT_OPTIONS         'odfA'
+#define TAG_AFD_ACCEPT_QUEUE               'qafA'
+#define TAG_AFD_POLL_HANDLE                'hpfA'
+#define TAG_AFD_FCB                        'cffA'
+#define TAG_AFD_ACTIVE_POLL                'pafA'
+#define TAG_AFD_EA_INFO                    'aefA'
+#define TAG_AFD_STORED_DATAGRAM            'gsfA'
+#define TAG_AFD_SNMP_ADDRESS_INFO          'asfA'
+#define TAG_AFD_TDI_CONNECTION_INFORMATION 'cTfA'
+#define TAG_AFD_WSA_BUFFER                 'bWfA'
 
 typedef struct IPADDR_ENTRY {
        ULONG  Addr;
@@ -160,7 +142,6 @@ typedef struct _AFD_TDI_OBJECT_QELT {
 
 typedef struct _AFD_IN_FLIGHT_REQUEST {
     PIRP InFlightRequest;
-    IO_STATUS_BLOCK Iosb;
     PTDI_CONNECTION_INFORMATION ConnectionCallInfo;
     PTDI_CONNECTION_INFORMATION ConnectionReturnInfo;
 } AFD_IN_FLIGHT_REQUEST, *PAFD_IN_FLIGHT_REQUEST;
@@ -203,6 +184,7 @@ typedef struct _AFD_FCB {
     PVOID Context;
     DWORD PollState;
     NTSTATUS PollStatus[FD_MAX_EVENTS];
+    NTSTATUS LastReceiveStatus;
     UINT ContextSize;
     PVOID ConnectData;
     UINT FilledConnectData;
@@ -223,7 +205,7 @@ typedef struct _AFD_FCB {
 
 /* bind.c */
 
-NTSTATUS WarmSocketForBind( PAFD_FCB FCB );
+NTSTATUS WarmSocketForBind( PAFD_FCB FCB, ULONG ShareType );
 NTSTATUS NTAPI
 AfdBindSocket(PDEVICE_OBJECT DeviceObject, PIRP Irp,
              PIO_STACK_LOCATION IrpSp);
@@ -298,7 +280,8 @@ NTSTATUS AfdAccept( PDEVICE_OBJECT DeviceObject, PIRP Irp,
 
 PAFD_WSABUF LockBuffers( PAFD_WSABUF Buf, UINT Count,
                         PVOID AddressBuf, PINT AddressLen,
-                        BOOLEAN Write, BOOLEAN LockAddress );
+                        BOOLEAN Write, BOOLEAN LockAddress,
+             KPROCESSOR_MODE LockMode );
 VOID UnlockBuffers( PAFD_WSABUF Buf, UINT Count, BOOL Address );
 BOOLEAN SocketAcquireStateLock( PAFD_FCB FCB );
 NTSTATUS NTAPI UnlockAndMaybeComplete
@@ -308,7 +291,7 @@ VOID SocketStateUnlock( PAFD_FCB FCB );
 NTSTATUS LostSocket( PIRP Irp );
 PAFD_HANDLE LockHandles( PAFD_HANDLE HandleArray, UINT HandleCount );
 VOID UnlockHandles( PAFD_HANDLE HandleArray, UINT HandleCount );
-PVOID LockRequest( PIRP Irp, PIO_STACK_LOCATION IrpSp );
+PVOID LockRequest( PIRP Irp, PIO_STACK_LOCATION IrpSp, BOOLEAN Output, KPROCESSOR_MODE *LockMode );
 VOID UnlockRequest( PIRP Irp, PIO_STACK_LOCATION IrpSp );
 PVOID GetLockedData( PIRP Irp, PIO_STACK_LOCATION IrpSp );
 NTSTATUS LeaveIrpUntilLater( PAFD_FCB FCB, PIRP Irp, UINT Function );
@@ -318,26 +301,18 @@ NTSTATUS QueueUserModeIrp(PAFD_FCB FCB, PIRP Irp, UINT Function);
 
 VOID OskitDumpBuffer( PCHAR Buffer, UINT Len );
 VOID DestroySocket( PAFD_FCB FCB );
-VOID NTAPI AfdCancelHandler(PDEVICE_OBJECT DeviceObject,
-                 PIRP Irp);
+DRIVER_CANCEL AfdCancelHandler;
 VOID RetryDisconnectCompletion(PAFD_FCB FCB);
 BOOLEAN CheckUnlockExtraBuffers(PAFD_FCB FCB, PIO_STACK_LOCATION IrpSp);
 
 /* read.c */
 
-NTSTATUS NTAPI ReceiveComplete
-( PDEVICE_OBJECT DeviceObject,
-  PIRP Irp,
-  PVOID Context );
+IO_COMPLETION_ROUTINE ReceiveComplete;
 
-NTSTATUS NTAPI PacketSocketRecvComplete
-( PDEVICE_OBJECT DeviceObject,
-  PIRP Irp,
-  PVOID Context );
+IO_COMPLETION_ROUTINE PacketSocketRecvComplete;
 
 NTSTATUS NTAPI
-AfdConnectedSocketReadData(PDEVICE_OBJECT DeviceObject, PIRP Irp,
-                          PIO_STACK_LOCATION IrpSp, BOOLEAN Short);
+AfdConnectedSocketReadData(PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp, BOOLEAN Short);
 NTSTATUS NTAPI
 AfdPacketSocketReadData(PDEVICE_OBJECT DeviceObject, PIRP Irp,
                        PIO_STACK_LOCATION IrpSp );
@@ -367,6 +342,7 @@ VOID SignalSocket(
 NTSTATUS TdiOpenAddressFile(
     PUNICODE_STRING DeviceName,
     PTRANSPORT_ADDRESS Name,
+    ULONG ShareType,
     PHANDLE AddressHandle,
     PFILE_OBJECT *AddressObject);
 
@@ -382,7 +358,6 @@ NTSTATUS TdiListen
   PFILE_OBJECT ConnectionObject,
   PTDI_CONNECTION_INFORMATION *RequestConnectionInfo,
   PTDI_CONNECTION_INFORMATION *ReturnConnectionInfo,
-  PIO_STATUS_BLOCK Iosb,
   PIO_COMPLETION_ROUTINE  CompletionRoutine,
   PVOID CompletionContext);
 
@@ -392,7 +367,6 @@ NTSTATUS TdiReceive
   USHORT Flags,
   PCHAR Buffer,
   UINT BufferLength,
-  PIO_STATUS_BLOCK Iosb,
   PIO_COMPLETION_ROUTINE  CompletionRoutine,
   PVOID CompletionContext);
 
@@ -402,7 +376,6 @@ NTSTATUS TdiSend
   USHORT Flags,
   PCHAR Buffer,
   UINT BufferLength,
-  PIO_STATUS_BLOCK Iosb,
   PIO_COMPLETION_ROUTINE  CompletionRoutine,
   PVOID CompletionContext);
 
@@ -413,7 +386,6 @@ NTSTATUS TdiReceiveDatagram(
     PCHAR Buffer,
     UINT BufferLength,
     PTDI_CONNECTION_INFORMATION From,
-    PIO_STATUS_BLOCK Iosb,
     PIO_COMPLETION_ROUTINE CompletionRoutine,
     PVOID CompletionContext);
 
@@ -423,7 +395,6 @@ NTSTATUS TdiSendDatagram(
     PCHAR Buffer,
     UINT BufferLength,
     PTDI_CONNECTION_INFORMATION To,
-    PIO_STATUS_BLOCK Iosb,
     PIO_COMPLETION_ROUTINE CompletionRoutine,
     PVOID CompletionContext);
 
@@ -440,4 +411,4 @@ NTSTATUS NTAPI
 AfdPacketSocketWriteData(PDEVICE_OBJECT DeviceObject, PIRP Irp,
                         PIO_STACK_LOCATION IrpSp);
 
-#endif/*_AFD_H*/
+#endif /* _AFD_H */