<Return[WXYZ]><Top>
WriteFile |
Declare Function Api_WriteFile& Lib "kernel32" Alias "WriteFile" (ByVal hFile&, lpBuffer As Any, ByVal nNumberOfBytesToWrite&, lpNumberOfBytesWritten&, lpOverlapped As Any) |
Declare Function WriteFile Lib "kernel32" Alias "WriteFile" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToWrite As Long, lpNumberOfBytesWritten As Long, lpOverlapped As OVERLAPPED) As Long |
|
ファイルにデータを書き込む。この関数は、同期と非同期両方の操作を想定して設計されている。 |
|
パラメータ
このハンドルは、GENERIC_WRITE アクセス権を指定して作成したものでなければならない。
いた任意のハンドル、または socket と accept どちらかの関数が返したソケットのハンドルを指定する。 通信リソース、または socket と accept どちらかの関数が返したソケットのハンドルを指定する。メールスロット、名前付きパイプ、ディスクフ
ァイルに対する非同期書き込み操作はサポートしていない。
を変更するだけである(データは変更されない)。
何らかの作業やエラーのチェックを行う前に、WriteFile はこの値を 0 に設定する。 い。lpOverlapped パラメータで有効なポインタを指定した場合、lpNumberOfBytesWritten パラメータで NULL を指定できる。 オーバーラップ書き込み操作を行う場合、GetOverlappedResult 関数を呼び出すと、書き込みの終わったバイト数を取得できる。 hFile が I/O 完了ポートに関連付けられている場合、GetQueuedCompletionStatus 関数を呼び出すと、書き込みの終わったバイト数を取
得できる。
hFile パラメータが、FILE_FLAG_OVERLAPPED を指定して開いたファイルのハンドルを指している場合、この構造体は必須である。
NULL を指定できない。このパラメータでは、1 個の有効な OVERLAPPED 構造体を指定しなければならない。もしこの状況で、
lpOverlapped パラメータで NULL を指定すると、この関数は、書き込み操作が完了したと間違って通知することがある。 ンタを指定した場合、OVERLAPPED 構造体で指定したオフセットでファイルの非同期書き込みが開始され、WriteFile はファイルの書き込 みが完了する前に制御を返すことがある。この場合、WriteFile 関数は 0(FALSE)を返し、GetLastError 関数は ERROR_IO_PENDING を返す。この結果、呼び出し側プロセスは書き込み操作が完了する前に、他の作業を実行できる。
その後、書き込み操作が完了すると、OVERLAPPED 構造体で指定したイベントがシグナル状態になる。 を指定した場合、ファイルポインタの現在の位置からファイルの同期書き込みが開始され、WriteFile は、書き込みが完了すると制御を返
す。 lpOverlapped パラメータで有効なポインタを指定した場合、OVERLAPPED 構造体で指定したオフセットでファイルの同期書き込みが開始
され、WriteFile は、書き込みが完了すると制御を返す。 ならない。OVERLAPPED 構造体へのポインタを指定すると、この関数は失敗する。ただし、Windows 95/98 は、シリアルポートとパラレ
ルポートに対するオーバーラップ I/O をサポートしている。 |