LPDHCP_DROP_SEND
コールバックシグネチャ
DWORD LPDHCP_DROP_SEND(
BYTE** Packet,
DWORD* PacketSize,
DWORD ControlCode,
DWORD IpAddress,
void* Reserved,
void* PktContext
);パラメーター
| フィールド | 型 | 説明 |
|---|---|---|
| Packet | BYTE** | パケットを格納する、サイズ 4KB のバッファーへのポインターです。 メモ このバッファーに直接書き込むことは推奨されません。
|
| PacketSize | DWORD* | Packet パラメーターのサイズ (バイト単位) へのポインターです。 |
| ControlCode | DWORD | 破棄の理由を示す制御コードです。「解説」を参照してください。 |
| IpAddress | DWORD | パケットを受信したソケットのインターネット プロトコル (IP) アドレスです。IP アドレスはホスト バイト オーダーです。 |
| Reserved | void* | 将来の使用のために予約されています。 |
| PktContext | void* | パケットを識別するコンテキストです。以前の DhcpNewPktHook 関数呼び出しの PktContext パラメーターで指定されたものです。 |
公式ドキュメント
LPDHCP_DROP_SEND コールバック関数
戻り値
戻り値は、コールバックを提供するアプリケーションによって定義されます。
解説(Remarks)
DhcpPktDropHook 関数は、DHCP パケットが破棄されたとき、またはパケットの処理が完全に終了したときに、Microsoft DHCP Server によって呼び出されます。 DhcpPktDropHook は、Microsoft DHCP Server の重要なイベントの通知を受け取るために登録されたサードパーティ製 DLL によって実装されます。
DhcpPktDropHook 関数は、ブロックしてはなりません。
このイベントの通知を受け取るために登録するサードパーティ製 DLL は、1 つのパケットについて DhcpPktDropHook 関数が複数回呼び出されることに備えてください。Microsoft DHCP Server がパケットを破棄した場合、そのパケットに対してこの関数は 2 回呼び出されます。1 回はパケットが破棄されたことを通知するため、もう 1 回はパケットの処理が完全に終了したことを示すためです。
次の表に、ControlCode パラメーターで返される可能性のある制御コードを示します。
| 制御コード | 説明 |
|---|---|
| DHCP_DROP_DUPLICATE | このパケットは、DHCP サーバーが受信した別のパケットの重複です。 |
| DHCP_DROP_NOMEM | パケットを処理するために使用できるメモリーが不足しています。 |
| DHCP_DROP_INTERNAL_ERROR | 予期しない内部エラーが発生しました。 |
| DHCP_DROP_TIMEOUT | パケットが古すぎるため、処理できません。 |
| DHCP_DROP_UNAUTH | サーバーには、このパケットを処理する権限がありません。 |
| DHCP_DROP_PAUSED | サーバーが一時停止しています。 |
| DHCP_DROP_NO_SUBNETS | サブネットが構成されていないため、パケットを処理する意味がありません。 |
| DHCP_DROP_INVALID | パケットが無効であるか、無効なソケットで受信されました。 |
| DHCP_DROP_WRONG_SERVER | パケットが誤った DHCP サーバーに送信されました。 |
| DHCP_DROP_NOADDRESS | 提供できるアドレスがありません。 |
| DHCP_DROP_PROCESSED | パケットは処理されました。 |
| DHCP_DROP_GEN_FAILURE | 不明なエラーが発生しました。 |
DhcpPktSendHook 関数は、Microsoft DHCP Server がクライアントに応答を送信する直前に、Microsoft DHCP Server によって呼び出されます。 DhcpPktSendHook の通知を受け取るために登録すると、サードパーティの開発者はパケットのポインターを操作して Microsoft DHCP Server の応答を変更できます。 DhcpPktSendHook は、Microsoft DHCP Server の重要なイベントの通知を受け取るために登録されたサードパーティ製 DLL によって実装されます。
DhcpPktSendHook 関数は、ブロックしてはなりません。
DhcpPktSendHook 関数は、ブロックしてはなりません。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)