pxeDhcpIsValid 函数 (wdspxe.h)
验证数据包是否为 DHCP 数据包。
语法
DWORD PXEAPI PxeDhcpIsValid(
[in] PVOID pPacket,
[in] ULONG uPacketLen,
[in] BOOL bRequestPacket,
[out] PBOOL pbPxeOptionPresent
);
参数
[in] pPacket
指向使用 PxePacketAllocate 函数分配的答复数据包的指针。
[in] uPacketLen
pPacket 参数指向的数据包的长度。
[in] bRequestPacket
指示数据包是否为请求数据包。 下表列出了可能的值。
值 | 含义 |
---|---|
|
要验证的数据包是来自客户端的请求数据包。 |
|
要验证的数据包是由服务器生成的数据包。 |
[out] pbPxeOptionPresent
如果数据包是包含“供应商类标识符”选项的有效 DHCP 数据包,则设置为 TRUE 的 BOOL 的地址 (60) 值设置为“PXEClient”。
返回值
如果函数成功,则返回值 ERROR_SUCCESS。
注解
将 具有 PxeProviderSetAttribute 函数的筛选器集设置为接收所有数据包以确定指定的数据包是否为有效的 DHCP 数据包时,提供程序使用此函数。 提供程序还可以使用此函数来验证回复数据包;通常,仅针对提供程序的调试或测试版本执行此操作。
验证测试包括以下测试。
DHCP 字段 | 初始化值 |
---|---|
操作 (操作) | 如果 bClientRequest 参数为 TRUE,则此字段必须为 1 (BOOTP 请求) ,否则此字段必须为 2 (BOOTP 回复) 。 |
硬件地址长度 (hlen) | 必须小于或等于 16。 |
主机名 (sname) | 必须为 NULL 终止。 |
启动文件名 (文件) | 必须为 NULL 终止。 |
魔术饼干 (前 4 个八进制的自动贩卖) | 必须包含有效的 DHCP Magic Cookie (99 130 83 99) 。 |
选项长度 | 所有选项都必须具有有效的长度,并且不会溢出数据包。 |
DHCP 消息类型 (53) | 必须存在。 |
End Option (255) | 数据包必须以 DHCP 结束选项结束。 由于最小数据包长度,数据包可能更大,但没有选项可能遵循结束选项。 |
要求
最低受支持的客户端 | 无受支持的版本 |
最低受支持的服务器 | Windows Server 2008、Windows Server 2003 SP2 [仅限桌面应用] |
目标平台 | Windows |
标头 | wdspxe.h |
Library | WdsPxe.lib |
DLL | WdsPxe.dll |