> ## Documentation Index
> Fetch the complete documentation index at: https://docs.abbyy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# IReadStream インターフェイスの Read メソッド

> ABBYY FineReader Engine API の IReadStream インターフェイスにおける Read メソッド — ストリームから指定されたバイト数を読み取るクライアント側のメソッドです。実装側でデータ配列を作成し、その所有権は呼び出し元に移ります。

このメソッドはクライアント側で実装され、カスタムソースから処理対象のデータを取り込むために使用されます。このメソッドの実装では、データ配列を作成して呼び出し元に渡す必要があります。使用後のメモリ解放は、呼び出し元が行います。

<div id="syntax">
  ## 構文
</div>

<div id="c">
  ### C++
</div>

```cpp theme={null}
HRESULT Read(
  SAFEARRAY(BYTE)* Data,
  int              Count,
  int*             BytesRead
);
```

### C\#

```csharp theme={null}
int Read(
  out byte[] Data,
  int        Count
);
```

<div id="visual-basic-net">
  ### Visual Basic .NET
</div>

```vb theme={null}
Function Read( _
  ByRef Data() As Byte, _
  ByVal Count As Integer _
) As Integer
```

<div id="parameters">
  ## パラメーター
</div>

Data

\[out] このパラメーターは、読み取るデータを示します。このメソッドの実装では、この配列を作成し、必要なデータを書き込む必要があります。不要になった時点でこのメモリを解放する責任は、呼び出し元にあります。

Count

\[in] このパラメーターは、読み取るバイト数の上限を指定します。

BytesRead

\[out, retval] このパラメーターは、実際に読み取られたバイト数 (つまり、Data バッファが使用するメモリ サイズ) を指定します。この数値が 0 より大きい場合、このパラメーターが 0 を返すまで、このメソッドが再度呼び出されます。

<div id="return-values">
  ## 戻り値
</div>

\[C++ のみ] このメソッドが S\_OK 以外の値を返した場合は、クライアント側でエラーが発生したことを意味します。

<div id="remarks">
  ## 備考
</div>

このメソッドのクライアント側実装では、メソッド内でスローされるすべての例外を確実に捕捉して処理し、メソッドの外部に例外が伝播しないようにする必要があります。例外がメソッドの外部に伝播すると、予測不能な結果 (プログラムの終了など) を招く可能性があります。

<div id="see-also">
  ## 関連項目
</div>

[IReadStream](/ja/fine-reader/engine/api-reference/supplementary-objects-and-methods/ireadstream)
