Sample Code
Windows Driver Samples/ Windows Filtering Platform Sample/ C++/ exe/ Scenarios_BasicPacketExamination.cpp/
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 | //////////////////////////////////////////////////////////////////////////////////////////////////// // // Copyright (c) 2012 Microsoft Corporation. All Rights Reserved. // // Module Name: // Scenarios_BasicPacketExamination.cpp // // Abstract: // This module contains functions which prepares and sends data for the // BASIC_PACKET_EXAMINATION scenario implementation. // // Naming Convention: // // <Scope><Object><Action><Modifier> // // i.e. // // <Scope> // { // - Function is likely visible to other modules. // } // <Object> // { // BasicPacketExaminationScenario - Function pertains to the Basic Packet Examination. // } // <Action> // { // Execute - Function packages data and invokes RPC to the // WFPSampler service. // Log - Function writes to the console. // } // <Modifier> // { // Help - Function provides context sensitive help for the // scenario. // } // // Private Functions: // // Public Functions: // BasicPacketExaminationScenarioExecute(), // BasicPacketExaminationScenarioLogHelp(), // // Author: // Dusty Harper (DHarper) // // Revision History: // // [ Month ][Day] [Year] - [Revision]-[ Comments ] // May 01, 2010 - 1.0 - Creation // //////////////////////////////////////////////////////////////////////////////////////////////////// #include "Framework_WFPSampler.h" /// . /** @scenario_function="BasicPacketExaminationScenarioExecute" Purpose: Gather and package data neccessary to setup the BASIC_PACKET_EXAMINATION scenario, then invoke RPC to implement the scenario in the WFPSampler service. <br> <br> Notes: <br> <br> MSDN_Ref: <br> */ _Success_( return == NO_ERROR) UINT32 BasicPacketExaminationScenarioExecute(_In_reads_(stringCount) PCWSTR * ppCLPStrings, _In_ UINT32 stringCount) { ASSERT(ppCLPStrings); ASSERT(stringCount); UINT32 status = NO_ERROR; BOOLEAN removeScenario = FALSE; FWPM_FILTER* pFilter = 0; status = HlprFwpmFilterCreate(&pFilter); HLPR_BAIL_ON_FAILURE(status); pFilter->displayData.name = L "WFPSampler's Basic Packet Examination Filter" ; HlprCommandLineParseForScenarioRemoval(ppCLPStrings, stringCount, &removeScenario); status = HlprCommandLineParseForFilterInfo(ppCLPStrings, stringCount, pFilter, removeScenario); HLPR_BAIL_ON_FAILURE(status); status = RPCInvokeScenarioBasicPacketExamination(wfpSamplerBindingHandle, SCENARIO_BASIC_PACKET_EXAMINATION, removeScenario ? FWPM_CHANGE_DELETE : FWPM_CHANGE_ADD, pFilter); if (status != NO_ERROR) HlprLogError(L "BasicPacketExaminationScenarioExecute : RpcInvokeScenarioBasicPacketExamination() [status: %#x]" , status); else HlprLogInfo(L "BasicPacketExaminationScenarioExecute : RpcInvokeScenarioBasicPacketExamination() [status: %#x]" , status); HLPR_BAIL_LABEL: if (pFilter) HlprFwpmFilterDestroy(&pFilter); return status; } /** @public_function="BasicPacketExaminationScenarioLogHelp" Purpose: Log usage information for the BASIC_PACKET_EXAMINATION scenario to the console. <br> <br> Notes: <br> <br> MSDN_Ref: <br> */ VOID BasicPacketExaminationScenarioLogHelp() { wprintf(L "\n\t\t -s \t BASIC_PACKET_EXAMINATION" ); wprintf(L "\n\t\t -? \t Receive usage information." ); wprintf(L "\n\t\t -l \t Specify the layer to perform the filtering. [Required]" ); wprintf(L "\n\t\t -r \t Remove the scenario objects." ); wprintf(L "\n\t\t -v \t Make the filter volatile (non-persistent). [Optional]" ); wprintf(L "\n\t\t -b \t Makes the objects available during boot time. [Optional]" ); wprintf(L "\n\t\t -ipla \t Specify the IP_LOCAL_ADDRESS /" ); wprintf(L "\n\t\t \t IP_SOURCE_ADDRESS to filter. [Optional]" ); wprintf(L "\n\t\t -ipra \t Specify the IP_REMOTE_ADDRESS /" ); wprintf(L "\n\t\t \t IP_DESTINATION_ADDRESS to filter. [Optional]" ); wprintf(L "\n\t\t -ipp \t Specify the IP_PROTOCOL to filter. [Optional]" ); wprintf(L "\n\t\t -iplp \t Specify the IP_LOCAL_PORT to filter. [Optional]" ); wprintf(L "\n\t\t -icmpt \t Specify the ICMP_TYPE to filter. [Optional]" ); wprintf(L "\n\t\t -iprp \t Specify the IP_REMOTE_PORT to filter. [Optional]" ); wprintf(L "\n\t\t -icmpc \t Specify the ICMP_CODE to filter. [Optional]" ); wprintf(L "\n" ); wprintf(L "\n\t i.e." ); wprintf(L "\n\t\t WFPSampler.Exe -s BASIC_PACKET_EXAMINATION -l FWPM_LAYER_INBOUND_TRANSPORT_V4 -ipla 1.0.0.1 -ipra 1.0.0.254 -ipp TCP -v" ); wprintf(L "\n\t\t WFPSampler.Exe -s BASIC_PACKET_EXAMINATION -l FWPM_LAYER_INBOUND_TRANSPORT_V4 -ipla 1.0.0.1 -ipra 1.0.0.254 -ipp TCP -v -r" ); wprintf(L "\n" ); return ; } |
Our Services
-
What our customers say about us?
Read our customer testimonials to find out why our clients keep returning for their projects.
View Testimonials