Skip to main content

 none
Windows Hardware Certification kit fails - WFP-based products must create and maintain at least 1 identifying FWPM_PROVIDER object RRS feed

  • Question

  • We have been trying to pass Windows 8/7 certification with our filter driver and we cannot pass WFP-based products must create and maintain at least 1 identifying FWPM_PROVIDER object test. We have verified the strings in the code for fwpm_provider does match string wfplogo.info files.

    code snippet:

    #define NETFILTER_PROVIDER_NAME         L"MyCompany, Inc."
    #define NETFILTER_PROVIDER_DESCRIPTION  L"MyCompany Forensics"

    wfplogo.info snippet:

       CompanyName = "MyCompany, Inc";
       ProductName = "MyCompany Forensics";
       DriverName  = "C:\Windows\System32\Drivers\MyCompanyDrv32.sys";

    Subsequently we are also failing on the WFP usage test, which my or may not be related:

    +VAR+SEV1     0 :  +SUB_VAR+     1 : Validate_WFPUsage
    Validate.WFPUsage - Unexpected usage.  Please contact Microsoft with information about your driver
     Variation:  +SUB_VAR+     1 : Validate_WFPUsage
    Validate.WFPUsage - Unexpected usage.  Please contact Microsoft with information about your driver:FAIL:[[IGN-]Tue Jul 09 13:26:44 2019[-IGN]]
     +TEST+SEV1      : ArchitecturalDesign\Validate.WFPUsage
     End Case:ArchitecturalDesign\Validate.WFPUsage:FAIL:[[IGN-]Tue Jul 09 13:26:44 2019[-IGN]]
     
     ArchitecturalDesign:[FAIL:1]
      Validate.WFPUsage:[FAIL:1]

    Any Ides what could be wrong? We've spent a lot of time here and dug though forums and can't seem to find a solution.

    using:
    Windows Hardware Certification Kit for Windows 8.1 - 8.100.27024

    Failing Platforms:

    Windows 7 - Windows NT 6.3[9600]

    Windows 8 

    Server 2012

    Thanks!



    Friday, July 12, 2019 6:30 PM

All replies

  • We have tried:

    provider.flags = FWPM_PROVIDER_FLAG_PERSISTENT;

    But it doesn't seem to have any effect.

    The same test also tags Microsoft FS filer drivers with the same error message.:

    WFP-based products must create and maintain at least 1 identifying FWPM_PROVIDER provider object

    Friday, July 12, 2019 6:51 PM
  • Hello Mlourenco13,

    From this similar thread, the same error solved by 

    "The provider.displayData.name must equal the string value of the WFPLogo.Info's CompanyName.

    The provider.displayData.description must contain the string value of the WFPLogo.Info's ProductName."

    Your NETFILTER_PROVIDER_NAME and CompanyName are not same. NETFILTER_PROVIDER_NAME has a "." at the end but CompanyName doesn't have. Maybe it is a typo?

    Best regards,

    Rita


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    Monday, July 15, 2019 7:24 AM
  • Thank you Rita,

    Great catch on matching the strings, I was very excited to try this. However after applying the correct string with "." attached. Unfortunately we still failed on WFP Usage.

    +VAR+SEV1     0 :  +SUB_VAR+     1 : Validate_WFPUsage
    Validate.WFPUsage - Unexpected usage.  Please contact Microsoft with information about your driver
     Variation:  +SUB_VAR+     1 : Validate_WFPUsage
    Validate.WFPUsage - Unexpected usage.  Please contact Microsoft with information about your driver:FAIL:[[IGN-]Mon Jul 15 09:55:08 2019[-IGN]]

    thanks for your help

    Tuesday, July 16, 2019 4:33 PM
  • Hello Mlourenco13,

    Do you follow any document or you can show reproduce steps? So I can do a further investigation.

    Best regards,

    Rita


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    Friday, July 19, 2019 7:53 AM
  • For Windows drivers WHQL is one link,the other is OSR/ http://www.osr.com

    OSR does only Windows drivers/software,as most data comes from Microsoft/MSDN & links.Certification tools & kb data is #1 with OSR...

    https://www.osr.com/nt-insider/

    Sunday, July 21, 2019 2:34 AM
  • Hi Rita,

    These are the steps I followed:

    1. Installed our filter driver to be tested on test computers
    2. Followed WFP Drivers Testing Prerequisites
    3. Create a new project and select machine from pool
    4. Select target in this case “Software Devices”
    5. Select all test to run and select “Run Selected”

      here is a copy of the .info file we are using:

      #######################################
      #                                     #
      #        Provider Information         #
      #                                     #
      #######################################
      
         CompanyName = "MyCompany, Inc.";
         ProductName = "MyProductName";
         DriverName  = "C:\Windows\System32\Drivers\MyCompanyDrv32.sys";
      
      #######################################
      #                                     #
      #        Enable Driver Verifier       #
      #                                     #
      #       0 to not attach verifier      #
      #       1 to attach verifier          #
      #                                     #
      #######################################
      
         EnableDriverVerifier = 1;
      
      #######################################
      #                                     #
      #  Use the answer file to script the  #
      # addition and removal of the filters #
      #                                     #
      #   Use only if the answer file has   #
      #    been modified for your needs.    #
      #                                     #
      #        0 if not implemented         #
      #        1 if implemented             #
      #                                     #
      #######################################
      
         UseAnswerFile = 1;
      
      #######################################
      #                                     #
      #       Requirement Information       #
      #                                     #
      #        0 if not implemented         #
      #        1 if implemented             #
      #                                     #
      #######################################
      
         CalloutDriver = 1;
      
         IsAFirewall = 0;
      
         LayeredOnMicrosoftWindowsFirewall = 0;
      
         DoesMACFiltering = 0;
      
         DoesVSwitchFiltering = 0;
      
         DoesPacketInjection = 0;
      
         DoesStreamInjection = 0;
      
         DoesConnectionProxying = 0;
      
      #######################################
      #                                     #
      #            Attestations             #
      #                                     #
      #             0 if FALSE              #
      #             1 if TRUE               #
      #                                     #
      #######################################
      
      # NETWORK-0XXX Filter.Driver.WindowsFilteringPlatform.ArchitecturalDesign.AppContainers.SupportModernApplications
      #    WFP-based products must not block App Container apps operating within their declared network intentions by default, and should only do so when following specific user/admin intention or protecting the system against a specific threat.
      
         SupportModernApplications = 1;
      
      # NETWORK-0270 Filter.Driver.WindowsFilteringPlatform.ArchitecturalDesign.CleanUninstall
      #    WFP-based products stop cleanly and clean up all running state upon uninstall.
      
         CleanUninstall = 1;
      
      # NETWORK-0XXX Filter.Driver.WindowsFilteringPlatform.ArchitecturalDesign.ConnectionProxying.NoDeadlocks
      #    WFP-based products which redirect or proxy at redirect layers (connect redirect), must use the new proxying API so that other WFP-based products can determine that the connection has been proxied.
      
         NoProxyDeadlocks = 1;
      
      # NETWORK-0262 Filter.Driver.WindowsFilteringPlatform.ArchitecturalDesign.FwpmProviders.MaintainIdentifying
      #    WFP-based products must create and maintain at least 1 identifying FWPM_PROVIDER provider object.
      
         IdentifyingProvider = 1;
      
      # NETWORK-0265 Filter.Driver.WindowsFilteringPlatform.ArchitecturalDesign.FwpmProviders.AssociateWithObjects
      #    WFP-based products must associate all of their Provider Contexts, Filters, Sublayers, and Callouts with their corresponding identifying provider object.
      
         AssociateProvider = 1;
      
      # NETWORK-0263 Filter.Driver.WindowsFilteringPlatform.ArchitecturalDesign.FwpmFilters.MaintainOneTerminating
      #    WFP-based products must create and maintain at least 1 terminating FWPM_FILTER object.
      
         TerminatingFilter = 0;
      
      # NETWORK-0264 Filter.Driver.WindowsFilteringPlatform.ArchitecturalDesign.FwpmSublayers.UseOwnOrBuiltIn
      #    WFP-based products must use only their own sublayer or one of the built-in sublayers
      
         UseOwnSubLayer = 1;
      
      # NETWORK-0288 Filter.Driver.WindowsFilteringPlatform.ArchitecturalDesign.NetworkDiagnosticsFramework.HelperClass
      #    WFP-based products must include a Network Diagnostics Framework (NDF) helper class that extends the Filtering Platform helper class (FPHC)
      
         MaintainHelperClass = 1;
      
      # NETWORK-0269 Filter.Driver.WindowsFilteringPlatform.ArchitecturalDesign.NoAccessViolations
      #    WFP-based products must not be the resulting cause of any Access Violation under high load or during driver load/unload.
      
         NoAVs = 1;
      
      # NETWORK-0261 Filter.Driver.WindowsFilteringPlatform.ArchitecturalDesign.NoTamperingWith3rdPartyObjects
      #    WFP-based products must not attempt to remove or alter another WFP-based product’s WFP objects and built-in objects.
      
         NonTampered3rdPartyObjects = 1;
      
      # NETWORK-0287 Filter.Driver.WindowsFilteringPlatform.ArchitecturalDesign.PacketInjection.NoDeadlocks
      #    WFP-based products must not continually modify network packets that have already been modified and re-injected, so as to create potential deadlocks.
      
         NoPacketInjectionDeadlocks = 1;
      
      # NETWORK-0267 Filter.Driver.WindowsFilteringPlatform.ArchitecturalDesign.StreamInjection.NoStreamStarvation
      #    WFP-based product callouts at FWPM_LAYER_STREAM must not starve the data throughput.
      
         NoStreamStarvation = 1;
      
      # NETWORK-0268 Filter.Driver.WindowsFilteringPlatform.ArchitecturalDesign.SupportPowerManagedStates
      #    WFP-based products must ensure network connectivity upon recovering from power managed states.
      
         SupportPowerManagement = 1;
      
      # NETWORK-0260 Filter.Driver.WindowsFilteringPlatform.ArchitecturalDesign.WFPObjectACLs
      #    WFP-based products must ACL all of their objects in a way that any other WFP-based product can at least enumerate those objects using the corresponding WFP enumeration APIs.
      
         WFPObjectEnumAndACLs = 1;
      
      # NETWORK-0XXX Filter.Driver.WindowsFilteringPlatform.ArchitecturalDesign.WinSock
      #    Kernel Mode Filter Drivers are architected to maximize the reliability and functionality of Windows Sockets, as well as interact accurately with the core components of the operating system.
      
         MaxWinSock = 1;
      
      # NETWORK-0271 Filter.Driver.WindowsFilteringPlatform.Firewall.DisableWindowsFirewallProperly
      #    Host firewalls must disable Windows Firewall using only the supported method.
      
         ProperlyDisableWindowsFirewall = 1;
      
      # NETWORK-0266 Filter.Driver.WindowsFilteringPlatform.Firewall.NotOnlyPermitAllFilters
      #    Host firewalls must not have only “permit_all” filters.
      
         NoPermitBlockAll = 1;
      
      # NETWORK-0XXX Filter.Driver.WindowsFilteringPlatform.Firewall.Support5TupleExceptions
      #    All host based firewalls must be able to Block/Allow by 5-Tuple Parts (including Port (ICMP Type and Code, UDP and TCP) IP Address, Protocol (e.g. UDP/TCP/ICMP)
      
         SupportTupleExceptions = 1;
      
      # NETWORK-0253 Filter.Driver.WindowsFilteringPlatform.Firewall.SupportApplicationExceptions
      #    WFP-based products must support exceptions from corresponding applications.
      
         SupportAppExceptions = 1;
      
      # NETWORK-0XXX Filter.Driver.WindowsFilteringPlatform.Firewall.SupportMACAddressExceptions
      #    All host based firewalls which have filters in L2 (Native/Mac) layers must be able to Block or Allow by Mac Address.
      
         SupportMACAddressExceptions = 1;
      
      # NETWORK-0259 Filter.Driver.WindowsFilteringPlatform.Firewall.UseWindowsFilteringPlatform
      #    Firewalls must comply with Windows Filtering Platform based APIs for filtering network traffic on home user solutions.
      
         UseWFP = 1;
      
      # NETWORK-0247 Filter.Driver.WindowsFilteringPlatform.NetworkingFundamentals.SupportARP
      #    WFP-based products must support support allowing for successful ARP exchanges.
      
         SupportARP = 1;
      
         SupportNeighborDiscovery = 1;
      
      # NETWORK-0245 Filter.Driver.WindowsFilteringPlatform.NetworkingFundamentals.SupportDynamicAddressing
      #    WFP-based products support allowing for successful DHCP exchanges over both IPv4 and IPv6.
      
         SupportDHCP = 1;
      
      # NETWORK-0243 Filter.Driver.WindowsFilteringPlatform.NetworkingFundamentals.SupportIPv4
      #    WFP-based products must support IPv4 traffic.
      
         SupportIPv4 = 1;
      
      # NETWORK-0244 Filter.Driver.WindowsFilteringPlatform.NetworkingFundamentals.SupportIPv6
      #    WFP-based products must support IPv6 traffic.
      
         SupportIPv6 = 1;
      
      # NETWORK-0246 Filter.Driver.WindowsFilteringPlatform.NetworkingFundamentals.SupportNameResolution
      #    WFP-based products must support allowing for successful DNS client queries.
      
         SupportDNS = 1;
      
      # NETWORK-0249 Filter.Driver.WindowsFilteringPlatform.Scenarios.Support6To4
      #    WFP-based products must support 6to4.
      
         Support6To4 = 1;
      
      # NETWORK-0257 Filter.Driver.WindowsFilteringPlatform.Scenarios.SupportAutomaticUpdates
      #    WFP-based products must support Automatic Updates in Windows.
      
         SupportAutomaticUpdates = 1;
      
      # NETWORK-0251 Filter.Driver.WindowsFilteringPlatform.Scenarios.SupportBasicWebsiteBrowsing
      #    WFP-based products must support basic internet browsing experiences.
      
         SupportBasicWebsiteBrowsing = 1;
      
      # NETWORK-0252 Filter.Driver.WindowsFilteringPlatform.Scenarios.SupportFileAndPrinterSharing
      #    WFP-based products must support file and printer sharing.
      
         SupportFileAndPrinterSharing = 1;
      
      # NETWORK-0250 Filter.Driver.WindowsFilteringPlatform.Scenarios.SupportICMPErrorMesages
      #    WFP-based products must support ICMP error messages and discovery functions.
      
         SupportICMPErrorMesages = 1;
      
      # NETWORK-0256 Filter.Driver.WindowsFilteringPlatform.Scenarios.SupportInternetStreaming
      #    WFP-based products must support Internet streaming and Media sharing for media player network sharing services.
      
         SupportInternetStreaming = 1;
      
      # NETWORK-0285 Filter.Driver.WindowsFilteringPlatform.Scenarios.SupportMediaExtenderStreaming
      #    WFP_based products must support media streaming scenarios based on extender technologies.
      
         SupportMediaExtenderStreaming = 1;
      
      # NETWORK-0XXX Filter.Driver.WindowsFilteringPlatform.Scenarios.SupportMobileBroadBand
      #    WFP-based products must allow mobile broadband devices that are compliant with Windows mobile broadband driver model to function correctly.
      
         SupportMobileBroadBand = 1;
      
      # NETWORK-0284 Filter.Driver.WindowsFilteringPlatform.Scenarios.SupportPeerNameResolution
      #    WFP-based products must support Peer Name Resolution Protocol and the Peer-to-Peer Grouping Protocol.
      
         SupportPeerNameResolution = 1;
      
      # NETWORK-255 Filter.Driver.WindowsFilteringPlatform.Scenarios.SupportRemoteAssistance
      #    WFP-based products must support Remote Assistance scenarios.
      
         SupportRemoteAssistance = 1;
      
      # NETWORK-0254 Filter.Driver.WindowsFilteringPlatform.Scenarios.SupportRemoteDesktop
      #    WFP-based products must support Remote Desktop.
      
         SupportRemoteDesktop = 1;
      
      # NETWORK-0248 Filter.Driver.WindowsFilteringPlatform.Scenarios.SupportTeredo
      #    WFP-based products must support Teredo.
      
         SupportTeredo = 0;
      
      # NETWORK-0258 Filter.Driver.WindowsFilteringPlatform.Scenarios.SupportVirtualPrivateNetworking
      #    WFP-based products must support VPN scenarios in Windows.
      
         SupportVirtualPrivateNetworking = 1;
      
      # NETWORK-0XXX Filter.Driver.WindowsFilteringPlatform.Scenarios.vSwitch.InteropWithOtherExtensions
      #    WFP-based products must not block traffic from another vSwitch extension (WFP or LWF) by default, and should only do so when following specific user/admin intention or protecting the system against a specific threat.
      
         InteropWithOtherExtensions = 1;
      
      # NETWORK-0XXX Filter.Driver.WindowsFilteringPlatform.Scenarios.vSwitch.NoEgressModification
      #    WFP-based products that operate in the vSwitch must not modify packets on the Egress path of the vSwitch.
      
         NoEgressModification = 1;
      
      # NETWORK-0XXX Filter.Driver.WindowsFilteringPlatform.Scenarios.vSwitch.SupportLiveMigration
      #    WFP-based products that operate in the vSwitch must present a minimal MOF for Live Migration.
      
         SupportLiveMigration = 1;
      
      # NETWORK-0XXX Filter.Driver.WindowsFilteringPlatform.Scenarios.vSwitch.SupportRemoval
      #    WFP-based products that operate in the vSwitch must present be allowed to be removed when the admin disabled WFP for the vSwitch instance.
      
         SupportRemoval = 1;
      
      # NETWORK-0XXX Filter.Driver.WindowsFilteringPlatform.Scenarios.vSwitch.SupportReordering
      #    WFP-based products that operate in the vSwitch must respond to WFP vmSwitch reorder events.
      
         SupportReordering = 1;
      
      #Attestation
      #   I have performed interop testing with my product and the WFPSampler in various supported scenarios
      
         InteropWithWFPSampler = 1;
      
      # Attestation
      #    I hereby confirm that the information included within is accurate to the best of my knowledge in regards to the Product mentioned.
      
         RunBy = "Michael Lourenco";
      


    Wednesday, July 24, 2019 5:53 PM
  • Hello Mlourenco13,

    Your basic settings seems correct. Please follow the basic troubleshooting steps in Troubleshooting Windows HCK Test Failures. If the issue is still exist, you can contact Windows HCK Support with information about your driver.

    Best regards,

    Rita


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    Thursday, July 25, 2019 8:24 AM