次の方法で共有


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

WskSend 関数は、接続指向またはストリーム ソケット経由でリモート トランスポート アドレスにデータを送信します。

構文

PFN_WSK_SEND PfnWskSend;

NTSTATUS PfnWskSend(
  [in]      PWSK_SOCKET Socket,
  [in]      PWSK_BUF Buffer,
  [in]      ULONG Flags,
  [in, out] PIRP Irp
)
{...}

パラメーター

[in] Socket

データを送信するソケットのソケット オブジェクトを指定する WSK_SOCKET 構造体へのポインター。

[in] Buffer

ソケット経由で送信されるデータを含むデータ バッファーを記述する初期化された WSK_BUF 構造体へのポインター。

[in] Flags

次のフラグの組み合わせのビットごとの OR を含む ULONG 値。

WSK_FLAG_NODELAY

基になるトランスポートに、データと以前にキューに入れたデータを、遅延なくリモート アプリケーションに直ちに送信するように指示します。

このフラグは、Microsoft TCP/IP トランスポート プロトコルでサポートされています。 このフラグは、他のトランスポート プロトコルではサポートされない場合があります。

[in, out] Irp

WSK サブシステムが非同期的に送信操作を完了するために使用する呼び出し元によって割り当てられた IRP へのポインター。 WSK 関数で IRP を使用する方法の詳細については、「Winsock カーネル関数での IRP の使用」を参照してください。

戻り値

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

リターン コード 形容
STATUS_SUCCESS
ソケット経由でデータが正常に送信されました。 IRP は成功状態で完了します。 IRP の IoStatus.Information フィールドには、送信されたバイト数が含まれています。
STATUS_PENDING
WSK サブシステムは、すぐにソケット経由でデータを送信できませんでした。 WSK サブシステムは、ソケット経由でデータを送信した後、IRP を完了します。 送信操作の状態は、IRP の IoStatus.Status フィールドに返されます。 操作が成功した場合、IRP の IoStatus.Information フィールドには、送信されたバイト数が含まれます。
STATUS_FILE_FORCED_CLOSED
ソケットは機能しなくなりました。 IRP は失敗状態で完了します。 WSK アプリケーションは、WskCloseSocket 関数を呼び出して、できるだけ早くソケットを閉じる必要があります。
STATUS_NOT_SUPPORTED
指定されたフラグは、基になるネットワーク トランスポートではサポートされていません。
その他の状態コードの
エラーが発生しました。 IRP は失敗状態で完了します。

備考

WSK アプリケーションでは、WskSend 関数は、以前にリモート トランスポート アドレスに接続されている接続指向またはストリーム ソケットでのみ呼び出すことができます。 接続指向ソケットは、次のいずれかの方法でリモート トランスポート アドレスに接続されます。

  • WSK アプリケーションは、WskConnect 関数を呼び出してソケットを接続します。
  • WSK アプリケーションは、WskSocketConnect 関数を呼び出してソケットを作成、バインド、接続します。
  • WSK アプリケーションがリッスン しているソケットで受信接続要求を受け入れると、WSK サブシステムはソケットを接続します。
WskSend 関数がSTATUS_PENDINGを返す場合、Buffer パラメーターによって指される WSK_BUF 構造体に記述されている MDL チェーンは、IRP が完了するまでメモリ内でロックされたままにする必要があります。

WSK サブシステムは、ソケット経由でデータを送信するときに、データのバッファリングを実行しません。 したがって、wskSend 関数 呼び出しは、すべてのデータが実際に送信されるまで、WSK サブシステムによって完了されません。

必要条件

要件 価値
サポートされる最小クライアント Windows Vista 以降のバージョンの Windows オペレーティング システムで使用できます。
ターゲット プラットフォーム 万国
ヘッダー wsk.h (Wsk.h を含む)
IRQL <= DISPATCH_LEVEL

関連項目

WSK_BUF

WSK_PROVIDER_CONNECTION_DISPATCH

WSK_PROVIDER_STREAM_DISPATCH

WSK_SOCKET

WskCloseSocket

WskReceive

WskReceiveEvent