AVCSTRM_WRITE

AVCSTRM_WRITE 関数コードは、指定されたストリームに送信されるデータ バッファーを送信するために使用されます。

I/O ステータス ブロック

成功した場合、avcstrm.sysIrp->IoStatus.Status を STATUS_SUCCESSに設定します。

指定できる値は以下の通りです。

エラーの状態 説明
STATUS_DEVICE_REMOVED AVCSTRM_READ 操作に対応するデバイスが存在しなくなりました。
STATUS_CANCELLED 要求を完了できませんでした。
STATUS_INVALID_PARAMETER IRP で指定されたパラメーターが正しくありません。
STATUS_INSUFFICIENT_RESOURCES 要求を完了するのに十分なシステム リソースが不足していました。
STATUS_PENDING 要求は受信されましたが、さらに処理が必要です。 I/O 完了ルーチンは、最終的な応答を処理します。

AVC_STREAM_REQUEST_BLOCK 入力

SizeOfThisBlock、バージョン、関数
これらのメンバーを初期化するには、 INIT_AVCSTRM_HEADER マクロを使用します。 マクロの Request 引数に AVCSTRM_WRITE を渡します。

AVCStreamContext
書き込み操作のターゲットである前の のAVCSTRM_OPEN 呼び出しによって返されるストリーム コンテキスト (ハンドル) を指定します。

BufferStruct
書き込み操作でデータを取得するバッファーを指定します。

サブユニット ドライバーは、最初に IRP と AVC_STREAM_REQUEST_BLOCK 構造体を割り当てる必要があります。

次に、INIT_AVCSTRM_HEADER マクロを使用して AVC_STREAM_REQUEST_BLOCK 構造体を初期化し、AVCSTRM_READ を Request 引数としてマクロに渡す必要があります。

次に、サブユニット ドライバーは、AVCStreamContext メンバーを、書き込みデータ操作のターゲットであるストリームのストリーム コンテキスト (ハンドル) に設定します。 最後に、サブユニット ドライバーは、書き込み操作でデータを取得するバッファーを記述する CommandData 共用体の BufferStruct メンバーを設定します。

この要求を送信するには、サブユニットは、IOCTL_AVCSTRM_CLASS に設定された IRPの IoControlCode メンバーと、実行する書き込み操作を記述する AVC_STREAM_REQUEST_BLOCK 構造体に設定された IRP の Argument1 メンバーを持つ IRP_MJ_INTERNAL_DEVICE_CONTROL IRP を送信します。

このコマンドは非同期的に完了します。 完了すると、IRP で設定された I/O 完了ルーチンが呼び出されます。

この関数コードは、IRQL = PASSIVE_LEVEL で呼び出す必要があります。

Comments

この関数は、次に示すように、AVC_STREAM_REQUEST_BLOCK 構造体で CommandData 共用体の BufferStruct メンバーを使用します。

typedef struct _AVC_STREAM_REQUEST_BLOCK {
  ULONG  SizeOfThisBlock;
  ULONG  Version;
  AVCSTRM_FUNCTION  Function;
  .
  .
  PVOID AVCStreamContext;
  .
  .
  union _tagCommandData {
    .
    .
    AVCSTRM_BUFFER_STRUCT  BufferStruct;
    .
    .
  } CommandData;
} AVC_STREAM_REQUEST_BLOCK, *PAVC_STREAM_REQUEST_BLOCK;

要件

ヘッダー: avcstrm.h宣言されています。 avcstrm.h を含めます。

参照

AVC_STREAM_REQUEST_BLOCK

INIT_AVCSTRM_HEADER

IRP_MJ_INTERNAL_DEVICE_CONTROL

IOCTL_AVCSTRM_CLASS

AVCSTRM_BUFFER_STRUCT

AVCSTRM_FUNCTION