Sample Code

windows driver samples/ Windows Filtering Platform Sample/ C++/ sys/ HelperFunctions_ExposedCallouts.cpp/

////////////////////////////////////////////////////////////////////////////////////////////////////
//
//   Copyright (c) 2012 Microsoft Corporation.  All Rights Reserved.
//
//   Module Name:
//      HelperFunctions_ExposedCallouts.cpp
//
//   Abstract:
//
//   Author:
//      Dusty Harper      (DHarper)
//
//   Revision History:
//
//      [ Month ][Day] [Year] - [Revision]-[ Comments ]
//      May       01,   2010  -     1.0   -  Creation
//
////////////////////////////////////////////////////////////////////////////////////////////////////

#include "Framework_WFPSamplerCalloutDriver.h" /// .
#include "HelperFunctions_ExposedCallouts.tmh" /// $(OBJ_PATH)\$(O)\

FWPS_CALLOUT* ppRegisteredCallouts[EXPOSED_CALLOUT_COUNT] = {0};

_IRQL_requires_min_(PASSIVE_LEVEL)
_IRQL_requires_max_(DISPATCH_LEVEL)
_IRQL_requires_same_
VOID PrvExposedCalloutsUndefine()
{
#if DBG
   
   DbgPrintEx(DPFLTR_IHVNETWORK_ID,
              DPFLTR_INFO_LEVEL,
              " ---> PrvExposedCalloutsUndefine()\n");

#endif /// DBG
   
   for(UINT32 calloutIndex = 0;
       calloutIndex < EXPOSED_CALLOUT_COUNT;
       calloutIndex++)
   {
      HLPR_DELETE(ppRegisteredCallouts[calloutIndex],
                  WFPSAMPLER_CALLOUT_DRIVER_TAG);
   }

#if DBG
   
   DbgPrintEx(DPFLTR_IHVNETWORK_ID,
              DPFLTR_INFO_LEVEL,
              " <--- PrvExposedCalloutsUndefine()\n");

#endif /// DBG
   
   return;
}

_IRQL_requires_min_(PASSIVE_LEVEL)
_IRQL_requires_max_(DISPATCH_LEVEL)
_IRQL_requires_same_
_Success_(return == STATUS_SUCCESS)
NTSTATUS PrvExposedCalloutsDefine()
{
#if DBG
   
   DbgPrintEx(DPFLTR_IHVNETWORK_ID,
              DPFLTR_INFO_LEVEL,
              " ---> PrvExposedCalloutsDefine()\n");

#endif /// DBG
   
   NTSTATUS status = 0;
   UINT32   flags  = 0;

#if(NTDDI_VERSION >= NTDDI_WIN7)

   flags = FWP_CALLOUT_FLAG_ENABLE_COMMIT_ADD_NOTIFY;

#endif /// (NTDDI_VERSION >= NTDDI_WIN7)

   /// Register all BASIC_ACTION_BLOCK Callouts
   for(UINT32 babIndex = 0;
       babIndex < BASIC_ACTION_BLOCK_COUNT;
       babIndex++)
   {
      HLPR_NEW(ppRegisteredCallouts[BASE_INDEX_BAB + babIndex],
               FWPS_CALLOUT,
               WFPSAMPLER_CALLOUT_DRIVER_TAG);
      HLPR_BAIL_ON_ALLOC_FAILURE(ppRegisteredCallouts[BASE_INDEX_BAB + babIndex],
                                 status);

      ppRegisteredCallouts[BASE_INDEX_BAB + babIndex]->calloutKey   = *(ppBasicActionBlock[babIndex]);
      ppRegisteredCallouts[BASE_INDEX_BAB + babIndex]->flags        = flags;
      ppRegisteredCallouts[BASE_INDEX_BAB + babIndex]->classifyFn   = ClassifyBasicActionBlock;
      ppRegisteredCallouts[BASE_INDEX_BAB + babIndex]->notifyFn     = NotifyBasicNotification;
      ppRegisteredCallouts[BASE_INDEX_BAB + babIndex]->flowDeleteFn = 0;
   }

   /// Register all BASIC_ACTION_CONTINUE Callouts
   for(UINT32 bacIndex = 0;
       bacIndex < BASIC_ACTION_CONTINUE_COUNT;
       bacIndex++)
   {
      HLPR_NEW(ppRegisteredCallouts[BASE_INDEX_BAC + bacIndex],
               FWPS_CALLOUT,
               WFPSAMPLER_CALLOUT_DRIVER_TAG);
      HLPR_BAIL_ON_ALLOC_FAILURE(ppRegisteredCallouts[BASE_INDEX_BAC + bacIndex],
                                 status);

      ppRegisteredCallouts[BASE_INDEX_BAC + bacIndex]->calloutKey   = *(ppBasicActionContinue[bacIndex]);
      ppRegisteredCallouts[BASE_INDEX_BAC + bacIndex]->flags        = flags;
      ppRegisteredCallouts[BASE_INDEX_BAC + bacIndex]->classifyFn   = ClassifyBasicActionContinue;
      ppRegisteredCallouts[BASE_INDEX_BAC + bacIndex]->notifyFn     = NotifyBasicNotification;
      ppRegisteredCallouts[BASE_INDEX_BAC + bacIndex]->flowDeleteFn = 0;
   }

   /// Register all BASIC_ACTION_PERMIT Callouts
   for(UINT32 bapIndex = 0;
       bapIndex < BASIC_ACTION_PERMIT_COUNT;
       bapIndex++)
   {
      HLPR_NEW(ppRegisteredCallouts[BASE_INDEX_BAP + bapIndex],
               FWPS_CALLOUT,
               WFPSAMPLER_CALLOUT_DRIVER_TAG);
      HLPR_BAIL_ON_ALLOC_FAILURE(ppRegisteredCallouts[BASE_INDEX_BAP + bapIndex],
                                 status);

      ppRegisteredCallouts[BASE_INDEX_BAP + bapIndex]->calloutKey   = *(ppBasicActionPermit[bapIndex]);
      ppRegisteredCallouts[BASE_INDEX_BAP + bapIndex]->flags        = flags;
      ppRegisteredCallouts[BASE_INDEX_BAP + bapIndex]->classifyFn   = ClassifyBasicActionPermit;
      ppRegisteredCallouts[BASE_INDEX_BAP + bapIndex]->notifyFn     = NotifyBasicNotification;
      ppRegisteredCallouts[BASE_INDEX_BAP + bapIndex]->flowDeleteFn = 0;
   }

   /// Register all BASIC_ACTION_RANDOM Callouts
   for(UINT32 barIndex = 0;
       barIndex < BASIC_ACTION_RANDOM_COUNT;
       barIndex++)
   {
      HLPR_NEW(ppRegisteredCallouts[BASE_INDEX_BAR + barIndex],
               FWPS_CALLOUT,
               WFPSAMPLER_CALLOUT_DRIVER_TAG);
      HLPR_BAIL_ON_ALLOC_FAILURE(ppRegisteredCallouts[BASE_INDEX_BAR + barIndex],
                                 status);

      ppRegisteredCallouts[BASE_INDEX_BAR + barIndex]->calloutKey   = *(ppBasicActionRandom[barIndex]);
      ppRegisteredCallouts[BASE_INDEX_BAR + barIndex]->flags        = flags;
      ppRegisteredCallouts[BASE_INDEX_BAR + barIndex]->classifyFn   = ClassifyBasicActionRandom;
      ppRegisteredCallouts[BASE_INDEX_BAR + barIndex]->notifyFn     = NotifyBasicNotification;
      ppRegisteredCallouts[BASE_INDEX_BAR + barIndex]->flowDeleteFn = 0;
   }

   /// Register all BASIC_PACKET_EXAMINATION Callouts
   for(UINT32 bpeIndex = 0;
       bpeIndex < BASIC_PACKET_EXAMINATION_COUNT;
       bpeIndex++)
   {
      HLPR_NEW(ppRegisteredCallouts[BASE_INDEX_BPE + bpeIndex],
               FWPS_CALLOUT,
               WFPSAMPLER_CALLOUT_DRIVER_TAG);
      HLPR_BAIL_ON_ALLOC_FAILURE(ppRegisteredCallouts[BASE_INDEX_BPE +bpeIndex],
                                 status);

      ppRegisteredCallouts[BASE_INDEX_BPE + bpeIndex]->calloutKey   = *(ppBasicPacketExamination[bpeIndex]);
      ppRegisteredCallouts[BASE_INDEX_BPE + bpeIndex]->flags        = flags;
      ppRegisteredCallouts[BASE_INDEX_BPE + bpeIndex]->classifyFn   = ClassifyBasicPacketExamination;
      ppRegisteredCallouts[BASE_INDEX_BPE + bpeIndex]->notifyFn     = NotifyBasicNotification;
      ppRegisteredCallouts[BASE_INDEX_BPE + bpeIndex]->flowDeleteFn = 0;
   }

   /// Register all BASIC_PACKET_INJECTION Callouts
   for(UINT32 bpiIndex = 0;
       bpiIndex < BASIC_PACKET_INJECTION_COUNT;
       bpiIndex++)
   {
      HLPR_NEW(ppRegisteredCallouts[BASE_INDEX_BPI + bpiIndex],
               FWPS_CALLOUT,
               WFPSAMPLER_CALLOUT_DRIVER_TAG);
      HLPR_BAIL_ON_ALLOC_FAILURE(ppRegisteredCallouts[BASE_INDEX_BPI + bpiIndex],
                                 status);

      ppRegisteredCallouts[BASE_INDEX_BPI + bpiIndex]->calloutKey   = *(ppBasicPacketInjection[bpiIndex]);
      ppRegisteredCallouts[BASE_INDEX_BPI + bpiIndex]->flags        = flags;
      ppRegisteredCallouts[BASE_INDEX_BPI + bpiIndex]->classifyFn   = ClassifyBasicPacketInjection;
      ppRegisteredCallouts[BASE_INDEX_BPI + bpiIndex]->notifyFn     = NotifyBasicNotification;
      ppRegisteredCallouts[BASE_INDEX_BPI + bpiIndex]->flowDeleteFn = 0;
   }

   /// Register all BASIC_PACKET_MODIFICATION Callouts
   for(UINT32 bpmIndex = 0;
       bpmIndex < BASIC_PACKET_MODIFICATION_COUNT;
       bpmIndex++)
   {
      HLPR_NEW(ppRegisteredCallouts[BASE_INDEX_BPM + bpmIndex],
               FWPS_CALLOUT,
               WFPSAMPLER_CALLOUT_DRIVER_TAG);
      HLPR_BAIL_ON_ALLOC_FAILURE(ppRegisteredCallouts[BASE_INDEX_BPM + bpmIndex],
                                 status);

      ppRegisteredCallouts[BASE_INDEX_BPM + bpmIndex]->calloutKey   = *(ppBasicPacketModification[bpmIndex]);
      ppRegisteredCallouts[BASE_INDEX_BPM + bpmIndex]->flags        = flags;
      ppRegisteredCallouts[BASE_INDEX_BPM + bpmIndex]->classifyFn   = ClassifyBasicPacketModification;
      ppRegisteredCallouts[BASE_INDEX_BPM + bpmIndex]->notifyFn     = NotifyBasicNotification;
      ppRegisteredCallouts[BASE_INDEX_BPM + bpmIndex]->flowDeleteFn = 0;
   }

   /// Register all BASIC_STREAM_INJECTION Callouts
   for(UINT32 bsiIndex = 0;
       bsiIndex < BASIC_STREAM_INJECTION_COUNT;
       bsiIndex++)
   {
      UINT32 calloutFlags = flags;

      HLPR_NEW(ppRegisteredCallouts[BASE_INDEX_BSI + bsiIndex],
               FWPS_CALLOUT,
               WFPSAMPLER_CALLOUT_DRIVER_TAG);
      HLPR_BAIL_ON_ALLOC_FAILURE(ppRegisteredCallouts[BASE_INDEX_BSI + bsiIndex],
                                 status);

#if(NTDDI_VERSION >= NTDDI_WIN7)

      calloutFlags |= FWP_CALLOUT_FLAG_ALLOW_MID_STREAM_INSPECTION;

#endif /// (NTDDI_VERSION >= NTDDI_WIN7)

      ppRegisteredCallouts[BASE_INDEX_BSI + bsiIndex]->calloutKey   = *(ppBasicStreamInjection[bsiIndex]);
      ppRegisteredCallouts[BASE_INDEX_BSI + bsiIndex]->flags        = calloutFlags;
      ppRegisteredCallouts[BASE_INDEX_BSI + bsiIndex]->classifyFn   = ClassifyBasicStreamInjection;
      ppRegisteredCallouts[BASE_INDEX_BSI + bsiIndex]->notifyFn     = NotifyBasicNotification;
      ppRegisteredCallouts[BASE_INDEX_BSI + bsiIndex]->flowDeleteFn = 0;
   }

   /// Register all FAST_PACKET_INJECTION Callouts
   for(UINT32 fpiIndex = 0;
       fpiIndex < FAST_PACKET_INJECTION_COUNT;
       fpiIndex++)
   {
      HLPR_NEW(ppRegisteredCallouts[BASE_INDEX_FPI + fpiIndex],
               FWPS_CALLOUT,
               WFPSAMPLER_CALLOUT_DRIVER_TAG);
      HLPR_BAIL_ON_ALLOC_FAILURE(ppRegisteredCallouts[BASE_INDEX_FPI + fpiIndex],
                                 status);

      ppRegisteredCallouts[BASE_INDEX_FPI + fpiIndex]->calloutKey   = *(ppFastPacketInjection[fpiIndex]);
      ppRegisteredCallouts[BASE_INDEX_FPI + fpiIndex]->flags        = flags;
      ppRegisteredCallouts[BASE_INDEX_FPI + fpiIndex]->classifyFn   = ClassifyFastPacketInjection;
      ppRegisteredCallouts[BASE_INDEX_FPI + fpiIndex]->notifyFn     = NotifyFastNotification;
      ppRegisteredCallouts[BASE_INDEX_FPI + fpiIndex]->flowDeleteFn = 0;
   }

   /// Register all FAST_STREAM_INJECTION Callouts
   for(UINT32 fsiIndex = 0;
       fsiIndex < FAST_STREAM_INJECTION_COUNT;
       fsiIndex++)
   {
      UINT32 calloutFlags = flags;

      HLPR_NEW(ppRegisteredCallouts[BASE_INDEX_FSI + fsiIndex],
               FWPS_CALLOUT,
               WFPSAMPLER_CALLOUT_DRIVER_TAG);
      HLPR_BAIL_ON_ALLOC_FAILURE(ppRegisteredCallouts[BASE_INDEX_FSI + fsiIndex],
                                 status);

#if(NTDDI_VERSION >= NTDDI_WIN7)
      
            calloutFlags |= FWP_CALLOUT_FLAG_ALLOW_MID_STREAM_INSPECTION;
      
#endif /// (NTDDI_VERSION >= NTDDI_WIN7)

      ppRegisteredCallouts[BASE_INDEX_FSI + fsiIndex]->calloutKey   = *(ppFastStreamInjection[fsiIndex]);
      ppRegisteredCallouts[BASE_INDEX_FSI + fsiIndex]->flags        = calloutFlags;
      ppRegisteredCallouts[BASE_INDEX_FSI + fsiIndex]->classifyFn   = ClassifyFastStreamInjection;
      ppRegisteredCallouts[BASE_INDEX_FSI + fsiIndex]->notifyFn     = NotifyFastNotification;
      ppRegisteredCallouts[BASE_INDEX_FSI + fsiIndex]->flowDeleteFn = 0;
   }

   /// Register all PROXY_BY_INJECTION Callouts
   for(UINT32 pbiIndex = 0;
       pbiIndex < PROXY_BY_INJECTION_COUNT;
       pbiIndex++)
   {
      HLPR_NEW(ppRegisteredCallouts[BASE_INDEX_PBI + pbiIndex],
               FWPS_CALLOUT,
               WFPSAMPLER_CALLOUT_DRIVER_TAG);
      HLPR_BAIL_ON_ALLOC_FAILURE(ppRegisteredCallouts[BASE_INDEX_PBI + pbiIndex],
                                 status);

      ppRegisteredCallouts[BASE_INDEX_PBI + pbiIndex]->calloutKey   = *(ppProxyByInjection[pbiIndex]);
      ppRegisteredCallouts[BASE_INDEX_PBI + pbiIndex]->flags        = flags;
      ppRegisteredCallouts[BASE_INDEX_PBI + pbiIndex]->classifyFn   = ClassifyProxyByInjection;
      ppRegisteredCallouts[BASE_INDEX_PBI + pbiIndex]->notifyFn     = NotifyBasicNotification;
      ppRegisteredCallouts[BASE_INDEX_PBI + pbiIndex]->flowDeleteFn = 0;
   }

#if(NTDDI_VERSION >= NTDDI_WIN7)

   /// Register all PROXY_BY_ALE Callouts
   for(UINT32 pbaIndex = 0;
       pbaIndex < PROXY_BY_ALE_REDIRECT_COUNT;
       pbaIndex++)
   {
      HLPR_NEW(ppRegisteredCallouts[BASE_INDEX_PBA + pbaIndex],
               FWPS_CALLOUT,
               WFPSAMPLER_CALLOUT_DRIVER_TAG);
      HLPR_BAIL_ON_ALLOC_FAILURE(ppRegisteredCallouts[BASE_INDEX_PBA + pbaIndex],
                                 status);

      ppRegisteredCallouts[BASE_INDEX_PBA + pbaIndex]->calloutKey   = *(ppProxyByALERedirect[pbaIndex]);
      ppRegisteredCallouts[BASE_INDEX_PBA + pbaIndex]->flags        = flags;
      ppRegisteredCallouts[BASE_INDEX_PBA + pbaIndex]->classifyFn   = ClassifyProxyByALERedirect;
      ppRegisteredCallouts[BASE_INDEX_PBA + pbaIndex]->notifyFn     = NotifyProxyByALERedirectNotification;
      ppRegisteredCallouts[BASE_INDEX_PBA + pbaIndex]->flowDeleteFn = 0;
   }

#endif /// (NTDDI_VERSION >= NTDDI_WIN7)

   /// Register all PEND_AUTHORIZATION Callouts
   for(UINT32 pndIndex = 0;
       pndIndex < PEND_AUTHORIZATION_COUNT;
       pndIndex++)
   {
      HLPR_NEW(ppRegisteredCallouts[BASE_INDEX_PND + pndIndex],
               FWPS_CALLOUT,
               WFPSAMPLER_CALLOUT_DRIVER_TAG);
      HLPR_BAIL_ON_ALLOC_FAILURE(ppRegisteredCallouts[BASE_INDEX_PND + pndIndex],
                                 status);

      ppRegisteredCallouts[BASE_INDEX_PND + pndIndex]->calloutKey   = *(ppPendAuthorization[pndIndex]);
      ppRegisteredCallouts[BASE_INDEX_PND + pndIndex]->flags        = flags;
      ppRegisteredCallouts[BASE_INDEX_PND + pndIndex]->classifyFn   = ClassifyPendAuthorization;
      ppRegisteredCallouts[BASE_INDEX_PND + pndIndex]->notifyFn     = NotifyPendAuthorizationNotification;
      ppRegisteredCallouts[BASE_INDEX_PND + pndIndex]->flowDeleteFn = 0;
   }

   HLPR_BAIL_LABEL:

   if(status != STATUS_SUCCESS)
      PrvExposedCalloutsUndefine();

#if DBG
   
   DbgPrintEx(DPFLTR_IHVNETWORK_ID,
              DPFLTR_INFO_LEVEL,
              " <--- PrvExposedCalloutsDefine() [status: %#x]\n",
              status);

#endif /// DBG
   
   return status;
}

_IRQL_requires_(PASSIVE_LEVEL)
_IRQL_requires_same_
_Success_(return == STATUS_SUCCESS)
NTSTATUS KrnlHlprExposedCalloutsUnregister()
{
#if DBG
   
   DbgPrintEx(DPFLTR_IHVNETWORK_ID,
              DPFLTR_INFO_LEVEL,
              " ---> KrnlHlprExposedCalloutsUnregister()\n");

#endif /// DBG
   
   NTSTATUS status = STATUS_SUCCESS;

   for(UINT32 calloutIndex = 0;
       calloutIndex < EXPOSED_CALLOUT_COUNT;
       calloutIndex++)
   {
      if(ppRegisteredCallouts[calloutIndex] &&
         ppRegisteredCallouts[calloutIndex]->classifyFn)
      {
         NTSTATUS errCode = STATUS_SUCCESS;

         errCode = FwpsCalloutUnregisterByKey(&(ppRegisteredCallouts[calloutIndex]->calloutKey));
         if(errCode != STATUS_SUCCESS)
         {
            if(status == STATUS_SUCCESS)
               status = STATUS_UNSUCCESSFUL;

            DbgPrintEx(DPFLTR_IHVNETWORK_ID,
                       DPFLTR_ERROR_LEVEL,
                       " !!!! KrnlHlprExposedCalloutsUnregister() [status: %#x]\n",
                       errCode);
         }
      }
   }

   PrvExposedCalloutsUndefine();

#if DBG
   
   DbgPrintEx(DPFLTR_IHVNETWORK_ID,
              DPFLTR_INFO_LEVEL,
              " <--- KrnlHlprExposedCalloutsUnregister() [status: %#x]\n",
              status);

#endif /// DBG
   
   return status;
}

_IRQL_requires_(PASSIVE_LEVEL)
_IRQL_requires_same_
_Success_(return == STATUS_SUCCESS)
NTSTATUS KrnlHlprExposedCalloutsRegister()
{
#if DBG
   
   DbgPrintEx(DPFLTR_IHVNETWORK_ID,
              DPFLTR_INFO_LEVEL,
              " ---> KrnlHlprExposedCalloutsRegister()\n");

#endif /// DBG
   
   NTSTATUS status = STATUS_SUCCESS;

   status = PrvExposedCalloutsDefine();
   HLPR_BAIL_ON_FAILURE(status);

   for(UINT32 calloutIndex = 0;
       calloutIndex < EXPOSED_CALLOUT_COUNT;
       calloutIndex++)
   {
      if(ppRegisteredCallouts[calloutIndex] &&
         ppRegisteredCallouts[calloutIndex]->classifyFn)
      {
         status = FwpsCalloutRegister(g_pWDMDevice,
                                      ppRegisteredCallouts[calloutIndex],
                                      0);
         if(status != STATUS_SUCCESS)
         {
            DbgPrintEx(DPFLTR_IHVNETWORK_ID,
                       DPFLTR_ERROR_LEVEL,
                       " !!!! KrnlHlprExposedCalloutsRegister : FwpsCalloutRegister() [status: %#x][Index: %#x]\n",
                       status,
                       calloutIndex);

            HLPR_BAIL;
         }
      }
   }

   HLPR_BAIL_LABEL:

   if(status != STATUS_SUCCESS)
      KrnlHlprExposedCalloutsUnregister();

#if DBG
   
   DbgPrintEx(DPFLTR_IHVNETWORK_ID,
              DPFLTR_INFO_LEVEL,
              " <--- KrnlHlprExposedCalloutsRegister() [status: %#x]\n",
              status);

#endif /// DBG
   
   return status;
}

_IRQL_requires_min_(PASSIVE_LEVEL)
_IRQL_requires_max_(DISPATCH_LEVEL)
_IRQL_requires_same_
_Success_(return != 0)
PSTR KrnlHlprExposedCalloutToString(_In_ const GUID* pCalloutKey)
{
#if DBG
   
   DbgPrintEx(DPFLTR_IHVNETWORK_ID,
              DPFLTR_INFO_LEVEL,
              " ---> KrnlHlprExposedCalloutToString()\n");

#endif /// DBG
   
   NT_ASSERT(pCalloutKey);

   PSTR         pCalloutString   = 0;
   const UINT32 NUM_MASKED_BYTES = 15;

   if(RtlCompareMemory(&WFPSAMPLER_CALLOUT_BASIC_ACTION_BLOCK,
                       pCalloutKey,
                       NUM_MASKED_BYTES))
   {
      if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_BLOCK_AT_INBOUND_IPPACKET_V4)
         pCalloutString = "BASIC_ACTION_BLOCK_AT_INBOUND_IPPACKET_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_BLOCK_AT_INBOUND_IPPACKET_V6)
         pCalloutString = "BASIC_ACTION_BLOCK_AT_INBOUND_IPPACKET_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_BLOCK_AT_OUTBOUND_IPPACKET_V4)
         pCalloutString = "BASIC_ACTION_BLOCK_AT_OUTBOUND_IPPACKET_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_BLOCK_AT_OUTBOUND_IPPACKET_V6)
         pCalloutString = "BASIC_ACTION_BLOCK_AT_OUTBOUND_IPPACKET_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_BLOCK_AT_IPFORWARD_V4)
         pCalloutString = "BASIC_ACTION_BLOCK_AT_IPFORWARD_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_BLOCK_AT_IPFORWARD_V6)
         pCalloutString = "BASIC_ACTION_BLOCK_AT_IPFORWARD_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_BLOCK_AT_INBOUND_TRANSPORT_V4)
         pCalloutString = "BASIC_ACTION_BLOCK_AT_INBOUND_TRANSPORT_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_BLOCK_AT_INBOUND_TRANSPORT_V6)
         pCalloutString = "BASIC_ACTION_BLOCK_AT_INBOUND_TRANSPORT_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_BLOCK_AT_OUTBOUND_TRANSPORT_V4)
         pCalloutString = "BASIC_ACTION_BLOCK_AT_OUTBOUND_TRANSPORT_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_BLOCK_AT_OUTBOUND_TRANSPORT_V6)
         pCalloutString = "BASIC_ACTION_BLOCK_AT_OUTBOUND_TRANSPORT_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_BLOCK_AT_STREAM_V4)
         pCalloutString = "BASIC_ACTION_BLOCK_AT_STREAM_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_BLOCK_AT_STREAM_V6)
         pCalloutString = "BASIC_ACTION_BLOCK_AT_STREAM_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_BLOCK_AT_DATAGRAM_DATA_V4)
         pCalloutString = "BASIC_ACTION_BLOCK_AT_DATAGRAM_DATA_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_BLOCK_AT_DATAGRAM_DATA_V6)
         pCalloutString = "BASIC_ACTION_BLOCK_AT_DATAGRAM_DATA_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_BLOCK_AT_INBOUND_ICMP_ERROR_V4)
         pCalloutString = "BASIC_ACTION_BLOCK_AT_INBOUND_ICMP_ERROR_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_BLOCK_AT_INBOUND_ICMP_ERROR_V6)
         pCalloutString = "BASIC_ACTION_BLOCK_AT_INBOUND_ICMP_ERROR_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_BLOCK_AT_OUTBOUND_ICMP_ERROR_V4)
         pCalloutString = "BASIC_ACTION_BLOCK_AT_OUTBOUND_ICMP_ERROR_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_BLOCK_AT_OUTBOUND_ICMP_ERROR_V6)
         pCalloutString = "BASIC_ACTION_BLOCK_AT_OUTBOUND_ICMP_ERROR_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_BLOCK_AT_ALE_RESOURCE_ASSIGNMENT_V4)
         pCalloutString = "BASIC_ACTION_BLOCK_AT_ALE_RESOURCE_ASSIGNMENT_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_BLOCK_AT_ALE_RESOURCE_ASSIGNMENT_V6)
         pCalloutString = "BASIC_ACTION_BLOCK_AT_ALE_RESOURCE_ASSIGNMENT_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_BLOCK_AT_ALE_AUTH_LISTEN_V4)
         pCalloutString = "BASIC_ACTION_BLOCK_AT_ALE_AUTH_LISTEN_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_BLOCK_AT_ALE_AUTH_LISTEN_V6)
         pCalloutString = "BASIC_ACTION_BLOCK_AT_ALE_AUTH_LISTEN_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_BLOCK_AT_ALE_AUTH_RECV_ACCEPT_V4)
         pCalloutString = "BASIC_ACTION_BLOCK_AT_ALE_AUTH_RECV_ACCEPT_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_BLOCK_AT_ALE_AUTH_RECV_ACCEPT_V6)
         pCalloutString = "BASIC_ACTION_BLOCK_AT_ALE_AUTH_RECV_ACCEPT_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_BLOCK_AT_ALE_AUTH_CONNECT_V4)
         pCalloutString = "BASIC_ACTION_BLOCK_AT_ALE_AUTH_CONNECT_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_BLOCK_AT_ALE_AUTH_CONNECT_V6)
         pCalloutString = "BASIC_ACTION_BLOCK_AT_ALE_AUTH_CONNECT_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_BLOCK_AT_ALE_FLOW_ESTABLISHED_V4)
         pCalloutString = "BASIC_ACTION_BLOCK_AT_ALE_FLOW_ESTABLISHED_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_BLOCK_AT_ALE_FLOW_ESTABLISHED_V6)
         pCalloutString = "BASIC_ACTION_BLOCK_AT_ALE_FLOW_ESTABLISHED_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_BLOCK_AT_INBOUND_MAC_FRAME_ETHERNET)
         pCalloutString = "BASIC_ACTION_BLOCK_AT_INBOUND_MAC_FRAME_ETHERNET";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_BLOCK_AT_OUTBOUND_MAC_FRAME_ETHERNET)
         pCalloutString = "BASIC_ACTION_BLOCK_AT_OUTBOUND_MAC_FRAME_ETHERNET";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_BLOCK_AT_ALE_RESOURCE_RELEASE_V4)
         pCalloutString = "BASIC_ACTION_BLOCK_AT_ALE_RESOURCE_RELEASE_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_BLOCK_AT_ALE_RESOURCE_RELEASE_V6)
         pCalloutString = "BASIC_ACTION_BLOCK_AT_ALE_RESOURCE_RELEASE_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_BLOCK_AT_ALE_ENDPOINT_CLOSURE_V4)
         pCalloutString = "BASIC_ACTION_BLOCK_AT_ALE_ENDPOINT_CLOSURE_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_BLOCK_AT_ALE_ENDPOINT_CLOSURE_V6)
         pCalloutString = "BASIC_ACTION_BLOCK_AT_ALE_ENDPOINT_CLOSURE_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_BLOCK_AT_STREAM_PACKET_V4)
         pCalloutString = "BASIC_ACTION_BLOCK_AT_STREAM_PACKET_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_BLOCK_AT_STREAM_PACKET_V6)
         pCalloutString = "BASIC_ACTION_BLOCK_AT_STREAM_PACKET_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_BLOCK_AT_INBOUND_MAC_FRAME_NATIVE)
         pCalloutString = "BASIC_ACTION_BLOCK_AT_INBOUND_MAC_FRAME_NATIVE";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_BLOCK_AT_OUTBOUND_MAC_FRAME_NATIVE)
         pCalloutString = "BASIC_ACTION_BLOCK_AT_OUTBOUND_MAC_FRAME_NATIVE";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_BLOCK_AT_INGRESS_VSWITCH_ETHERNET)
         pCalloutString = "BASIC_ACTION_BLOCK_AT_INGRESS_VSWITCH_ETHERNET";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_BLOCK_AT_EGRESS_VSWITCH_ETHERNET)
         pCalloutString = "BASIC_ACTION_BLOCK_AT_EGRESS_VSWITCH_ETHERNET";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_BLOCK_AT_INGRESS_VSWITCH_TRANSPORT_V4)
         pCalloutString = "BASIC_ACTION_BLOCK_AT_INGRESS_VSWITCH_TRANSPORT_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_BLOCK_AT_INGRESS_VSWITCH_TRANSPORT_V6)
         pCalloutString = "BASIC_ACTION_BLOCK_AT_INGRESS_VSWITCH_TRANSPORT_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_BLOCK_AT_EGRESS_VSWITCH_TRANSPORT_V4)
         pCalloutString = "BASIC_ACTION_BLOCK_AT_EGRESS_VSWITCH_TRANSPORT_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_BLOCK_AT_EGRESS_VSWITCH_TRANSPORT_V6)
         pCalloutString = "BASIC_ACTION_BLOCK_AT_EGRESS_VSWITCH_TRANSPORT_V6";
   }
   else if(RtlCompareMemory(&WFPSAMPLER_CALLOUT_BASIC_ACTION_CONTINUE,
                            pCalloutKey,
                            NUM_MASKED_BYTES))
   {
      if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_CONTINUE_AT_INBOUND_IPPACKET_V4)
         pCalloutString = "BASIC_ACTION_CONTINUE_AT_INBOUND_IPPACKET_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_CONTINUE_AT_INBOUND_IPPACKET_V6)
         pCalloutString = "BASIC_ACTION_CONTINUE_AT_INBOUND_IPPACKET_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_CONTINUE_AT_OUTBOUND_IPPACKET_V4)
         pCalloutString = "BASIC_ACTION_CONTINUE_AT_OUTBOUND_IPPACKET_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_CONTINUE_AT_OUTBOUND_IPPACKET_V6)
         pCalloutString = "BASIC_ACTION_CONTINUE_AT_OUTBOUND_IPPACKET_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_CONTINUE_AT_IPFORWARD_V4)
         pCalloutString = "BASIC_ACTION_CONTINUE_AT_IPFORWARD_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_CONTINUE_AT_IPFORWARD_V6)
         pCalloutString = "BASIC_ACTION_CONTINUE_AT_IPFORWARD_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_CONTINUE_AT_INBOUND_TRANSPORT_V4)
         pCalloutString = "BASIC_ACTION_CONTINUE_AT_INBOUND_TRANSPORT_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_CONTINUE_AT_INBOUND_TRANSPORT_V6)
         pCalloutString = "BASIC_ACTION_CONTINUE_AT_INBOUND_TRANSPORT_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_CONTINUE_AT_OUTBOUND_TRANSPORT_V4)
         pCalloutString = "BASIC_ACTION_CONTINUE_AT_OUTBOUND_TRANSPORT_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_CONTINUE_AT_OUTBOUND_TRANSPORT_V6)
         pCalloutString = "BASIC_ACTION_CONTINUE_AT_OUTBOUND_TRANSPORT_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_CONTINUE_AT_STREAM_V4)
         pCalloutString = "BASIC_ACTION_CONTINUE_AT_STREAM_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_CONTINUE_AT_STREAM_V6)
         pCalloutString = "BASIC_ACTION_CONTINUE_AT_STREAM_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_CONTINUE_AT_DATAGRAM_DATA_V4)
         pCalloutString = "BASIC_ACTION_CONTINUE_AT_DATAGRAM_DATA_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_CONTINUE_AT_DATAGRAM_DATA_V6)
         pCalloutString = "BASIC_ACTION_CONTINUE_AT_DATAGRAM_DATA_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_CONTINUE_AT_INBOUND_ICMP_ERROR_V4)
         pCalloutString = "BASIC_ACTION_CONTINUE_AT_INBOUND_ICMP_ERROR_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_CONTINUE_AT_INBOUND_ICMP_ERROR_V6)
         pCalloutString = "BASIC_ACTION_CONTINUE_AT_INBOUND_ICMP_ERROR_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_CONTINUE_AT_OUTBOUND_ICMP_ERROR_V4)
         pCalloutString = "BASIC_ACTION_CONTINUE_AT_OUTBOUND_ICMP_ERROR_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_CONTINUE_AT_OUTBOUND_ICMP_ERROR_V6)
         pCalloutString = "BASIC_ACTION_CONTINUE_AT_OUTBOUND_ICMP_ERROR_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_CONTINUE_AT_ALE_RESOURCE_ASSIGNMENT_V4)
         pCalloutString = "BASIC_ACTION_CONTINUE_AT_ALE_RESOURCE_ASSIGNMENT_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_CONTINUE_AT_ALE_RESOURCE_ASSIGNMENT_V6)
         pCalloutString = "BASIC_ACTION_CONTINUE_AT_ALE_RESOURCE_ASSIGNMENT_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_CONTINUE_AT_ALE_AUTH_LISTEN_V4)
         pCalloutString = "BASIC_ACTION_CONTINUE_AT_ALE_AUTH_LISTEN_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_CONTINUE_AT_ALE_AUTH_LISTEN_V6)
         pCalloutString = "BASIC_ACTION_CONTINUE_AT_ALE_AUTH_LISTEN_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_CONTINUE_AT_ALE_AUTH_RECV_ACCEPT_V4)
         pCalloutString = "BASIC_ACTION_CONTINUE_AT_ALE_AUTH_RECV_ACCEPT_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_CONTINUE_AT_ALE_AUTH_RECV_ACCEPT_V6)
         pCalloutString = "BASIC_ACTION_CONTINUE_AT_ALE_AUTH_RECV_ACCEPT_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_CONTINUE_AT_ALE_AUTH_CONNECT_V4)
         pCalloutString = "BASIC_ACTION_CONTINUE_AT_ALE_AUTH_CONNECT_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_CONTINUE_AT_ALE_AUTH_CONNECT_V6)
         pCalloutString = "BASIC_ACTION_CONTINUE_AT_ALE_AUTH_CONNECT_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_CONTINUE_AT_ALE_FLOW_ESTABLISHED_V4)
         pCalloutString = "BASIC_ACTION_CONTINUE_AT_ALE_FLOW_ESTABLISHED_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_CONTINUE_AT_ALE_FLOW_ESTABLISHED_V6)
         pCalloutString = "BASIC_ACTION_CONTINUE_AT_ALE_FLOW_ESTABLISHED_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_CONTINUE_AT_INBOUND_MAC_FRAME_ETHERNET)
         pCalloutString = "BASIC_ACTION_CONTINUE_AT_INBOUND_MAC_FRAME_ETHERNET";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_CONTINUE_AT_OUTBOUND_MAC_FRAME_ETHERNET)
         pCalloutString = "BASIC_ACTION_CONTINUE_AT_OUTBOUND_MAC_FRAME_ETHERNET";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_CONTINUE_AT_ALE_RESOURCE_RELEASE_V4)
         pCalloutString = "BASIC_ACTION_CONTINUE_AT_ALE_RESOURCE_RELEASE_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_CONTINUE_AT_ALE_RESOURCE_RELEASE_V6)
         pCalloutString = "BASIC_ACTION_CONTINUE_AT_ALE_RESOURCE_RELEASE_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_CONTINUE_AT_ALE_ENDPOINT_CLOSURE_V4)
         pCalloutString = "BASIC_ACTION_CONTINUE_AT_ALE_ENDPOINT_CLOSURE_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_CONTINUE_AT_ALE_ENDPOINT_CLOSURE_V6)
         pCalloutString = "BASIC_ACTION_CONTINUE_AT_ALE_ENDPOINT_CLOSURE_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_CONTINUE_AT_STREAM_PACKET_V4)
         pCalloutString = "BASIC_ACTION_CONTINUE_AT_STREAM_PACKET_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_CONTINUE_AT_STREAM_PACKET_V6)
         pCalloutString = "BASIC_ACTION_CONTINUE_AT_STREAM_PACKET_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_CONTINUE_AT_INBOUND_MAC_FRAME_NATIVE)
         pCalloutString = "BASIC_ACTION_CONTINUE_AT_INBOUND_MAC_FRAME_NATIVE";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_CONTINUE_AT_OUTBOUND_MAC_FRAME_NATIVE)
         pCalloutString = "BASIC_ACTION_CONTINUE_AT_OUTBOUND_MAC_FRAME_NATIVE";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_CONTINUE_AT_INGRESS_VSWITCH_ETHERNET)
         pCalloutString = "BASIC_ACTION_CONTINUE_AT_INGRESS_VSWITCH_ETHERNET";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_CONTINUE_AT_EGRESS_VSWITCH_ETHERNET)
         pCalloutString = "BASIC_ACTION_CONTINUE_AT_EGRESS_VSWITCH_ETHERNET";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_CONTINUE_AT_INGRESS_VSWITCH_TRANSPORT_V4)
         pCalloutString = "BASIC_ACTION_CONTINUE_AT_INGRESS_VSWITCH_TRANSPORT_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_CONTINUE_AT_INGRESS_VSWITCH_TRANSPORT_V6)
         pCalloutString = "BASIC_ACTION_CONTINUE_AT_INGRESS_VSWITCH_TRANSPORT_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_CONTINUE_AT_EGRESS_VSWITCH_TRANSPORT_V4)
         pCalloutString = "BASIC_ACTION_CONTINUE_AT_EGRESS_VSWITCH_TRANSPORT_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_CONTINUE_AT_EGRESS_VSWITCH_TRANSPORT_V6)
         pCalloutString = "BASIC_ACTION_CONTINUE_AT_EGRESS_VSWITCH_TRANSPORT_V6";
   }
   else if(RtlCompareMemory(&WFPSAMPLER_CALLOUT_BASIC_ACTION_PERMIT,
                            pCalloutKey,
                            NUM_MASKED_BYTES))
   {
      if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_PERMIT_AT_INBOUND_IPPACKET_V4)
         pCalloutString = "BASIC_ACTION_PERMIT_AT_INBOUND_IPPACKET_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_PERMIT_AT_INBOUND_IPPACKET_V6)
         pCalloutString = "BASIC_ACTION_PERMIT_AT_INBOUND_IPPACKET_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_PERMIT_AT_OUTBOUND_IPPACKET_V4)
         pCalloutString = "BASIC_ACTION_PERMIT_AT_OUTBOUND_IPPACKET_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_PERMIT_AT_OUTBOUND_IPPACKET_V6)
         pCalloutString = "BASIC_ACTION_PERMIT_AT_OUTBOUND_IPPACKET_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_PERMIT_AT_IPFORWARD_V4)
         pCalloutString = "BASIC_ACTION_PERMIT_AT_IPFORWARD_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_PERMIT_AT_IPFORWARD_V6)
         pCalloutString = "BASIC_ACTION_PERMIT_AT_IPFORWARD_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_PERMIT_AT_INBOUND_TRANSPORT_V4)
         pCalloutString = "BASIC_ACTION_PERMIT_AT_INBOUND_TRANSPORT_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_PERMIT_AT_INBOUND_TRANSPORT_V6)
         pCalloutString = "BASIC_ACTION_PERMIT_AT_INBOUND_TRANSPORT_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_PERMIT_AT_OUTBOUND_TRANSPORT_V4)
         pCalloutString = "BASIC_ACTION_PERMIT_AT_OUTBOUND_TRANSPORT_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_PERMIT_AT_OUTBOUND_TRANSPORT_V6)
         pCalloutString = "BASIC_ACTION_PERMIT_AT_OUTBOUND_TRANSPORT_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_PERMIT_AT_STREAM_V4)
         pCalloutString = "BASIC_ACTION_PERMIT_AT_STREAM_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_PERMIT_AT_STREAM_V6)
         pCalloutString = "BASIC_ACTION_PERMIT_AT_STREAM_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_PERMIT_AT_DATAGRAM_DATA_V4)
         pCalloutString = "BASIC_ACTION_PERMIT_AT_DATAGRAM_DATA_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_PERMIT_AT_DATAGRAM_DATA_V6)
         pCalloutString = "BASIC_ACTION_PERMIT_AT_DATAGRAM_DATA_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_PERMIT_AT_INBOUND_ICMP_ERROR_V4)
         pCalloutString = "BASIC_ACTION_PERMIT_AT_INBOUND_ICMP_ERROR_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_PERMIT_AT_INBOUND_ICMP_ERROR_V6)
         pCalloutString = "BASIC_ACTION_PERMIT_AT_INBOUND_ICMP_ERROR_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_PERMIT_AT_OUTBOUND_ICMP_ERROR_V4)
         pCalloutString = "BASIC_ACTION_PERMIT_AT_OUTBOUND_ICMP_ERROR_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_PERMIT_AT_OUTBOUND_ICMP_ERROR_V6)
         pCalloutString = "BASIC_ACTION_PERMIT_AT_OUTBOUND_ICMP_ERROR_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_PERMIT_AT_ALE_RESOURCE_ASSIGNMENT_V4)
         pCalloutString = "BASIC_ACTION_PERMIT_AT_ALE_RESOURCE_ASSIGNMENT_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_PERMIT_AT_ALE_RESOURCE_ASSIGNMENT_V6)
         pCalloutString = "BASIC_ACTION_PERMIT_AT_ALE_RESOURCE_ASSIGNMENT_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_PERMIT_AT_ALE_AUTH_LISTEN_V4)
         pCalloutString = "BASIC_ACTION_PERMIT_AT_ALE_AUTH_LISTEN_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_PERMIT_AT_ALE_AUTH_LISTEN_V6)
         pCalloutString = "BASIC_ACTION_PERMIT_AT_ALE_AUTH_LISTEN_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_PERMIT_AT_ALE_AUTH_RECV_ACCEPT_V4)
         pCalloutString = "BASIC_ACTION_PERMIT_AT_ALE_AUTH_RECV_ACCEPT_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_PERMIT_AT_ALE_AUTH_RECV_ACCEPT_V6)
         pCalloutString = "BASIC_ACTION_PERMIT_AT_ALE_AUTH_RECV_ACCEPT_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_PERMIT_AT_ALE_AUTH_CONNECT_V4)
         pCalloutString = "BASIC_ACTION_PERMIT_AT_ALE_AUTH_CONNECT_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_PERMIT_AT_ALE_AUTH_CONNECT_V6)
         pCalloutString = "BASIC_ACTION_PERMIT_AT_ALE_AUTH_CONNECT_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_PERMIT_AT_ALE_FLOW_ESTABLISHED_V4)
         pCalloutString = "BASIC_ACTION_PERMIT_AT_ALE_FLOW_ESTABLISHED_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_PERMIT_AT_ALE_FLOW_ESTABLISHED_V6)
         pCalloutString = "BASIC_ACTION_PERMIT_AT_ALE_FLOW_ESTABLISHED_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_PERMIT_AT_INBOUND_MAC_FRAME_ETHERNET)
         pCalloutString = "BASIC_ACTION_PERMIT_AT_INBOUND_MAC_FRAME_ETHERNET";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_PERMIT_AT_OUTBOUND_MAC_FRAME_ETHERNET)
         pCalloutString = "BASIC_ACTION_PERMIT_AT_OUTBOUND_MAC_FRAME_ETHERNET";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_PERMIT_AT_ALE_RESOURCE_RELEASE_V4)
         pCalloutString = "BASIC_ACTION_PERMIT_AT_ALE_RESOURCE_RELEASE_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_PERMIT_AT_ALE_RESOURCE_RELEASE_V6)
         pCalloutString = "BASIC_ACTION_PERMIT_AT_ALE_RESOURCE_RELEASE_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_PERMIT_AT_ALE_ENDPOINT_CLOSURE_V4)
         pCalloutString = "BASIC_ACTION_PERMIT_AT_ALE_ENDPOINT_CLOSURE_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_PERMIT_AT_ALE_ENDPOINT_CLOSURE_V6)
         pCalloutString = "BASIC_ACTION_PERMIT_AT_ALE_ENDPOINT_CLOSURE_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_PERMIT_AT_STREAM_PACKET_V4)
         pCalloutString = "BASIC_ACTION_PERMIT_AT_STREAM_PACKET_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_PERMIT_AT_STREAM_PACKET_V6)
         pCalloutString = "BASIC_ACTION_PERMIT_AT_STREAM_PACKET_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_PERMIT_AT_INBOUND_MAC_FRAME_NATIVE)
         pCalloutString = "BASIC_ACTION_PERMIT_AT_INBOUND_MAC_FRAME_NATIVE";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_PERMIT_AT_OUTBOUND_MAC_FRAME_NATIVE)
         pCalloutString = "BASIC_ACTION_PERMIT_AT_OUTBOUND_MAC_FRAME_NATIVE";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_PERMIT_AT_INGRESS_VSWITCH_ETHERNET)
         pCalloutString = "BASIC_ACTION_PERMIT_AT_INGRESS_VSWITCH_ETHERNET";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_PERMIT_AT_EGRESS_VSWITCH_ETHERNET)
         pCalloutString = "BASIC_ACTION_PERMIT_AT_EGRESS_VSWITCH_ETHERNET";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_PERMIT_AT_INGRESS_VSWITCH_TRANSPORT_V4)
         pCalloutString = "BASIC_ACTION_PERMIT_AT_INGRESS_VSWITCH_TRANSPORT_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_PERMIT_AT_INGRESS_VSWITCH_TRANSPORT_V6)
         pCalloutString = "BASIC_ACTION_PERMIT_AT_INGRESS_VSWITCH_TRANSPORT_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_PERMIT_AT_EGRESS_VSWITCH_TRANSPORT_V4)
         pCalloutString = "BASIC_ACTION_PERMIT_AT_EGRESS_VSWITCH_TRANSPORT_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_PERMIT_AT_EGRESS_VSWITCH_TRANSPORT_V6)
         pCalloutString = "BASIC_ACTION_PERMIT_AT_EGRESS_VSWITCH_TRANSPORT_V6";
   }
   else if(RtlCompareMemory(&WFPSAMPLER_CALLOUT_BASIC_ACTION_RANDOM,
                            pCalloutKey,
                            NUM_MASKED_BYTES))
   {
      if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_RANDOM_AT_INBOUND_IPPACKET_V4)
         pCalloutString = "BASIC_ACTION_RANDOM_AT_INBOUND_IPPACKET_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_RANDOM_AT_INBOUND_IPPACKET_V6)
         pCalloutString = "BASIC_ACTION_RANDOM_AT_INBOUND_IPPACKET_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_RANDOM_AT_OUTBOUND_IPPACKET_V4)
         pCalloutString = "BASIC_ACTION_RANDOM_AT_OUTBOUND_IPPACKET_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_RANDOM_AT_OUTBOUND_IPPACKET_V6)
         pCalloutString = "BASIC_ACTION_RANDOM_AT_OUTBOUND_IPPACKET_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_RANDOM_AT_IPFORWARD_V4)
         pCalloutString = "BASIC_ACTION_RANDOM_AT_IPFORWARD_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_RANDOM_AT_IPFORWARD_V6)
         pCalloutString = "BASIC_ACTION_RANDOM_AT_IPFORWARD_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_RANDOM_AT_INBOUND_TRANSPORT_V4)
         pCalloutString = "BASIC_ACTION_RANDOM_AT_INBOUND_TRANSPORT_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_RANDOM_AT_INBOUND_TRANSPORT_V6)
         pCalloutString = "BASIC_ACTION_RANDOM_AT_INBOUND_TRANSPORT_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_RANDOM_AT_OUTBOUND_TRANSPORT_V4)
         pCalloutString = "BASIC_ACTION_RANDOM_AT_OUTBOUND_TRANSPORT_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_RANDOM_AT_OUTBOUND_TRANSPORT_V6)
         pCalloutString = "BASIC_ACTION_RANDOM_AT_OUTBOUND_TRANSPORT_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_RANDOM_AT_STREAM_V4)
         pCalloutString = "BASIC_ACTION_RANDOM_AT_STREAM_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_RANDOM_AT_STREAM_V6)
         pCalloutString = "BASIC_ACTION_RANDOM_AT_STREAM_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_RANDOM_AT_DATAGRAM_DATA_V4)
         pCalloutString = "BASIC_ACTION_RANDOM_AT_DATAGRAM_DATA_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_RANDOM_AT_DATAGRAM_DATA_V6)
         pCalloutString = "BASIC_ACTION_RANDOM_AT_DATAGRAM_DATA_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_RANDOM_AT_INBOUND_ICMP_ERROR_V4)
         pCalloutString = "BASIC_ACTION_RANDOM_AT_INBOUND_ICMP_ERROR_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_RANDOM_AT_INBOUND_ICMP_ERROR_V6)
         pCalloutString = "BASIC_ACTION_RANDOM_AT_INBOUND_ICMP_ERROR_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_RANDOM_AT_OUTBOUND_ICMP_ERROR_V4)
         pCalloutString = "BASIC_ACTION_RANDOM_AT_OUTBOUND_ICMP_ERROR_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_RANDOM_AT_OUTBOUND_ICMP_ERROR_V6)
         pCalloutString = "BASIC_ACTION_RANDOM_AT_OUTBOUND_ICMP_ERROR_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_RANDOM_AT_ALE_RESOURCE_ASSIGNMENT_V4)
         pCalloutString = "BASIC_ACTION_RANDOM_AT_ALE_RESOURCE_ASSIGNMENT_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_RANDOM_AT_ALE_RESOURCE_ASSIGNMENT_V6)
         pCalloutString = "BASIC_ACTION_RANDOM_AT_ALE_RESOURCE_ASSIGNMENT_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_RANDOM_AT_ALE_AUTH_LISTEN_V4)
         pCalloutString = "BASIC_ACTION_RANDOM_AT_ALE_AUTH_LISTEN_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_RANDOM_AT_ALE_AUTH_LISTEN_V6)
         pCalloutString = "BASIC_ACTION_RANDOM_AT_ALE_AUTH_LISTEN_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_RANDOM_AT_ALE_AUTH_RECV_ACCEPT_V4)
         pCalloutString = "BASIC_ACTION_RANDOM_AT_ALE_AUTH_RECV_ACCEPT_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_RANDOM_AT_ALE_AUTH_RECV_ACCEPT_V6)
         pCalloutString = "BASIC_ACTION_RANDOM_AT_ALE_AUTH_RECV_ACCEPT_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_RANDOM_AT_ALE_AUTH_CONNECT_V4)
         pCalloutString = "BASIC_ACTION_RANDOM_AT_ALE_AUTH_CONNECT_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_RANDOM_AT_ALE_AUTH_CONNECT_V6)
         pCalloutString = "BASIC_ACTION_RANDOM_AT_ALE_AUTH_CONNECT_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_RANDOM_AT_ALE_FLOW_ESTABLISHED_V4)
         pCalloutString = "BASIC_ACTION_RANDOM_AT_ALE_FLOW_ESTABLISHED_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_RANDOM_AT_ALE_FLOW_ESTABLISHED_V6)
         pCalloutString = "BASIC_ACTION_RANDOM_AT_ALE_FLOW_ESTABLISHED_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_RANDOM_AT_INBOUND_MAC_FRAME_ETHERNET)
         pCalloutString = "BASIC_ACTION_RANDOM_AT_INBOUND_MAC_FRAME_ETHERNET";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_RANDOM_AT_OUTBOUND_MAC_FRAME_ETHERNET)
         pCalloutString = "BASIC_ACTION_RANDOM_AT_OUTBOUND_MAC_FRAME_ETHERNET";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_RANDOM_AT_ALE_RESOURCE_RELEASE_V4)
         pCalloutString = "BASIC_ACTION_RANDOM_AT_ALE_RESOURCE_RELEASE_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_RANDOM_AT_ALE_RESOURCE_RELEASE_V6)
         pCalloutString = "BASIC_ACTION_RANDOM_AT_ALE_RESOURCE_RELEASE_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_RANDOM_AT_ALE_ENDPOINT_CLOSURE_V4)
         pCalloutString = "BASIC_ACTION_RANDOM_AT_ALE_ENDPOINT_CLOSURE_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_RANDOM_AT_ALE_ENDPOINT_CLOSURE_V6)
         pCalloutString = "BASIC_ACTION_RANDOM_AT_ALE_ENDPOINT_CLOSURE_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_RANDOM_AT_STREAM_PACKET_V4)
         pCalloutString = "BASIC_ACTION_RANDOM_AT_STREAM_PACKET_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_RANDOM_AT_STREAM_PACKET_V6)
         pCalloutString = "BASIC_ACTION_RANDOM_AT_STREAM_PACKET_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_RANDOM_AT_INBOUND_MAC_FRAME_NATIVE)
         pCalloutString = "BASIC_ACTION_RANDOM_AT_INBOUND_MAC_FRAME_NATIVE";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_RANDOM_AT_OUTBOUND_MAC_FRAME_NATIVE)
         pCalloutString = "BASIC_ACTION_RANDOM_AT_OUTBOUND_MAC_FRAME_NATIVE";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_RANDOM_AT_INGRESS_VSWITCH_ETHERNET)
         pCalloutString = "BASIC_ACTION_RANDOM_AT_INGRESS_VSWITCH_ETHERNET";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_RANDOM_AT_EGRESS_VSWITCH_ETHERNET)
         pCalloutString = "BASIC_ACTION_RANDOM_AT_EGRESS_VSWITCH_ETHERNET";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_RANDOM_AT_INGRESS_VSWITCH_TRANSPORT_V4)
         pCalloutString = "BASIC_ACTION_RANDOM_AT_INGRESS_VSWITCH_TRANSPORT_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_RANDOM_AT_INGRESS_VSWITCH_TRANSPORT_V6)
         pCalloutString = "BASIC_ACTION_RANDOM_AT_INGRESS_VSWITCH_TRANSPORT_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_RANDOM_AT_EGRESS_VSWITCH_TRANSPORT_V4)
         pCalloutString = "BASIC_ACTION_RANDOM_AT_EGRESS_VSWITCH_TRANSPORT_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_ACTION_RANDOM_AT_EGRESS_VSWITCH_TRANSPORT_V6)
         pCalloutString = "BASIC_ACTION_RANDOM_AT_EGRESS_VSWITCH_TRANSPORT_V6";
   }
   else if(RtlCompareMemory(&WFPSAMPLER_CALLOUT_BASIC_PACKET_EXAMINATION,
                            pCalloutKey,
                            NUM_MASKED_BYTES))
   {
      if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_EXAMINATION_AT_INBOUND_IPPACKET_V4)
         pCalloutString = "BASIC_PACKET_EXAMINATION_AT_INBOUND_IPPACKET_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_EXAMINATION_AT_INBOUND_IPPACKET_V6)
         pCalloutString = "BASIC_PACKET_EXAMINATION_AT_INBOUND_IPPACKET_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_EXAMINATION_AT_OUTBOUND_IPPACKET_V4)
         pCalloutString = "BASIC_PACKET_EXAMINATION_AT_OUTBOUND_IPPACKET_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_EXAMINATION_AT_OUTBOUND_IPPACKET_V6)
         pCalloutString = "BASIC_PACKET_EXAMINATION_AT_OUTBOUND_IPPACKET_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_EXAMINATION_AT_IPFORWARD_V4)
         pCalloutString = "BASIC_PACKET_EXAMINATION_AT_IPFORWARD_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_EXAMINATION_AT_IPFORWARD_V6)
         pCalloutString = "BASIC_PACKET_EXAMINATION_AT_IPFORWARD_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_EXAMINATION_AT_INBOUND_TRANSPORT_V4)
         pCalloutString = "BASIC_PACKET_EXAMINATION_AT_INBOUND_TRANSPORT_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_EXAMINATION_AT_INBOUND_TRANSPORT_V6)
         pCalloutString = "BASIC_PACKET_EXAMINATION_AT_INBOUND_TRANSPORT_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_EXAMINATION_AT_OUTBOUND_TRANSPORT_V4)
         pCalloutString = "BASIC_PACKET_EXAMINATION_AT_OUTBOUND_TRANSPORT_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_EXAMINATION_AT_OUTBOUND_TRANSPORT_V6)
         pCalloutString = "BASIC_PACKET_EXAMINATION_AT_OUTBOUND_TRANSPORT_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_EXAMINATION_AT_DATAGRAM_DATA_V4)
         pCalloutString = "BASIC_PACKET_EXAMINATION_AT_DATAGRAM_DATA_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_EXAMINATION_AT_DATAGRAM_DATA_V6)
         pCalloutString = "BASIC_PACKET_EXAMINATION_AT_DATAGRAM_DATA_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_EXAMINATION_AT_INBOUND_ICMP_ERROR_V4)
         pCalloutString = "BASIC_PACKET_EXAMINATION_AT_INBOUND_ICMP_ERROR_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_EXAMINATION_AT_INBOUND_ICMP_ERROR_V6)
         pCalloutString = "BASIC_PACKET_EXAMINATION_AT_INBOUND_ICMP_ERROR_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_EXAMINATION_AT_OUTBOUND_ICMP_ERROR_V4)
         pCalloutString = "BASIC_PACKET_EXAMINATION_AT_OUTBOUND_ICMP_ERROR_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_EXAMINATION_AT_OUTBOUND_ICMP_ERROR_V6)
         pCalloutString = "BASIC_PACKET_EXAMINATION_AT_OUTBOUND_ICMP_ERROR_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_EXAMINATION_AT_ALE_AUTH_RECV_ACCEPT_V4)
         pCalloutString = "BASIC_PACKET_EXAMINATION_AT_ALE_AUTH_RECV_ACCEPT_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_EXAMINATION_AT_ALE_AUTH_RECV_ACCEPT_V6)
         pCalloutString = "BASIC_PACKET_EXAMINATION_AT_ALE_AUTH_RECV_ACCEPT_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_EXAMINATION_AT_ALE_AUTH_CONNECT_V4)
         pCalloutString = "BASIC_PACKET_EXAMINATION_AT_ALE_AUTH_CONNECT_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_EXAMINATION_AT_ALE_AUTH_CONNECT_V6)
         pCalloutString = "BASIC_PACKET_EXAMINATION_AT_ALE_AUTH_CONNECT_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_EXAMINATION_AT_ALE_FLOW_ESTABLISHED_V4)
         pCalloutString = "BASIC_PACKET_EXAMINATION_AT_ALE_FLOW_ESTABLISHED_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_EXAMINATION_AT_ALE_FLOW_ESTABLISHED_V6)
         pCalloutString = "BASIC_PACKET_EXAMINATION_AT_ALE_FLOW_ESTABLISHED_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_EXAMINATION_AT_STREAM_PACKET_V4)
         pCalloutString = "BASIC_PACKET_EXAMINATION_AT_STREAM_PACKET_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_EXAMINATION_AT_STREAM_PACKET_V6)
         pCalloutString = "BASIC_PACKET_EXAMINATION_AT_STREAM_PACKET_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_EXAMINATION_AT_INBOUND_MAC_FRAME_ETHERNET)
         pCalloutString = "BASIC_PACKET_EXAMINATION_AT_INBOUND_MAC_FRAME_ETHERNET";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_EXAMINATION_AT_OUTBOUND_MAC_FRAME_ETHERNET)
         pCalloutString = "BASIC_PACKET_EXAMINATION_AT_OUTBOUND_MAC_FRAME_ETHERNET";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_EXAMINATION_AT_INBOUND_MAC_FRAME_NATIVE)
         pCalloutString = "BASIC_PACKET_EXAMINATION_AT_INBOUND_MAC_FRAME_NATIVE";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_EXAMINATION_AT_OUTBOUND_MAC_FRAME_NATIVE)
         pCalloutString = "BASIC_PACKET_EXAMINATION_AT_OUTBOUND_MAC_FRAME_NATIVE";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_EXAMINATION_AT_INGRESS_VSWITCH_ETHERNET)
         pCalloutString = "BASIC_PACKET_EXAMINATION_AT_INGRESS_VSWITCH_ETHERNET";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_EXAMINATION_AT_EGRESS_VSWITCH_ETHERNET)
         pCalloutString = "BASIC_PACKET_EXAMINATION_AT_EGRESS_VSWITCH_ETHERNET";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_EXAMINATION_AT_INGRESS_VSWITCH_TRANSPORT_V4)
         pCalloutString = "BASIC_PACKET_EXAMINATION_AT_INGRESS_VSWITCH_TRANSPORT_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_EXAMINATION_AT_INGRESS_VSWITCH_TRANSPORT_V6)
         pCalloutString = "BASIC_PACKET_EXAMINATION_AT_INGRESS_VSWITCH_TRANSPORT_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_EXAMINATION_AT_EGRESS_VSWITCH_TRANSPORT_V4)
         pCalloutString = "BASIC_PACKET_EXAMINATION_AT_EGRESS_VSWITCH_TRANSPORT_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_EXAMINATION_AT_EGRESS_VSWITCH_TRANSPORT_V6)
         pCalloutString = "BASIC_PACKET_EXAMINATION_AT_EGRESS_VSWITCH_TRANSPORT_V6";
   }
   else if(RtlCompareMemory(&WFPSAMPLER_CALLOUT_BASIC_PACKET_INJECTION,
                            pCalloutKey,
                            NUM_MASKED_BYTES))
   {
      if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_INJECTION_AT_INBOUND_IPPACKET_V4)
         pCalloutString = "BASIC_PACKET_INJECTION_AT_INBOUND_IPPACKET_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_INJECTION_AT_INBOUND_IPPACKET_V6)
         pCalloutString = "BASIC_PACKET_INJECTION_AT_INBOUND_IPPACKET_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_INJECTION_AT_OUTBOUND_IPPACKET_V4)
         pCalloutString = "BASIC_PACKET_INJECTION_AT_OUTBOUND_IPPACKET_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_INJECTION_AT_OUTBOUND_IPPACKET_V6)
         pCalloutString = "BASIC_PACKET_INJECTION_AT_OUTBOUND_IPPACKET_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_INJECTION_AT_IPFORWARD_V4)
         pCalloutString = "BASIC_PACKET_INJECTION_AT_IPFORWARD_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_INJECTION_AT_IPFORWARD_V6)
         pCalloutString = "BASIC_PACKET_INJECTION_AT_IPFORWARD_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_INJECTION_AT_INBOUND_TRANSPORT_V4)
         pCalloutString = "BASIC_PACKET_INJECTION_AT_INBOUND_TRANSPORT_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_INJECTION_AT_INBOUND_TRANSPORT_V6)
         pCalloutString = "BASIC_PACKET_INJECTION_AT_INBOUND_TRANSPORT_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_INJECTION_AT_OUTBOUND_TRANSPORT_V4)
         pCalloutString = "BASIC_PACKET_INJECTION_AT_OUTBOUND_TRANSPORT_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_INJECTION_AT_OUTBOUND_TRANSPORT_V6)
         pCalloutString = "BASIC_PACKET_INJECTION_AT_OUTBOUND_TRANSPORT_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_INJECTION_AT_DATAGRAM_DATA_V4)
         pCalloutString = "BASIC_PACKET_INJECTION_AT_DATAGRAM_DATA_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_INJECTION_AT_DATAGRAM_DATA_V6)
         pCalloutString = "BASIC_PACKET_INJECTION_AT_DATAGRAM_DATA_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_INJECTION_AT_INBOUND_ICMP_ERROR_V4)
         pCalloutString = "BASIC_PACKET_INJECTION_AT_INBOUND_ICMP_ERROR_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_INJECTION_AT_INBOUND_ICMP_ERROR_V6)
         pCalloutString = "BASIC_PACKET_INJECTION_AT_INBOUND_ICMP_ERROR_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_INJECTION_AT_OUTBOUND_ICMP_ERROR_V4)
         pCalloutString = "BASIC_PACKET_INJECTION_AT_OUTBOUND_ICMP_ERROR_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_INJECTION_AT_OUTBOUND_ICMP_ERROR_V6)
         pCalloutString = "BASIC_PACKET_INJECTION_AT_OUTBOUND_ICMP_ERROR_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_INJECTION_AT_ALE_AUTH_RECV_ACCEPT_V4)
         pCalloutString = "BASIC_PACKET_INJECTION_AT_ALE_AUTH_RECV_ACCEPT_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_INJECTION_AT_ALE_AUTH_RECV_ACCEPT_V6)
         pCalloutString = "BASIC_PACKET_INJECTION_AT_ALE_AUTH_RECV_ACCEPT_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_INJECTION_AT_ALE_AUTH_CONNECT_V4)
         pCalloutString = "BASIC_PACKET_INJECTION_AT_ALE_AUTH_CONNECT_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_INJECTION_AT_ALE_AUTH_CONNECT_V6)
         pCalloutString = "BASIC_PACKET_INJECTION_AT_ALE_AUTH_CONNECT_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_INJECTION_AT_ALE_FLOW_ESTABLISHED_V4)
         pCalloutString = "BASIC_PACKET_INJECTION_AT_ALE_FLOW_ESTABLISHED_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_INJECTION_AT_ALE_FLOW_ESTABLISHED_V6)
         pCalloutString = "BASIC_PACKET_INJECTION_AT_ALE_FLOW_ESTABLISHED_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_INJECTION_AT_STREAM_PACKET_V4)
         pCalloutString = "BASIC_PACKET_INJECTION_AT_STREAM_PACKET_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_INJECTION_AT_STREAM_PACKET_V6)
         pCalloutString = "BASIC_PACKET_INJECTION_AT_STREAM_PACKET_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_INJECTION_AT_INBOUND_MAC_FRAME_ETHERNET)
         pCalloutString = "BASIC_PACKET_INJECTION_AT_INBOUND_MAC_FRAME_ETHERNET";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_INJECTION_AT_OUTBOUND_MAC_FRAME_ETHERNET)
         pCalloutString = "BASIC_PACKET_INJECTION_AT_OUTBOUND_MAC_FRAME_ETHERNET";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_INJECTION_AT_INBOUND_MAC_FRAME_NATIVE)
         pCalloutString = "BASIC_PACKET_INJECTION_AT_INBOUND_MAC_FRAME_NATIVE";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_INJECTION_AT_OUTBOUND_MAC_FRAME_NATIVE)
         pCalloutString = "BASIC_PACKET_INJECTION_AT_OUTBOUND_MAC_FRAME_NATIVE";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_INJECTION_AT_INGRESS_VSWITCH_ETHERNET)
         pCalloutString = "BASIC_PACKET_INJECTION_AT_INGRESS_VSWITCH_ETHERNET";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_INJECTION_AT_EGRESS_VSWITCH_ETHERNET)
         pCalloutString = "BASIC_PACKET_INJECTION_AT_EGRESS_VSWITCH_ETHERNET";
   }
   else if(RtlCompareMemory(&WFPSAMPLER_CALLOUT_BASIC_PACKET_MODIFICATION,
                            pCalloutKey,
                            NUM_MASKED_BYTES))
   {
      if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_MODIFICATION_AT_INBOUND_IPPACKET_V4)
         pCalloutString = "BASIC_PACKET_MODIFICATION_AT_INBOUND_IPPACKET_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_MODIFICATION_AT_INBOUND_IPPACKET_V6)
         pCalloutString = "BASIC_PACKET_MODIFICATION_AT_INBOUND_IPPACKET_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_MODIFICATION_AT_OUTBOUND_IPPACKET_V4)
         pCalloutString = "BASIC_PACKET_MODIFICATION_AT_OUTBOUND_IPPACKET_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_MODIFICATION_AT_OUTBOUND_IPPACKET_V6)
         pCalloutString = "BASIC_PACKET_MODIFICATION_AT_OUTBOUND_IPPACKET_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_MODIFICATION_AT_IPFORWARD_V4)
         pCalloutString = "BASIC_PACKET_MODIFICATION_AT_IPFORWARD_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_MODIFICATION_AT_IPFORWARD_V6)
         pCalloutString = "BASIC_PACKET_MODIFICATION_AT_IPFORWARD_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_MODIFICATION_AT_INBOUND_TRANSPORT_V4)
         pCalloutString = "BASIC_PACKET_MODIFICATION_AT_INBOUND_TRANSPORT_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_MODIFICATION_AT_INBOUND_TRANSPORT_V6)
         pCalloutString = "BASIC_PACKET_MODIFICATION_AT_INBOUND_TRANSPORT_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_MODIFICATION_AT_OUTBOUND_TRANSPORT_V4)
         pCalloutString = "BASIC_PACKET_MODIFICATION_AT_OUTBOUND_TRANSPORT_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_MODIFICATION_AT_OUTBOUND_TRANSPORT_V6)
         pCalloutString = "BASIC_PACKET_MODIFICATION_AT_OUTBOUND_TRANSPORT_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_MODIFICATION_AT_DATAGRAM_DATA_V4)
         pCalloutString = "BASIC_PACKET_MODIFICATION_AT_DATAGRAM_DATA_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_MODIFICATION_AT_DATAGRAM_DATA_V6)
         pCalloutString = "BASIC_PACKET_MODIFICATION_AT_DATAGRAM_DATA_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_MODIFICATION_AT_INBOUND_ICMP_ERROR_V4)
         pCalloutString = "BASIC_PACKET_MODIFICATION_AT_INBOUND_ICMP_ERROR_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_MODIFICATION_AT_INBOUND_ICMP_ERROR_V6)
         pCalloutString = "BASIC_PACKET_MODIFICATION_AT_INBOUND_ICMP_ERROR_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_MODIFICATION_AT_OUTBOUND_ICMP_ERROR_V4)
         pCalloutString = "BASIC_PACKET_MODIFICATION_AT_OUTBOUND_ICMP_ERROR_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_MODIFICATION_AT_OUTBOUND_ICMP_ERROR_V6)
         pCalloutString = "BASIC_PACKET_MODIFICATION_AT_OUTBOUND_ICMP_ERROR_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_MODIFICATION_AT_ALE_AUTH_RECV_ACCEPT_V4)
         pCalloutString = "BASIC_PACKET_MODIFICATION_AT_ALE_AUTH_RECV_ACCEPT_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_MODIFICATION_AT_ALE_AUTH_RECV_ACCEPT_V6)
         pCalloutString = "BASIC_PACKET_MODIFICATION_AT_ALE_AUTH_RECV_ACCEPT_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_MODIFICATION_AT_ALE_AUTH_CONNECT_V4)
         pCalloutString = "BASIC_PACKET_MODIFICATION_AT_ALE_AUTH_CONNECT_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_MODIFICATION_AT_ALE_AUTH_CONNECT_V6)
         pCalloutString = "BASIC_PACKET_MODIFICATION_AT_ALE_AUTH_CONNECT_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_MODIFICATION_AT_ALE_FLOW_ESTABLISHED_V4)
         pCalloutString = "BASIC_PACKET_MODIFICATION_AT_ALE_FLOW_ESTABLISHED_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_MODIFICATION_AT_ALE_FLOW_ESTABLISHED_V6)
         pCalloutString = "BASIC_PACKET_MODIFICATION_AT_ALE_FLOW_ESTABLISHED_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_MODIFICATION_AT_STREAM_PACKET_V4)
         pCalloutString = "BASIC_PACKET_MODIFICATION_AT_STREAM_PACKET_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_MODIFICATION_AT_STREAM_PACKET_V6)
         pCalloutString = "BASIC_PACKET_MODIFICATION_AT_STREAM_PACKET_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_MODIFICATION_AT_INBOUND_MAC_FRAME_ETHERNET)
         pCalloutString = "BASIC_PACKET_MODIFICATION_AT_INBOUND_MAC_FRAME_ETHERNET";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_MODIFICATION_AT_OUTBOUND_MAC_FRAME_ETHERNET)
         pCalloutString = "BASIC_PACKET_MODIFICATION_AT_OUTBOUND_MAC_FRAME_ETHERNET";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_MODIFICATION_AT_INBOUND_MAC_FRAME_NATIVE)
         pCalloutString = "BASIC_PACKET_MODIFICATION_AT_INBOUND_MAC_FRAME_NATIVE";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_MODIFICATION_AT_INBOUND_MAC_FRAME_NATIVE)
         pCalloutString = "BASIC_PACKET_MODIFICATION_AT_OUTBOUND_MAC_FRAME_NATIVE";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_MODIFICATION_AT_INGRESS_VSWITCH_ETHERNET)
         pCalloutString = "BASIC_PACKET_MODIFICATION_AT_INGRESS_VSWITCH_ETHERNET";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_PACKET_MODIFICATION_AT_EGRESS_VSWITCH_ETHERNET)
         pCalloutString = "BASIC_PACKET_MODIFICATION_AT_EGRESS_VSWITCH_ETHERNET";
   }
   else if(RtlCompareMemory(&WFPSAMPLER_CALLOUT_BASIC_STREAM_INJECTION,
                            pCalloutKey,
                            NUM_MASKED_BYTES))
   {
      if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_STREAM_INJECTION_AT_STREAM_V4)
         pCalloutString = "BASIC_STREAM_INJECTION_AT_STREAM_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_BASIC_STREAM_INJECTION_AT_STREAM_V6)
         pCalloutString = "BASIC_STREAM_INJECTION_AT_STREAM_V6";
   }
   else if(RtlCompareMemory(&WFPSAMPLER_CALLOUT_FAST_PACKET_INJECTION,
                            pCalloutKey,
                            NUM_MASKED_BYTES))
   {
      if(pCalloutKey == &WFPSAMPLER_CALLOUT_FAST_PACKET_INJECTION_AT_INBOUND_IPPACKET_V4)
         pCalloutString = "FAST_PACKET_INJECTION_AT_INBOUND_IPPACKET_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_FAST_PACKET_INJECTION_AT_INBOUND_IPPACKET_V6)
         pCalloutString = "FAST_PACKET_INJECTION_AT_INBOUND_IPPACKET_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_FAST_PACKET_INJECTION_AT_OUTBOUND_IPPACKET_V4)
         pCalloutString = "FAST_PACKET_INJECTION_AT_OUTBOUND_IPPACKET_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_FAST_PACKET_INJECTION_AT_OUTBOUND_IPPACKET_V6)
         pCalloutString = "FAST_PACKET_INJECTION_AT_OUTBOUND_IPPACKET_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_FAST_PACKET_INJECTION_AT_IPFORWARD_V4)
         pCalloutString = "FAST_PACKET_INJECTION_AT_IPFORWARD_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_FAST_PACKET_INJECTION_AT_IPFORWARD_V6)
         pCalloutString = "FAST_PACKET_INJECTION_AT_IPFORWARD_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_FAST_PACKET_INJECTION_AT_INBOUND_TRANSPORT_V4)
         pCalloutString = "FAST_PACKET_INJECTION_AT_INBOUND_TRANSPORT_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_FAST_PACKET_INJECTION_AT_INBOUND_TRANSPORT_V6)
         pCalloutString = "FAST_PACKET_INJECTION_AT_INBOUND_TRANSPORT_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_FAST_PACKET_INJECTION_AT_OUTBOUND_TRANSPORT_V4)
         pCalloutString = "FAST_PACKET_INJECTION_AT_OUTBOUND_TRANSPORT_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_FAST_PACKET_INJECTION_AT_OUTBOUND_TRANSPORT_V6)
         pCalloutString = "FAST_PACKET_INJECTION_AT_OUTBOUND_TRANSPORT_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_FAST_PACKET_INJECTION_AT_DATAGRAM_DATA_V4)
         pCalloutString = "FAST_PACKET_INJECTION_AT_DATAGRAM_DATA_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_FAST_PACKET_INJECTION_AT_DATAGRAM_DATA_V6)
         pCalloutString = "FAST_PACKET_INJECTION_AT_DATAGRAM_DATA_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_FAST_PACKET_INJECTION_AT_INBOUND_ICMP_ERROR_V4)
         pCalloutString = "FAST_PACKET_INJECTION_AT_INBOUND_ICMP_ERROR_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_FAST_PACKET_INJECTION_AT_INBOUND_ICMP_ERROR_V6)
         pCalloutString = "FAST_PACKET_INJECTION_AT_INBOUND_ICMP_ERROR_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_FAST_PACKET_INJECTION_AT_OUTBOUND_ICMP_ERROR_V4)
         pCalloutString = "FAST_PACKET_INJECTION_AT_OUTBOUND_ICMP_ERROR_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_FAST_PACKET_INJECTION_AT_OUTBOUND_ICMP_ERROR_V6)
         pCalloutString = "FAST_PACKET_INJECTION_AT_OUTBOUND_ICMP_ERROR_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_FAST_PACKET_INJECTION_AT_ALE_AUTH_RECV_ACCEPT_V4)
         pCalloutString = "FAST_PACKET_INJECTION_AT_ALE_AUTH_RECV_ACCEPT_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_FAST_PACKET_INJECTION_AT_ALE_AUTH_RECV_ACCEPT_V6)
         pCalloutString = "FAST_PACKET_INJECTION_AT_ALE_AUTH_RECV_ACCEPT_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_FAST_PACKET_INJECTION_AT_ALE_AUTH_CONNECT_V4)
         pCalloutString = "FAST_PACKET_INJECTION_AT_ALE_AUTH_CONNECT_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_FAST_PACKET_INJECTION_AT_ALE_AUTH_CONNECT_V6)
         pCalloutString = "FAST_PACKET_INJECTION_AT_ALE_AUTH_CONNECT_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_FAST_PACKET_INJECTION_AT_ALE_FLOW_ESTABLISHED_V4)
         pCalloutString = "FAST_PACKET_INJECTION_AT_ALE_FLOW_ESTABLISHED_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_FAST_PACKET_INJECTION_AT_ALE_FLOW_ESTABLISHED_V6)
         pCalloutString = "FAST_PACKET_INJECTION_AT_ALE_FLOW_ESTABLISHED_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_FAST_PACKET_INJECTION_AT_STREAM_PACKET_V4)
         pCalloutString = "FAST_PACKET_INJECTION_AT_STREAM_PACKET_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_FAST_PACKET_INJECTION_AT_STREAM_PACKET_V6)
         pCalloutString = "FAST_PACKET_INJECTION_AT_STREAM_PACKET_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_FAST_PACKET_INJECTION_AT_INBOUND_MAC_FRAME_ETHERNET)
         pCalloutString = "FAST_PACKET_INJECTION_AT_INBOUND_MAC_FRAME_ETHERNET";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_FAST_PACKET_INJECTION_AT_OUTBOUND_MAC_FRAME_ETHERNET)
         pCalloutString = "FAST_PACKET_INJECTION_AT_OUTBOUND_MAC_FRAME_ETHERNET";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_FAST_PACKET_INJECTION_AT_INBOUND_MAC_FRAME_NATIVE)
         pCalloutString = "FAST_PACKET_INJECTION_AT_INBOUND_MAC_FRAME_NATIVE";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_FAST_PACKET_INJECTION_AT_OUTBOUND_MAC_FRAME_NATIVE)
         pCalloutString = "FAST_PACKET_INJECTION_AT_OUTBOUND_MAC_FRAME_NATIVE";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_FAST_PACKET_INJECTION_AT_INGRESS_VSWITCH_ETHERNET)
         pCalloutString = "FAST_PACKET_INJECTION_AT_INGRESS_VSWITCH_ETHERNET";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_FAST_PACKET_INJECTION_AT_EGRESS_VSWITCH_ETHERNET)
         pCalloutString = "FAST_PACKET_INJECTION_AT_EGRESS_VSWITCH_ETHERNET";
   }
   else if(RtlCompareMemory(&WFPSAMPLER_CALLOUT_FAST_STREAM_INJECTION,
                            pCalloutKey,
                            NUM_MASKED_BYTES))
   {
      if(pCalloutKey == &WFPSAMPLER_CALLOUT_FAST_STREAM_INJECTION_AT_STREAM_V4)
         pCalloutString = "FAST_STREAM_INJECTION_AT_STREAM_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_FAST_STREAM_INJECTION_AT_STREAM_V6)
         pCalloutString = "FAST_STREAM_INJECTION_AT_STREAM_V6";
   }
   else if(RtlCompareMemory(&WFPSAMPLER_CALLOUT_PEND_AUTHORIZATION,
                            pCalloutKey,
                            NUM_MASKED_BYTES))
   {
      if(pCalloutKey == &WFPSAMPLER_CALLOUT_PEND_AUTHORIZATION_AT_ALE_RESOURCE_ASSIGNMENT_V4)
         pCalloutString = "PEND_AUTHORIZATION_AT_ALE_RESOURCE_ASSIGNMENT_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_PEND_AUTHORIZATION_AT_ALE_RESOURCE_ASSIGNMENT_V6)
         pCalloutString = "PEND_AUTHORIZATION_AT_ALE_RESOURCE_ASSIGNMENT_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_PEND_AUTHORIZATION_AT_ALE_AUTH_LISTEN_V4)
         pCalloutString = "PEND_AUTHORIZATION_AT_ALE_AUTH_LISTEN_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_PEND_AUTHORIZATION_AT_ALE_AUTH_LISTEN_V6)
         pCalloutString = "PEND_AUTHORIZATION_AT_ALE_AUTH_LISTEN_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_PEND_AUTHORIZATION_AT_ALE_AUTH_RECV_ACCEPT_V4)
         pCalloutString = "PEND_AUTHORIZATION_AT_ALE_AUTH_RECV_ACCEPT_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_PEND_AUTHORIZATION_AT_ALE_AUTH_RECV_ACCEPT_V6)
         pCalloutString = "PEND_AUTHORIZATION_AT_ALE_AUTH_RECV_ACCEPT_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_PEND_AUTHORIZATION_AT_ALE_AUTH_CONNECT_V4)
         pCalloutString = "PEND_AUTHORIZATION_AT_ALE_AUTH_CONNECT_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_PEND_AUTHORIZATION_AT_ALE_AUTH_CONNECT_V6)
         pCalloutString = "PEND_AUTHORIZATION_AT_ALE_AUTH_CONNECT_V6";
   }
   else if(RtlCompareMemory(&WFPSAMPLER_CALLOUT_PROXY_BY_INJECTION,
                            pCalloutKey,
                            NUM_MASKED_BYTES))
   {
      if(pCalloutKey == &WFPSAMPLER_CALLOUT_PROXY_BY_INJECTION_AT_INBOUND_TRANSPORT_V4)
         pCalloutString = "PROXY_BY_INJECTION_AT_INBOUND_TRANSPORT_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_PROXY_BY_INJECTION_AT_INBOUND_TRANSPORT_V6)
         pCalloutString = "PROXY_BY_INJECTION_AT_INBOUND_TRANSPORT_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_PROXY_BY_INJECTION_AT_OUTBOUND_TRANSPORT_V4)
         pCalloutString = "PROXY_BY_INJECTION_AT_OUTBOUND_TRANSPORT_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_PROXY_BY_INJECTION_AT_OUTBOUND_TRANSPORT_V6)
         pCalloutString = "PROXY_BY_INJECTION_AT_INBOUND_TRANSPORT_V6";
   }
   else if(RtlCompareMemory(&WFPSAMPLER_CALLOUT_PROXY_BY_ALE_REDIRECT,
                            pCalloutKey,
                            NUM_MASKED_BYTES))
   {
      if(pCalloutKey == &WFPSAMPLER_CALLOUT_PROXY_BY_ALE_AT_CONNECT_REDIRECT_V4)
         pCalloutString = "PROXY_BY_ALE_AT_CONNECT_REDIRECT_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_PROXY_BY_ALE_AT_CONNECT_REDIRECT_V6)
         pCalloutString = "PROXY_BY_ALE_AT_CONNECT_REDIRECT_V6";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_PROXY_BY_ALE_AT_BIND_REDIRECT_V4)
         pCalloutString = "PROXY_BY_ALE_AT_BIND_REDIRECT_V4";
      else if(pCalloutKey == &WFPSAMPLER_CALLOUT_PROXY_BY_ALE_AT_BIND_REDIRECT_V6)
         pCalloutString = "PROXY_BY_ALE_AT_BIND_REDIRECT_V6";
   }

#if DBG
   
   DbgPrintEx(DPFLTR_IHVNETWORK_ID,
              DPFLTR_INFO_LEVEL,
              " <--- KrnlHlprExposedCalloutToString()\n");

#endif /// DBG
   
   return pCalloutString;
}

Our Services

  • What our customers say about us?

© 2011-2025 All Rights Reserved. Joya Systems. 4425 South Mopac Building II Suite 101 Austin, TX 78735 Tel: 800-DEV-KERNEL

Privacy Policy. Terms of use. Valid XHTML & CSS