注:前言、目录见 https://blog.csdn.net/qq_44220418/article/details/108428971

文章目录

  • 一、XML进阶
    • 1、实体
    • 2、处理指令
    • 3、CDATA区段
    • 4、注释
    • 5、检验语法错误
    • 6、名称空间
  • 二、XML Schema
    • 1、XML Schema文档
    • 2、格式
    • 3、XML引入XML Schema
    • 4、数据类型
      • (1).分类
      • (2).常用内置基本数据类型
      • (3).自定义简单数据类型
        • [1].restriction
        • [2].list
        • [3].union
    • 5、元素
      • (1).简单元素
        • [1].介绍
        • [2].定义
        • [3].示例
      • (2).复杂元素
        • [1].介绍
        • [2].定义
        • [3].元素顺序
        • [4].属性
        • [5].属性组
        • [6].元素组
    • 6、Schema复用

一、XML进阶

1、实体

实体即为表示一组特定含义的字符串,可以理解为转义字符

像是<>'"&等XML的保留字,在作为文档数据时,就需要进行转义

在XML文档中,有5个预定义的实体引用:

字符 转义字符
< &lt;
> &gt;
& &amp;
' &apos;
" &quot;

2、处理指令

处理指令是允许XML文档包含用于应用程序的指令,简称PI,其格式如下:

<?指令名 属性=属性值?>

XML声明就是处理指令,它的作用是对XML文档进行标识

3、CDATA区段

所有XML文档中的文本均会被解析器解析,所以元素内容出现了保留字需要转义预定义实体引用

但是如果文本很多,比如一段代码块,难免会出现很多需要转义的字符,如果逐个转义,不仅费力,而且费解,因此我们可以采用CDATA区段

只有CDATA区段中的文本会被解析器忽略,其格式如下:

<![CDATA[不希望被解析的内容]]>

例如:

<?xml version="1.0"?>
<function><![CDATA[insert(int x[10], pos, value) {if (pos < 0 || pos > 10)printf("Error!");else {for (int i = 10; i >= pos; i--)x[i] = x[i-1];x[pos] = value;}}]]>
</function>

4、注释

XML文档的注释格式如下:

<!-- 注释内容 -->
XML文档的注释要注意以下规则:
① 注释不能出现在XML文档的第一行
② 注释可以出现在元素标记(<>)以外的任何地方
③ 注释不能嵌套注释

5、检验语法错误

可以用浏览器打开XML文档,如果存在错误则会报错,并指示错误处和错误类型

6、名称空间

有些时候标记会出现同名不同义的情况,极易造成含义混乱,比如TV的size和衬衫的size就不是一回事

为了体现前缀的唯一性,名称空间利用现在因特网上没有二义性的域名,规定前缀和某个URI连接在一起

名称空间允许XML文档中的每个元素和属性放在特定URI的不同名称空间中,例如:

<URI:size></URI:size>

名称空间中的URI只是一个逻辑概念,实际上不一定存在

为了具有唯一性,这个自定义的逻辑URI可以加一些自己的公司名称、环境,但是必须合法


名称空间声明主要包括两种形式{有前缀的名称空间没有前缀的名称空间\begin{cases} 有前缀的名称空间 \\ 没有前缀的名称空间 \end{cases}{有前缀的名称空间没有前缀的名称空间​

有前缀的名称空间:
在XML文档中可以在XML元素的开始标记中、使用名称空间声明来声明命名空间,需要用到xmlns关键字

<?xml version="1.0"?>
<test xmlns:tv="http://www.njtech.edu.cn/goods/trousers"><my><tv:your></tv:your><its></its></my>
</test>

可以在根元素、父元素、当前元素中进行名称空间声明

没有前缀的名称空间:
可以为一个XML文档声明一个默认名称空间,而无需为其指定前缀,所有没有前缀的元素默认属于此名称空间

<?xml version="1.0"?>
<person xmlns="https://myst/js001"><name></name>
</person>

二、XML Schema

1、XML Schema文档

XML Schema的作用和DTD一样,都是用于定义XML文档结构,并用于验证XML文档

2、格式

Schema文档本身也是XML文档,因此以XML声明开始

Schema文档需以xs:schema为根元素,标志模式定义的开始

Schema文档的元素都在https://www.w3.org/2001/XMLSchema名称空间中,因此必须在根元素上声明这个名称空间(通常是xsxsd

示例:

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://mynamespace/my"><xs:element name="root" type="xs:string"/>
</xs:schema>
  • targetNamespace属性声明本Schema文档定义的元素和数据类型属于哪一个名称空间(声明名称空间,需和XML文档中的目标名称空间一致)
  • xs:element元素声明一个在XML文档中使用的元素
    ▶ 属性name指定元素的名字
    ▶ 属性type指定元素的类型(元素内容的类型)

3、XML引入XML Schema

当XML引入XML Schema时,根据XML文档的元素是否属于某个特定的名称空间,可以按照以下两种方式引入:

不属于某个特定名称空间的——xsi:noNamespaceSchemaLocation
示例:
<root
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="XML Schema">
</root>
属性xsi:noNamespaceSchemaLocation为一个Schema文件的URI
属于某个特定名称空间的——xsi:schemaLocation
示例:
<root
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="[名称空间URI Schema文件路径]">
</root>
属性xsi:schemaLocation可同时引入多个Schema文件
每一个Schema文件的引入都需要一个名称空间URI和Schema文件路径,URI和Schema文件路径间用空格隔开

4、数据类型

(1).分类

Schema数据类型{简单类型{内置的数据类型{基本数据类型扩展数据类型用户自定义的数据类型复杂类型\begin{cases} 简单类型 \begin{cases} 内置的数据类型 \begin{cases} 基本数据类型 \\ 扩展数据类型 \end{cases} \\ 用户自定义的数据类型 \end{cases} \\ 复杂类型 \end{cases}⎩⎪⎪⎪⎨⎪⎪⎪⎧​简单类型⎩⎪⎨⎪⎧​内置的数据类型{基本数据类型扩展数据类型​用户自定义的数据类型​复杂类型​

如下图所示:

(2).常用内置基本数据类型

常用内置基本数据类型{字符串及相关类型{string表示字符串,原封不动保留所有空格QName表示一个包含XML命名空间在内的名称数值类型{decimal表示特定精度的数字float表示单精度32位浮点数,支持科学计数法double表示双精度64位浮点数,支持科学计数法hexBinary表示16进制数布尔类型——boolean:只支持true、false、0、1AnyUri类型——anyUri:表示一个URI用来定位文件时间类型{duration表示持续时间PnYnMnDTnHnMnS(P为起始定界符,T为分隔符)datetime表示特定的时间YYYY-MM-DDThh:mm:sstime表示特定的时间hh:mm:ss日期类型{date表示日期YYYY-MM-DD格式的时间gDay表示日期DD格式的时间gMonth表示日期MM格式的时间gMonthDay表示日期MM-DD格式的时间gYear表示日期YYYY格式的时间gYearMonth表示日期YYYY-MM格式的时间二进制数据类型{base64Binary表示任意base64编码的二进制数hexBinary表示任意16进制编码的二进制数Notation类型——NOTATION:表示XML中的NOTATION类型……\begin{cases} 字符串及相关类型 \begin{cases} \text{string} & 表示字符串,原封不动保留所有空格 \\ \text{QName} & 表示一个包含\text{XML}命名空间在内的名称 \end{cases} \\ \\ 数值类型 \begin{cases} \text{decimal} & 表示特定精度的数字 \\ \text{float} & 表示单精度32位浮点数,支持科学计数法 \\ \text{double} & 表示双精度64位浮点数,支持科学计数法 \\ \text{hexBinary} & 表示16进制数 \end{cases} \\ \\ 布尔类型——\text{boolean}:只支持\text{true、false}、0、1 \\ \\ \text{AnyUri}类型——\text{anyUri}:表示一个\text{URI}用来定位文件 \\ \\ 时间类型 \begin{cases} \text{duration} & 表示持续时间\text{PnYnMnDTnHnMnS(P为起始定界符,T为分隔符)} \\ \text{datetime} & 表示特定的时间\text{YYYY-MM-DDThh:mm:ss} \\ \text{time} & 表示特定的时间\text{hh:mm:ss} \end{cases} \\ \\ 日期类型 \begin{cases} \text{date} & 表示日期\text{YYYY-MM-DD}格式的时间 \\ \text{gDay} & 表示日期\text{DD}格式的时间 \\ \text{gMonth} & 表示日期\text{MM}格式的时间 \\ \text{gMonthDay} & 表示日期\text{MM-DD}格式的时间 \\ \text{gYear} & 表示日期\text{YYYY}格式的时间 \\ \text{gYearMonth} & 表示日期\text{YYYY-MM}格式的时间 \end{cases} \\ \\ 二进制数据类型 \begin{cases} \text{base64Binary} & 表示任意\text{base64}编码的二进制数 \\ \text{hexBinary} & 表示任意16进制编码的二进制数 \end{cases} \\ \\ \text{Notation}类型——\text{NOTATION}:表示\text{XML}中的\text{NOTATION}类型 \\ \\ …… \\ \end{cases}⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧​字符串及相关类型{stringQName​表示字符串,原封不动保留所有空格表示一个包含XML命名空间在内的名称​数值类型⎩⎪⎪⎪⎨⎪⎪⎪⎧​decimalfloatdoublehexBinary​表示特定精度的数字表示单精度32位浮点数,支持科学计数法表示双精度64位浮点数,支持科学计数法表示16进制数​布尔类型——boolean:只支持true、false、0、1AnyUri类型——anyUri:表示一个URI用来定位文件时间类型⎩⎪⎨⎪⎧​durationdatetimetime​表示持续时间PnYnMnDTnHnMnS(P为起始定界符,T为分隔符)表示特定的时间YYYY-MM-DDThh:mm:ss表示特定的时间hh:mm:ss​日期类型⎩⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎧​dategDaygMonthgMonthDaygYeargYearMonth​表示日期YYYY-MM-DD格式的时间表示日期DD格式的时间表示日期MM格式的时间表示日期MM-DD格式的时间表示日期YYYY格式的时间表示日期YYYY-MM格式的时间​二进制数据类型{base64BinaryhexBinary​表示任意base64编码的二进制数表示任意16进制编码的二进制数​Notation类型——NOTATION:表示XML中的NOTATION类型……​

内置数据类型树状图如下图所示:

(3).自定义简单数据类型

在XML Schema文档中,可以用simpleType元素定义一个简单数据类型

新定义的简单数据类型一般派生于已有的简单数据类型,可在simpleType元素中添加如下子元素派生:

  • restriction:限定一个范围、约束
  • list:从列表中选择(空格作为分隔符)
  • union:包含值的集合

[1].restriction

xs:restriction元素下,可以使用以下元素进行约束,从而派生出一个带有多种约束的新数据类型:

  • <xs:minInclusive value="最小值" />指定临界最小值(包括边界)
  • <xs:maxInclusive value="最大值" />指定临界最大值(包括边界)
  • <xs:minExclusive value="最小值" />指定临界最小值(不包括边界)
  • <xs:minExclusive value="最大值" />指定临界最大值(不包括边界)
  • <xs:fractionDigits value="小数位数">定义数的小数部分位数
  • <xs:totalDigits value="总位数">定义数的总位数
  • <xs:enumeration value="枚举值">定义取值集合中的一个值
  • <xs:pattern value="正则表达式">指定字符串模式

示例:定义水的温度,最高小于100.00℃,最低大于0.00℃,小数位为2,数据类型WaterTemp

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"><xs:element name="temperature" type="WaterTemp" /><xs:simpleType name="WaterTemp"><xs:restriction base="xs:decimal"><xs:fractionDigits value="2" /><xs:minExclusive value="0.00" /><xs:maxExclusive value="100.00" /></xs:restriction></xs:simpleType>
</xs:schema>

Tips:需要在<xs:restriction>中用属性base声明所约束的数据类型

[2].list

xs:list元素下,用itemType属性指定列表元素类型,从而派生出一个指定元素类型的列表数据类型

在XML文档中引入时,需要元素内容需要以空格分隔

示例:定义一个string类型的列表

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"><xs:element name="stringvalues" type="valuelist" /><xs:simpleType name="valuelist"><xs:list itemType="xs:string" /></xs:simpleType>
</xs:schema>

[3].union

xs:union元素下定义多个xs:simpleType的集合

示例:定义一个包含其它两个定义为枚举类型的简单元素集合

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"><xs:attribute name="allframesize"><xs:simpleType><xs:union><xs:simpleType><xs:restriction base="roadbikesize"/></xs:simpleType><xs:simpleType><xs:restriction base="mountainbikesize"/></xs:simpleType></xs:union></xs:simpleType></xs:attribute><xs:simpleType name="roadbikesize"><xs:restriction base="xs:positiveInteger"><xs:enumeration value="46"/><xs:enumeration value="52"/><xs:enumeration value="55"/></xs:restriction></xs:simpleType><xs:simpleType name="mountainbikesize"><xs:restriction base="xs:string"><xs:enumeration value="small"/><xs:enumeration value="medium"/><xs:enumeration value="large"/></xs:restriction></xs:simpleType>
</xs:schema>

5、元素

在XML Schema中定义好了相关的元素后,可以在XML文档中引入使用相关的元素

(1).简单元素

[1].介绍

简单元素只能包含字符数据,不能包含子元素、属性

示例:

<xs:element name="元素名称"
type="简单元素类型"
minOccurs="nonNegativeInteger"
maxOccurs="nonNegativeInteger|unbounded" />

其中

  • 属性minOccursmaxOccurs分别指示元素出现的最小次数、最大次数
  • 属性值nonNegativeInteger代表任意非负整数的集合
  • 属性值unbounded代表元素出现次数不受限制

Tips:可以用xs:simpleType元素下的xs:restriction元素对简单元素加以限制

[2].定义

XML Schema中元素定义如下:

<xs:element name="elementName" type="elementType"/>

其中

  • 属性nametype为必填属性,分别指示元素名和元素类型
  • 属性fixeddefault为可选属性,分别指示元素固定值和默认值

[3].示例

<!-- 水的沸点固定为100℃ -->
<xs:element name="Boil_temperature" type="xs:integer" fixed="100" /><!-- 图书数量默认为0 -->
<xs:element name="BookNumber" type="xs:integer" default="0" />

(2).复杂元素

[1].介绍

复杂元素该元素具有属性和子元素,其数据类型为复杂数据类型

[2].定义

<xs:complexType name="自定义类型名称">定义子元素,定义属性
</xs:complexType>

[3].元素顺序

可以用以下标签来定义元素的顺序:

  • xs:all:子元素可以以任意顺序书写
  • xs:sequence:{子元素必须以指定顺序书写每个子元素可以出现0次或任意次\begin{cases} 子元素必须以\textbf{指定顺序}书写 \\ 每个子元素可以出现0次或任意次 \end{cases}{子元素必须以指定顺序书写每个子元素可以出现0次或任意次​
  • xs:choice:仅可包含一个声明的子元素

示例:

<!-- 任意顺序示例 -->
<xs:element name="BookInfo"><xs:complexType><xs:all><xs:element name="AuthorAge" type="xsd:positiveInteger" /><xs:element name="AuthorName" type="xsd:string" /></xs:all></xs:complexType>
</xs:element><!-- 选择顺序示例 -->
<xs:element name="Tel"><xs:complexType><xs:choice><xs:element name="Office" type="xsd:string" /><xs:element name="Mobile" type="xsd:string" /></xs:choice></xs:complexType>
</xsd:element>

[4].属性

定义属性的格式如下:

<xs:attribute name="attribute_name" | ref="attribute_name"
type="data_type_name"
use="value" />

其中

  • XML Schema中,可能存在两个不同元素具有相同的属性,因而一个xs:attribute元素name所声明的属性,可在另一个xs:attribute中通过ref进行引用
  • use选项取值{optional默认值,定义的属性可以出现在XML文档中,也可以不出现在XML文档中required定义的属性必须出现在XML文档中prohibited定义的属性不能出现在XML文档中\begin{cases} \text{optional} & 默认值,定义的属性可以出现在\text{XML}文档中,也可以不出现在\text{XML}文档中 \\ \text{required} & 定义的属性必须出现在\text{XML}文档中 \\ \text{prohibited} & 定义的属性不能出现在\text{XML}文档中 \end{cases}⎩⎪⎨⎪⎧​optionalrequiredprohibited​默认值,定义的属性可以出现在XML文档中,也可以不出现在XML文档中定义的属性必须出现在XML文档中定义的属性不能出现在XML文档中​
  • 其他属性{default:该属性具有默认值——若XML文档的元素没有这个属性,则自动插入该属性并设置默认值fixed:该属性具有固定值——{若验证器发现该属性,则验证其属性值和固定值是否相同,若不相同则报错若验证器没有发现该属性,则自动插入该属性并设置固定值\begin{cases} \text{default}:该属性具有默认值——若\text{XML}文档的元素没有这个属性,则自动插入该属性并设置默认值 \\ \\ \text{fixed}:该属性具有固定值—— \begin{cases} 若验证器发现该属性,则验证其属性值和固定值是否相同,若不相同则报错 \\ 若验证器没有发现该属性,则自动插入该属性并设置固定值 \end{cases} \end{cases}⎩⎪⎪⎪⎨⎪⎪⎪⎧​default:该属性具有默认值——若XML文档的元素没有这个属性,则自动插入该属性并设置默认值fixed:该属性具有固定值——{若验证器发现该属性,则验证其属性值和固定值是否相同,若不相同则报错若验证器没有发现该属性,则自动插入该属性并设置固定值​​
  • 属性nameref、属性defaultfixed不能同时出现

示例:

<!-- 包含属性的空元素示例 -->
<xs:element name="BookName"><xs:complexType><xs:sequence /><xs:attribute name="ISBN" type="ISBNType" /></xs:complexType>
</xs:element><xs:simpleType name="ISBNType"><xs:restriction base="xs:string"><xs:pattern value="\d{1}-\d{4}-\d{4}-\d{1}/TP\d{4}" /></xs:restriction>
</xs:simpleType>

[5].属性组

可以把一组属性组合在一起,以便一起被引用

属性有nameref

示例:

<!-- 属性组示例 -->
<xs:attributeGroup name="myAttributeGroup"><xs:attribute name="attribute1" type="xs:integer" /><xs:attribute name="attribute2" type="xs:string" />
</xs:attributeGroup><xs:complexType name="myElementType"><xs:attributeGroup ref="myAttributeGroup" />
</xs:complexType>

[6].元素组

可以把一组元素组合在一起

必须在group内部定义一个allchoicesequence元素

示例:

<!-- 元素组示例 -->
<xs:group name="PersonGroup"><xs:sequence><xs:element name="FirstName" type="xs:string" /><xs:element name="LastName" type="xs:string" /><xs:element name="Birthday" type="xs:date" /></xs:sequence>
</xs:group><xs:element name="Person" type="PersonInfo"/><xs:complexType name="PersonInfo"><xs:sequence><xs:group ref="PersonGroup"/><xs:element name="Country" type="xs:string"/></xs:sequence>
</xs:complexType>

6、Schema复用

在一个文档中引入其他Schema文档,具体标记包括:

include
被包含的文件可以不属于任何名称空间
如果包含名称空间,该名称空间必须与包含文件的名称空间保持一致
语法格式如下:

<include schemaLocation="被包含的 Schema 的文件" />
示例:

  • Prototype.xsd文件

    <schema xmlns="http://www.w3.org/2001/xmlschema"
    targetNamespace="www.example.com/purchase"><simpleType name="prString"><restriction base="string"><pattern value="[p]{1}\d{3}" /></restriction></simpleType>
    </schema>
    
  • PurchaseOrder.xsd文件
    <schema xmlns="http://www.w3.org/2001/xmlschema"
    targetNamespace="www.example.com/purchase"><include xmlns:prd="www.example.com/purchase" /><element name="prod" type="prd:prString" />
    </schema>
    
import
元素专门用于复用不同名称空间的
被导入的Schema文档必须与当前文件定一不同的名称空间
语法格式如下:

<import schemaLocation="被包含的 Schema 的文件"
[namespace="被包含的 Schema 文件的名称空间"]/>
示例:

<schema targetNamespace="http://202.117.84.144"
xmlns:xs="http://202.117.84.144"
xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:a="http://202.117.84.228/SqlServer228"
xmlns:b="http://202.117.84.228/Oracle144"
elementFormDefault="qualified"><import namespace="http://202.117.84.228/SqlServer228"schemaLocation="F:\SqlServer228.xsd" /><import namespace="http://202.117.84.228/Oracle144"schemaLocation="F:\Orcale20211784144.xsd" />...
</schema>

《Webservice的应用与开发》学习笔记 ·002【XML进阶、XML Schema】相关推荐

  1. Polyworks脚本开发学习笔记(三)-TREEVIEW进阶操作

    Polyworks脚本开发学习笔记(三)-TREEVIEW进阶操作 移动/交换对象的顺序 移动对象的顺序 TREEVIEW FEATURE MOVE ( 1,2 ) 将索引号为1和2的特征交换位置 T ...

  2. ArcGIS客户端开发学习笔记(二)——XML

    XML是Extensible Markup Language(可扩展标记语言)的简称.XML是一种以简单文本格式存储数据的方式,这意味着它可以被任何计算机读取.XML是在Internet上传书数据的绝 ...

  3. ios开发学习笔记--Core Motion

    iOS开发学习笔记之CoreMotion-运动传感器 官网文档:CoreMotion Framework Reference 一.     简介 现在的苹果手机都基本有运动传感器,能够过获取到设备的加 ...

  4. 高性能Cordova App开发学习笔记

    高性能Cordova App开发学习笔记 文件结构 添加插件 构建准备 各个www的作用,prepare命令会将hello\www的内容会拷贝到platform下的wwww目录,知道该改哪里了吧?如果 ...

  5. Windows驱动开发学习笔记(七)—— 多核同步内核重载

    Windows驱动开发学习笔记(七)-- 多核同步 基础知识 并发与同步 分析 InterlockedIncrement 原子操作相关API 内核文件 多核同步 临界区 示例一:错误的临界区 示例二: ...

  6. Windows驱动开发学习笔记(六)—— Inline HOOK

    Windows驱动开发学习笔记(六)-- Inline HOOK SSDT HOOK Inline Hook 挂钩 执行流程 脱钩 实验一:3环 Inline Hook 实验二:0环 Inline H ...

  7. Windows驱动开发学习笔记(五)—— SSDT HOOK

    Windows驱动开发学习笔记(五)-- SSDT HOOK 系统服务表 系统服务描述符表 实验一:通过代码获取SSDT表地址 通过页表基址修改页属性 方法1:修改页属性 方法2:修改CR0寄存器 实 ...

  8. Windows驱动开发学习笔记(四)—— 3环与0环通信(常规方式)

    Windows驱动开发学习笔记(四)-- 3环与0环通信(常规方式) 设备对象 创建设备对象 设置数据交互方式 创建符号链接 IRP与派遣函数 IRP的类型 其它类型的IRP 派遣函数 派遣函数注册位 ...

  9. Windows驱动开发学习笔记(三)—— 内核空间内核模块

    Windows驱动开发学习笔记(三)-- 内核空间&内核模块 内核空间 实验 第一步:编译如下代码 第二步:将 .sys 文件拷贝到虚拟机中 第三步:部署 .sys 文件并运行 第四步:创建一 ...

  10. Windows驱动开发学习笔记(二)—— 驱动调试内核编程基础

    Windows驱动开发学习笔记(二)-- 驱动调试&内核编程基础 基础知识 驱动调试 PDB(Program Debug Database) WinDbg 加载 PDB 实验:调试 .sys ...

最新文章

  1. hashcode值一样对象一定相同吗_HashMap实现原理分析(面试问题:两个hashcode相同 的对象怎么存入hashmap的)...
  2. Mac android studio升级时提示 :Connection failed. Please check your network connection .
  3. Ozon Tech Challenge 2020 (Div.1 + Div.2, Rated) D. Kuroni and the Celebration 交互 + 思维
  4. [CEOI2016] kangaroo(排列dp)
  5. 做到这几点,让你离高级程序员更近一步!
  6. 子查询到底走不走索引?
  7. 在三个层次对Asp.Net的数据操作进行事务
  8. TabActivity,LocalActivityManager,TabHost,TabWidget深度分析(二)
  9. 自定义SSL证书实现单双向ssl认证记录
  10. 集群ddos_《DNS攻击防范科普系列2》 -DNS服务器怎么防DDoS攻击
  11. WPF视频教程系列笔记
  12. 开源java微博系统_ThinkSNS 开源微博系统 v4.6.0.0
  13. 企业—pacemaker基本概念及其原理
  14. 程序设计方法学作业—三天打渔两天晒网程序设计
  15. python 爬虫小案例 8684网站爬取北京公交路线站点信息。
  16. 世界互联网大会为什么把这么重要的奖颁给蚂蚁金服?
  17. App和小程序开发成本对比
  18. Byval 和 Byref的区别
  19. wireshark抓组播数据_wireshark过滤?wireshark 看端口号?wireshark组播包?WireShark 过滤语法...
  20. Oracle 11g grid 日志的目录结构

热门文章

  1. 电力企业计量生产运行系统总体解决方案
  2. oracle如何取当前日期年月_Oracle获取当前年、月、日的方法
  3. java setstate,5.state更新流程(setState里到底发生了什么)
  4. mysql免安装版配置百度_mysql -5.7.10 免安装版配置
  5. c语言中整型数组如何初始化,C语言数组空间的初始化详解
  6. Wow! Such City! 最短路问题
  7. 数据结构(字符串)—— 删除“b“和“ac“
  8. 协作开发——使用git在多台机器上实现协作开发
  9. Jupyter Lab——如何添加没有出现的kernel
  10. spring配置属性的两种方式