ファイルを作成、または、オープンする
Declare Function CreateFile Lib "kernel32.dll" Alias "CreateFileA" _
(ByVal lpFileName As String, ByVal dwdesiredAccess As Long, ByVal dwShareMode As Long, _
lpSecurityAtributes As SECURITY_ATTRIBUTES, ByVal dwCreateDisposition As Long, _
ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
Declare Function CreateFile Lib "kernel32.dll" Alias "CreateFileA" _
(ByVal lpFileName As String, ByVal dwdesiredAccess As Integer, ByVal dwShareMode As Integer, _
lpSecurityAtributes As SECURITY_ATTRIBUTES, ByVal dwCreateDisposition As Integer, _
ByVal dwFlagsAndAttributes As Integer, ByVal hTemplateFile As Integer) As Integer
HANDLE CreateFile(
LPCTSTR lpFileName,
DWORD dwDesiredAccess,
DWORD dwShareMode,
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
DWORD dwCreationDisposition,
DWORD dwFlagsAndAttributes,
HANDLE hTemplateFile
);
引数
lpFileName
作成 or オープンするファイル名dwdesiredAccess
ファイルへのアクセス方法を指定する定数の組み合わせdwShareMode
ファイルの共有モードを指定する定数の組み合わせlpSecurityAtributes
取得したハンドルを子プロセスに継承されるかどうかを指定するSECURITY_ATTRIBUTES構造体dwCreateDisposition
継承しない場合は ByVal lpSecurityAtributes As Longと宣言して0を指定する
同一ファイル名が存在するときの処理方法を指定する定数の一つdwFlagsAndAttributes
ファイル属性を指定する定数とhTemplateFile
ファイルの読み書き方法を指定するフラッグとの組み合わせ
Windows98のとき、無効(常に0)戻り値
正常終了のとき ファイルのハンドルdwDesiredAccessの定数
エラーのとき INVALID_HANDLE_VALUE(=&HFFFFFFFF)
dwShareModeの定数
'0 '実際にデバイスにアクセスしないで属性を調べる
Public Const GENERIC_READ = &H80000000 '読み取りモード
Public Const GENERIC_WRITE = &H40000000 '書き込みモード
dwCreationDispositionの定数
'0 '共有しない
Public Const FILE_SHARE_READ = &H1 '他のアプリケーションからの読み込み可能
Public Const FILE_SHARE_WRITE = &H2 '他のアプリケーションから書き込み可能
dwFlagsAndAttributesの定数
Public Const CREATE_NEW = 1 '新しいファイルを作成する
'同一ファイルが存在するときはエラーになる
Public Const CREATE_ALWAYS = 2 '新しいファイルを作る
'同一のファイルが存在するときは上書きする
Public Const OPEN_EXISTING = 3 'ファイルをオープンする
'ファイルが存在しないときはエラーになる
Public Const OPEN_ALWAYS = 4 'ファイルをオープンする
'ファイルが存在しないときは作成する
Public Const TRUNCATE_EXSTING = 5 'ファイルサイズを0にしてオープンする
'ファイルがないときはエラーになる
'このフラッグを指定するときは
'GENERIC_EXISTINGを指定する
Public Const FILE_ATTRIBUTES_ARCHIVE = &H20 'アーカイブ属性(バックアップの対象を表す)
'CreateFile()関数で新規作成したファイルは
'自動的にこの属性になる
Public Const FILE_ATTRIBUTE_HIDDEN = &H2 '隠しファイルの属性
Public Const FILE_ATTRIBUTE_NORMAL = &H80 '他のファイル属性を持たない
'この属性は単独で設定された場合のみ有効
Public Const FILE_ATTRIBUTE_OFFLINE = &H1000 'ファイルデータは物理的にオフライン状態にある
Public Const FILE_ATTRIBUTE_READONLY = &H1 '読み込み専用属性
Public Const FILE_ATTRIBUTE_SYSTEM = &H4 'システムファイル属性
Public Const FILE_ATTRIBUTE_TEMPORARY = &H100 '一時ファイル属性
'可能な限りメモリ中で管理されるので高速にアクセスできる
Public Const FILE_FLAG_WRITE_THROUGH = &H80000000 '中間キャッシュを通さずに直接ディスクに書き込む
Public Const FILE_FLAG_OVERLAPPED = &H40000000 '非同期アクセス(Win95系ではサポートされていない)
Public Const FILE_FLAG_NO_BUFFERING = &H20000000 'ファイルバッファリングを行わない
'(アプリケーションが設定したディスクバッファを使う)
Public Const FILE_FLAG_RANDOM_ACCESS = &H10000000 'ランダムアクセス
Public Const FILE_FLAG_SEQUENTIAL_SCAN = &H8000000 'シーケンシャルアクセス
Public Const FILE_FLAG_DELETE_ON = &H4000000 'ファイルをクローズした後、ファイルを削除する
'FILE_ATTRIBUTE_TEMPORARYと組み合わせると効率的
Public Const FILE_FLAG_POSIX_SEMANTICS = &H1000000 'POSIXによる
'(ファイル名の大文字・小文字を区別する)
Public Const FILE_FLAG_OPEN_REPARSE_POINT = &H200000 'リパース挙動を禁止する
Public Const FILE_FLAG_OPEN_NO_CALL = &H100000 'リモート記憶装置からファイルデータを要求できるが
'書き戻せない