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
パケットがベンダー クラス識別子オプション (60) を含む有効な DHCP パケットで、値が "PXEClient" に設定されている場合に TRUE に設定されている BOOL のアドレス。
戻り値
関数が成功した場合、戻り値は ERROR_SUCCESS。
解説
プロバイダーは、 PxeProviderSetAttribute 関数で設定されたフィルターが、指定されたパケットが有効な DHCP パケットであるかどうかを判断するためにすべてのパケットを受信するように設定されている場合に、この関数を使用します。 プロバイダーは、この関数を使用して応答パケットを検証することもできます。通常、これはプロバイダーのデバッグ ビルドまたはテスト ビルドに対してのみ行われます。
検証テストには、次のテストが含まれます。
DHCP フィールド | 初期化された値 |
---|---|
操作 (op) | bClientRequest パラメーターが TRUE の場合、このフィールドは 1 (BOOTP 要求) である必要があります。それ以外の場合、このフィールドは 2 (BOOTP 応答) である必要があります。 |
ハードウェア アドレスの長さ (hlen) | 16 以下にする必要があります。 |
ホスト名 (sname) | NULL で終了する必要があります。 |
ブート ファイル名 (ファイル) | NULL で終了する必要があります。 |
マジッククッキー(自販の最初の4オクテット) | 有効な DHCP マジック クッキー (99 130 83 99) を含む必要があります。 |
オプションの長さ | すべてのオプションは有効な長さである必要があり、パケットをオーバーランしないでください。 |
DHCP メッセージの種類 (53) | が存在する必要があります。 |
End オプション (255) | パケットは DHCP End Option で終わる必要があります。 パケットの最小長のため、パケットが大きくなる可能性がありますが、End オプションに従うオプションはありません。 |
要件
サポートされている最小のクライアント | サポートなし |
サポートされている最小のサーバー | Windows Server 2008、Windows Server 2003 SP2 [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | wdspxe.h |
Library | WdsPxe.lib |
[DLL] | WdsPxe.dll |