
#include "precomp.h"
#include "driver.h"

#pragma data_seg()
#pragma bss_seg()
WDFQUEUE                g_wdfWaitRestartQueue = NULL;
WDFDEVICE               g_wdfControlDevice;
PNDIS_GENERIC_OBJECT    g_pNdisGenericObj = NULL;
NDIS_HANDLE             g_hNetBufferListPool = NULL;
NDIS_HANDLE             g_hNetBufferPool = NULL;
KEVENT                  g_oWorkerEvent;
KEVENT                  g_oWorkerDoneEvent;
HANDLE                  g_hInjectionHandleV4 = NULL;
HANDLE                  g_hInjectionHandleV6 = NULL;
UINT32                  g_nInboundTransportV4Id = 0;
UINT32                  g_nInboundTransportV6Id = 0;
UINT32                  g_nAleAcceptRecvV4Id = 0;
UINT32                  g_nAleAcceptRecvV6Id = 0;
UINT32                  g_nAleFlowEstablishedV4Id = 0;
UINT32                  g_nAleFlowEstablishedV6Id = 0;
UINT32                  g_nStreamIdV4 = 0;
UINT32                  g_nStreamIdV6 = 0;
UINT32                  g_nDatagramIdV4 = 0;
UINT32                  g_nDatagramIdV6 = 0;
FIREWALL_CONFIG         g_stFirewallConfig = { 0 };
BOOLEAN                 g_bFiltersChangeInProgress = FALSE;
BOOLEAN                 g_bDriverUnload = FALSE;
PVOID                   g_pWorkerThreadObj = NULL;
UINT32                  g_uiRestartStatus = 0;
LIST_ENTRY              g_stPendedPacketsQueue;
LIST_ENTRY              g_stFreeFileList;
LIST_ENTRY              g_stAcceptableList;
LIST_ENTRY              g_stFlowedFileList;
LIST_ENTRY              g_stWaitForDoneFileList;
LIST_ENTRY              g_stWaitForQuery2FileList;
LIST_ENTRY              g_stWaitForSetFilterFileList;
LIST_ENTRY              g_stUdpInboundList;
LIST_ENTRY              g_stUdpALEAcceptRecvList;
LIST_ENTRY              g_stUdpAcceptNotifyList;
LIST_ENTRY              g_stUdpALEAcceptPendedList;
LIST_ENTRY              g_stUdpALEFlowEstablishList;
