CreateFile

機能
ファイルを作成、または、オープンする
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構造体
継承しない場合は ByVal lpSecurityAtributes As Longと宣言して0を指定する
dwCreateDisposition
同一ファイル名が存在するときの処理方法を指定する定数の一つ
dwFlagsAndAttributes
ファイル属性を指定する定数と
ファイルの読み書き方法を指定するフラッグとの組み合わせ
hTemplateFile
Windows98のとき、無効(常に0)
戻り値
正常終了のとき         ファイルのハンドル
エラーのとき              INVALID_HANDLE_VALUE(=&HFFFFFFFF)
dwDesiredAccessの定数

'0                                                          '実際にデバイスにアクセスしないで属性を調べる
Public Const GENERIC_READ = &H80000000                      '読み取りモード
Public Const GENERIC_WRITE = &H40000000                     '書き込みモード
dwShareModeの定数

'0                                                          '共有しない
Public Const FILE_SHARE_READ = &H1                          '他のアプリケーションからの読み込み可能
Public Const FILE_SHARE_WRITE = &H2                         '他のアプリケーションから書き込み可能
dwCreationDispositionの定数

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を指定する
dwFlagsAndAttributesの定数

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              'リモート記憶装置からファイルデータを要求できるが
                                                             '書き戻せない