次の方法で共有


PFN_WSK_GET_NAME_INFO コールバック関数 (wsk.h)

WskGetNameInfo 関数は、トランスポート アドレスからホスト名へのプロトコルに依存しない変換を提供します。

構文

PFN_WSK_GET_NAME_INFO PfnWskGetNameInfo;

NTSTATUS PfnWskGetNameInfo(
  [in]            PWSK_CLIENT Client,
  [in]            PSOCKADDR SockAddr,
  [in]            ULONG SockAddrLength,
  [out, optional] PUNICODE_STRING NodeName,
  [out, optional] PUNICODE_STRING ServiceName,
  [in]            ULONG Flags,
  [in, optional]  PEPROCESS OwningProcess,
  [in, optional]  PETHREAD OwningThread,
  [in, out]       PIRP Irp
)
{...}

パラメーター

[in] Client

[入力]の WskProviderNpi パラメーターを介して返されたWSK_CLIENT構造体へのポインター WskCaptureProviderNPI 関数。

[in] SockAddr

[入力]ソケットの IP アドレスとポート番号を含む SOCKADDR 構造体へのポインター。

[in] SockAddrLength

[入力] SockAddr パラメーターが指すバッファーの長さをバイト単位で指定します。 SockAddrLength の値は、SOCKADDR_STORAGE構造体のサイズを超えないようにしてください。

[out, optional] NodeName

[out]ホスト (ノード) 名を表す Unicode 文字列を含む UNICODE_STRING 構造体への省略可能なポインター。 成功すると、Unicode ホスト名は既定で完全修飾ドメイン名 (FQDN) として書き込まれます。 呼び出し元は、Unicode ホスト名を保持するのに十分な大きさのUNICODE_STRING バッファーを指定する必要があります。これには、終端の NULL 文字が含まれます。 NodeBuffer パラメーターが NULL の場合、呼び出し元はホスト名の文字列を受け取りたくありません。 NodeBufferServiceBuffer の両方をNULL にすることはできません。

[out, optional] ServiceName

[out]ポート番号に関連付けられたサービス名を表す Unicode 文字列を含む UNICODE_STRING 構造体への省略可能なポインター。 呼び出し元は、終了する NULL 文字を含む Unicode サービス名を保持するのに十分な大きさのUNICODE_STRINGバッファーを提供する必要があります。 NodeBuffer パラメーターが NULL の場合、呼び出し元はサービス名の文字列を受け取りたくありません。 NodeBufferServiceBuffer の両方をNULL にすることはできません。

[in] Flags

[入力]この関数の処理をカスタマイズするために使用される ULONG 値。

次のフラグを使用できます。

NI_DGRAM

サービスがデータグラム サービスであることを示します。 このフラグは、UDP および TCP サービスに異なるポート番号を提供する少数のサービスに必要です。

NI_NAMEREQD

DNS で解決できないホスト名でエラーが発生することを示します。

NI_NOFQDN

その結果、 NodeName パラメーターで返される相対識別名 (RDN) のみを持つローカル ホストになります。

NI_NUMERICHOST

関数が、名前の代わりにホスト名の数値形式 (逆引き DNS 参照) を返すように指定します。 ホスト名を DNS で解決できない場合は、ホスト名の数値形式も返されます。

NI_NUMERICSERV

関数が名前ではなくサービスのポート番号を返すことを示します。 また、IP アドレス (127.0.0.2 など) のホスト名が見つからない場合は、ホスト名が IP アドレスとして返されます。

[in, optional] OwningProcess

[入力]関数がセキュリティ コンテキストを取得するプロセスへの省略可能なポインター。 このセキュリティ コンテキストは、関数が名前解決要求を処理するユーザー アカウント コンテキストを示します。

このパラメーターが NULL の場合、関数は最小限の特権で定義済みのローカル アカウントのコンテキストで名前解決要求を処理します。

このパラメーターが NULL ではなく、呼び出し元のスレッドに対して偽装トークンが有効な場合、この関数は失敗し、STATUS_INVALID_PARAMETERを返します。

[in, optional] OwningThread

[入力]関数がセキュリティ コンテキストを取得するスレッドへの省略可能なポインター。 このパラメーターは、OwningProcessNULL 以外の場合にのみ NULL 以外にすることができます。 それ以外の場合、この関数は失敗し、STATUS_INVALID_PARAMETERを返します。

このパラメーターが NULL ではなく、呼び出し元のスレッドに対して偽装トークンが有効な場合、この関数は失敗し、STATUS_INVALID_PARAMETERを返します。

[in, out] Irp

[入力/出力]非同期的に要求を完了するために使用する I/O 要求パケット (IRP) へのポインター。 要求が完了すると、 Irp ->Iostatus.Information は返された状態コードを保持します。

戻り値

WskGetNameInfo は 、次のいずれかの NTSTATUS コードを返します。

リターン コード 説明
STATUS_INVALID_PARAMETER
無効なパラメーターが指定されました。
STATUS_NO_MATCH
ホスト名を解決できません。
STATUS_SUCCESS
関数は正常に終了しました。 WSK アプリケーションで IRP へのポインターを指定した場合、 Irp パラメーターを指定すると、IRP は成功状態で完了します。
STATUS_PENDING
WSK サブシステムは、すぐに関数を完了できませんでした。 WSK サブシステムは、制御操作が完了した後に IRP を完了します。 コントロール操作の状態は、IRP の IoStatus.Status フィールドに返されます。
その他の状態コード
エラーが発生しました。 IRP は失敗状態で完了します。

注釈

OwningProcess パラメーターが指すプロセス、または OwningThread プロセスが指すスレッドは、この関数のセキュリティ コンテキストを示します。 セキュリティ コンテキストによって示されるユーザー アカウントは、関数の名前解決要求のコンテキストを示します。

要件

要件
サポートされている最小のクライアント Windows 7 以降のバージョンの Windows オペレーティング システムで使用できます。
対象プラットフォーム ユニバーサル
Header wsk.h (Wsk.h を含む)
IRQL PASSIVE_LEVEL

こちらもご覧ください

Sockaddr

SOCKADDR_STORAGE

UNICODE_STRING

WSK_CLIENT

WskCaptureProviderNPI

WskGetAddressInfo