OpenFile 関数 (winbase.h)
ファイルを作成、開く、再度開く、または削除します。
構文
HFILE OpenFile(
[in] LPCSTR lpFileName,
[out] LPOFSTRUCT lpReOpenBuff,
[in] UINT uStyle
);
パラメーター
[in] lpFileName
ファイルの名前です。
文字列は、8 ビット Windows 文字セットの文字で構成されている必要があります。 OpenFile 関数では、Unicode ファイル名や名前付きパイプを開く機能はサポートされていません。
[out] lpReOpenBuff
最初に開いたときにファイルに関する情報を受け取る OFSTRUCT 構造体へのポインター。
この構造体は、 OpenFile 関数の後続の呼び出しで使用して、開いているファイルを確認できます。
OFSTRUCT 構造体には、長さが 128 文字のOFS_MAXPATHNAME文字に制限されたパス文字列メンバーが含まれています。 このため、 OpenFile 関数を使用して、パスの長さが 128 文字を超えるファイルを開くことはできません。 CreateFile 関数には、このパスの長さの制限はありません。
[in] uStyle
実行するアクション。
このパラメーターには、次の 1 つ以上の値を指定できます。
値 | 説明 |
---|---|
|
無視されます。
[キャンセル] ボタンを含むダイアログ ボックスを生成するには、OF_PROMPTを使用します。 |
|
新しいファイルを 1 つ作成します。
ファイルが存在する場合は、長さが 0 に切り捨てられます。 |
|
ファイルを削除します。 |
|
ファイルを開き、閉じます。
ファイルの存在をテストするには、これを使用します。 |
|
OFSTRUCT 構造体を埋めますが、それ以外の操作は行いません。 |
|
要求されたファイルが存在しない場合は、ダイアログ ボックスを表示します。
ダイアログ ボックスは、システムがファイルを見つけられないことをユーザーに通知し、[ 再試行] ボタンと [キャンセル] ボタンが含まれています。 [キャンセル] ボタンをクリックすると、OpenFile にファイルが見つかりませんというエラー メッセージが返されます。 |
|
読み取り専用でファイルを開きます。 |
|
読み取り/書き込みアクセス許可がある場合にファイルを開きます。 |
|
再度開くバッファー内の情報を使用してファイルを開きます。 |
|
MS-DOS ベースのファイル システムの場合、 は互換モードでファイルを開き、指定したコンピューター上の任意のプロセスでファイルを何度でも開きます。
他の共有モードでファイルを開く他の作業は失敗します。 このフラグは、CreateFile 関数のFILE_SHARE_READ|FILE_SHARE_WRITE フラグにマップされます。 |
|
他のプロセスへの読み取りまたは書き込みアクセスを拒否せずにファイルを開きます。
MS-DOS ベースのファイル システムでは、ファイルが他のプロセスによって互換モードで開かれている場合、関数は失敗します。 このフラグは、CreateFile 関数のFILE_SHARE_READ|FILE_SHARE_WRITE フラグにマップされます。 |
|
ファイルを開き、他のプロセスへの読み取りアクセスを拒否します。
MS-DOS ベースのファイル システムでは、ファイルが互換モードで開かれている場合、または他のプロセスによる読み取りアクセスの場合、関数は失敗します。 このフラグは、CreateFile 関数のFILE_SHARE_WRITE フラグにマップされます。 |
|
ファイルを開き、他のプロセスへの書き込みアクセスを拒否します。
MS-DOS ベースのファイル システムでは、ファイルが互換モードで開かれている場合、または他のプロセスによる書き込みアクセスのために、関数は失敗します。 このフラグは、CreateFile 関数のFILE_SHARE_READ フラグにマップされます。 |
|
排他モードでファイルを開き、他のプロセスへの読み取り/書き込みアクセスの両方を拒否します。 ファイルが読み取り/書き込みアクセス用に他のモードで開かれている場合、現在のプロセスでも、関数は失敗します。 |
|
ファイルの日付と時刻が、以前に開かれた日時と同じであることを確認します。
これは、読み取り専用ファイルの追加のチェックとして役立ちます。 |
|
書き込みアクセスの場合にのみファイルを開きます。 |
戻り値
関数が成功した場合、戻り値はファイル I/O の実行時に使用するファイル ハンドルを指定します。 ファイルを閉じるには、このハンドルを使用して CloseHandle 関数を呼び出します。
関数が失敗した場合、戻り値は HFILE_ERROR。 詳細なエラー情報を得るには、GetLastError を呼び出します。
解説
lpFileName パラメーターでファイル名と拡張子のみが指定されている場合、この関数は次のディレクトリと表示される順序で一致するファイルを検索します。
- アプリケーションが読み込まれるディレクトリ。
- 現在のフォルダー。
-
Windows システム ディレクトリ。
GetSystemDirectory 関数を使用して、このディレクトリのパスを取得します。
-
16 ビット Windows システム ディレクトリ。
このディレクトリのパスを取得する関数はありませんが、検索されます。
-
Windows ディレクトリ。
GetWindowsDirectory 関数を使用して、このディレクトリのパスを取得します。
- PATH 環境変数に一覧表示されているディレクトリ。
OpenFile 関数は、16 ビット Windows OpenFile 関数がサポートするOF_SEARCH フラグをサポートしていません。 OF_SEARCH フラグは、ファイル名に完全パスが含まれている場合でも、一致するファイルを検索するようにシステムに指示します。 SearchPath 関数を使用してファイルを検索します。
共有違反は、 uStyle パラメーターの値が他のアクセス フラグを持つ OF_DELETE アクセス フラグ OR'ed であり、リモート ファイルまたはディレクトリが共有アクセスで開かされていない場合に、リモート コンピューターでファイルまたはディレクトリを開こうとした 場合FILE_SHARE_DELETE 発生します。 このシナリオで共有違反を回避するには、 OF_DELETE アクセス権のみを持つリモート ファイルまたはディレクトリを開くか、削除のために最初にファイルまたはディレクトリを開かずに DeleteFile を呼び出します。
Windows 8 と Windows Server 2012 では、この関数は、次のテクノロジによってサポートされています。
テクノロジ | サポートされています |
---|---|
サーバー メッセージ ブロック (SMB) 3.0 プロトコル | はい |
SMB 3.0 Transparent Failover (TFO) | はい |
スケールアウト ファイル共有 (SO) を使う SMB 3.0 | はい |
クラスターの共有ボリューム ファイル システム (CsvFS) | はい |
Resilient File System (ReFS) | はい |
CsvFs によって、圧縮されたファイルのリダイレクトされた IO が実行されます。
要件
サポートされている最小のクライアント | Windows XP (デスクトップ アプリのみ) |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
対象プラットフォーム | Windows |
ヘッダー | winbase.h (Windows.h を含む) |
Library | Kernel32.lib |
[DLL] | Kernel32.dll |