次の方法で共有


IByteBuffer::Write メソッド

[ Write メソッドは、 [要件] セクションで指定されたオペレーティング システムで使用できます。 Windows Server 2003 Service Pack 1 (SP1) 以降、Windows Vista、Windows Server 2008、およびそれ以降のバージョンのオペレーティング システムでは使用できません。 IStream インターフェイスも同様の機能を提供します。

Write メソッドは、現在のシーク ポインターから始まるストリーム オブジェクトに、指定した数をバイトから書き込みます。

構文

HRESULT Write(
  [in]  BYTE *pByte,
  [in]  LONG cb,
  [out] LONG *pcbWritten
);

パラメーター

pByte [in]

ストリームに書き込まれるデータを含むバッファーのアドレス。 cb が 0 の場合でも、このパラメーターに有効なポインターを指定する必要があります。

cb [in]

ストリームへの書き込みを試行するデータのバイト数。 このパラメーターには 0 を指定できます。

pcbWritten [out]

このメソッドがストリーム オブジェクトに書き込まれた実際のバイト数を書き込む LONG 変数のアドレス。 呼び出し元は、このポインターを NULL に設定できます。この場合、このメソッドは書き込まれた実際のバイト数を提供しません。

戻り値

戻り値は HRESULT です。 S_OK の値は、呼び出しが成功したことを示します。

解説

IByteBuffer::Write メソッドは、指定されたデータをストリーム オブジェクトに書き込みます。 シーク ポインターは、実際に書き込まれたバイト数に合わせて調整されます。 実際に書き込まれたバイト数は 、pcbWritten パラメーターで返されます。 バイト数が 0 バイトの場合、書き込み操作は無効です。

現在、シーク ポインターがストリームの末尾を超え、バイト数が 0 以外の場合、このメソッドはストリームのサイズをシーク ポインターに増やし、シーク ポインターから始まる指定したバイトを書き込みます。 ストリームに書き込まれたフィル バイトは、特定の値に初期化されません。 これは、MS-DOS FAT ファイル システムでのファイルの終わりの動作と同じです。

バイト数が 0 で、ストリームの末尾を超えるシーク ポインターでは、ストリームをシーク ポインターに増やすフィル バイトは作成されません。 この場合、ストリームのサイズを大きくし、フィル バイトを書き込むには、 IByteBuffer::SetSize メソッドを呼び出す必要があります。

pcbWritten パラメーターは、エラーが発生した場合でも値を持つことができます。

COM 提供の実装では、ストリーム オブジェクトはスパースではありません。 フィル バイトは最終的にディスクに割り当てられ、ストリームに割り当てられます。

次の例は、ストリーム オブジェクトへのバイトの書き込みを示しています。

LONG     lWrite;
HRESULT  hr;

// Write to the buffer.
// byData is an array of 64 bytes.
hr = pIByteBuff->Write(byData,
                       64,
                       &lWrite);
if (FAILED(hr))
  printf("Failed IByteBuffer::Write\n");

必要条件

要件
サポートされている最小のクライアント
Windows XP [デスクトップ アプリのみ]
サポートされている最小のサーバー
Windows Server 2003 [デスクトップ アプリのみ]
クライアント サポートの終了
Windows XP
サーバー サポートの終了
Windows Server 2003
Header
Scardssp.h
タイプ ライブラリ
Scardssp.tlb
[DLL]
Scardssp.dll
IID
IID_IByteBufferは E126F8FE-A7AF-11D0-B88A-00C04FD424B9 として定義されています