什么是WFP?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是WFP?相关的知识,希望对你有一定的参考价值。

我只知道它叫Windows文件保护(Windows File Protection, WFP)
谁有没有知道的详细点的,请帮忙说明白点,谢谢!

WFP是什么

WFP的英文全称是Windows File Protection,即Windows文件保护。它的主要功能是防止系统文件被不匹配的版本替换或是覆盖。众所周知,在安装新应用程序时,由于不经意间采用了过时的dll(动态链接库)文件最容易使系统文件遭到破坏(当然可能出现问题的系统文件并不仅局限于dll文件)。

过去(包括微软件的大多数操作系统)如果用户同意,系统文件是可以被覆盖或者替换。如果替换后的文件过时或者版本不匹配都会对系统的稳定产生不良影响,比如:可能导致某些程序无法运行。现在WFP让这种情况成为了过去,那么WFP是如何工作的呢?

WFP是如何工作的

首先我们试着把由WFP保护的系统文件覆盖一下。据我们所知,那些在初次安装过程中安装的文件被系统默认为重要文件,当然这里面包括一个很广的范围(微软把Windows 2000安装光盘上的所有dll、exe、fon、ocx、sys、和tff结尾的文件都加以保护)。为了能了解WFP究竟保护着哪些文件,我们可以打开dllcache文件夹,你会找到下面这些格式的文件:ax、cpl、cpx、dll、exe、fon、inf、ocx、rsp、sys、tff和tlb文件。所有这些文件(很大一部分都是Windows 2000安装过程中自动定义的)都被备份在%SYSTEMROOT%/system32/dllcache 文件夹下,直到有一天WFP认为有必要把这些文件恢复到系统中去它们就派上用场了。不过,由此也就造成了dllcache这个文件夹非常庞大,在后面我们会告诉你如何设置dllcache所占的最大空间。

当WFP监控到这些文件被覆盖或替换后就要开始自己的工作了。首先它会扫描可能有问题的文件,如果这些文件与备份文件夹内微软“原装”文件不符,WFP会把用SYSTEMROOT%/system32/dllcache目录下备份的文件还原,如果该文件没有做备份,系统会提示你插入Windows 2000的安装光盘以复原该文件。
参考技术A 1、wfp 是Wi-Fi Paradise for DS Wii简称,Wi-Fi游戏规则制定 :统一玩家之间在进行游戏之前所做的事情,使玩家以最高效率进入游戏。
2、从字面上看就是让WIFI游戏能够欢乐的展开的意思。WFP的原理并不复杂,也并不是什么大手笔,大制作的东西,但是在设计上它却是一个十分有趣的东西.大家可以把它理解为方便WIFI玩家聊天的聊天室,QQ游戏大厅,或者更多。

WFP10天修炼 - XAML语言

XAML是什么

  XAML是一种与.NET CLR紧密集成的声明性UI标记语言。XAML中的对象元素对应到CLR中的类型或结构。XAML命名空间对应到CLR中类的命名空间,元素类型则对应到CLR中的类型。XAML是xml的子集,因此严格遵循XML的语法规范。

 

新建一个WPF空项目,下面是默认生成的XAML结构

<Window x:Class="WpfApplication1.MainWindow"

        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

        Title="MainWindow">

    <Grid>
       

    </Grid>

</Window>

 

XAML代码组成:

1、  一个根元素<Window>和</window>标记。在XAML中,必须有且只能有一个根元素

2、  紧接着根元素的XML命名空间的声明。在每个XAML文件中必须要具有两个命名空间

  xmlns=http://schemas.microsoft.com/winfx/2006/xaml/presentation 表示WPF命名空间,也就是XAML元素对应到CLR类的命名空间。

  xmlns:x=http://schemas.microsoft.com/winfx/2006/xaml 表示XAML文件本身的命名空间,语法是xmlns:x,这个是x是命名的前缀可以是任意的字符。如果我们需要导入一些自定义的命名空间,那么我们就需要加上“:+自定义的形式”,这里微软导入了一个自定义的命名空间。

  使用其它命名空间的类型语法:

  xmlns:Prefix="clr-namespace:Namespace;assembly=AssemblyName"

  Prefix:用户指定希望在XAML文档中使用的命名空间的前缀,类似于XAML命名空间使用的x:前缀,可以指定任意的字符串。

  Namespace:是完整的.net命名空间名

  AssemblyName:程序集名称,不用指定.DLL扩展名。这个程序集必须被当前的WPF项目所引用。

3、下面是<Grid>标记,代表XAML文件的UI内容。

  

代码后置文件

         使用项目模板创建一个窗体或页面时,VS会自动生成一个相应XAML文件扩展名在再加上.cs的代码后置文件。XMLA中通过使用x:class 语法关联到一个特定的后置类。

X:Class后置类指定为WpfApplication1.MainWindow,可以打开后置代码文件,看到一个名为WpfApplication1的命名空间,有一个MainWindow的类。X:class告诉XAML解析器,使用指定的名称来产生一个新的类,这个类派生自XAML跟元素类。因此在代码后置文件中可以看到MainWindow类继承自Window类。代码如下:

 namespace WpfApplication1

{

    public partial class MainWindow : Window

    {

        public MainWindow()

        {

            InitializeComponent();

        }

    }

}

 

特定的字符和空白

XAML严格遵循XML语法规范,在XML中,对特定的字符,比如& < > 等需要进行特殊处理,所以在XAML中也需要使用特定的代码来替换这些字符。

小于符号<:&lt;    <Button Content="小于号:&lt;"></Button>

大于符号>:&gl    <Button Content="大于号:&gt;"></Button>

And符合&:&amp;  <Button Content="And符号:&amp;"></Button>

引号””:&quot;     <Button Content="引号:&quot;"></Button>

 

在XAML中使用事件 

XAML代码中事件的声明通常使用事件名=”事件处理方法名”,并且在后置代码中对指定的方法提供声明和实现。

XAML代码

<Window x:Class="WFPDemo.MainWindow"

        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

        xmlns:local="clr-namespace:WFPDemo"

        mc:Ignorable="d"

        Title="MainWindow" Height="350" Width="525">

    <StackPanel >

        <!---定义按钮样式-->

        <StackPanel.Resources>

            <Style TargetType="{x:Type Button}">

                <Setter Property="Height" Value="50"></Setter>

                <Setter Property="Width" Value="200"></Setter>

                <Setter Property="HorizontalAlignment" Value="Left"></Setter>

            </Style>

        </StackPanel.Resources>

        <Button Content="点击我试试" Name="button1" Click="button1_Click"></Button>

</StackPanel>

</Window>

 

后置代码:

private void button1_Click(object sender, RoutedEventArgs e)

 {

  MessageBox.Show("我是单击事件");

}

 

以上是关于什么是WFP?的主要内容,如果未能解决你的问题,请参考以下文章

WFP之WFP简介

在按钮单击时在 Wfp 中使用用户控件

安装程序无法自动安装网络自检wfp驱动程序

WFP ?????????????????????

使用 Dev C++ 开发 WFP

NDIS LWF 驱动程序导致网络堆栈中的 WFP 驱动程序出现问题?