Function Reference

_WinAPI_CreateFile

ファイルまたは他のデバイスを作成または開きます。

#Include <WinAPI.au3>
_WinAPI_CreateFile($sFileName, $iCreation [, $iAccess = 4 [, $iShare = 0 [, $iAttributes = 0 [, $pSecurity = 0]]]])

 

パラメータ

$sFileName 作成または開くオブジェクトの名前
$iCreation ファイルに対しておこなう動作:
0 - 新しいファイルを作成します。ファイルが存在する場合、この関数は失敗します。
1 - 新しいファイルを作成します。ファイルが存在する場合、上書きされます。
2 - ファイルを開きます。ファイルが存在しない場合、この関数は失敗します。
3 - ファイルを開きます。ファイルが存在しない場合、この関数はファイルを作成します。
4 - ファイルを開き、そのサイズが0バイトになるように切り捨てます。ファイルが存在しない場合、この関数は失敗します。
$iAccess [オプション]オブジェクトへのアクセス:
1 - 実行
2 - 読み取り
4 - 書き込み
$iShare [オプション]オブジェクトの共有モード:
1 - 削除
2 - 読み取り
4 - 書き込み
$iAttributes [オプション]ファイル属性:
1 - ファイルはアーカイブになります
2 - ファイルは隠しファイルになります
4 - ファイルは読み取り専用になります
8 - ファイルはオペレーティングシステムの一部、またはオペレーティングシステム専用のファイルになります
$pSecurity [オプション]返されたハンドルを子プロセスが継承できるかどうかを決める$tagSECURITY_ATTRIBUTES構造体へのポインタ。
pSecurityが0の場合、ハンドルを継承することはできません。

 

返し値

成功: 指定されたファイルの開かれているハンドル
失敗: 0

 

注意

なし。

 

関連

$tagSECURITY_ATTRIBUTES, _WinAPI_CloseHandle, _WinAPI_FlushFileBuffers, _WinAPI_GetFileSizeEx, _WinAPI_ReadFile, _WinAPI_SetEndOfFile, _WinAPI_SetFilePointer, _WinAPI_WriteFile

 

こちらも参照

MSDNライブラリでCreateFileを検索して下さい。

 


#AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6

#include <WinAPI.au3>

Global $sFile, $hFile, $sText, $nBytes, $tBuffer

; 1) ファイルを作成し、データを書き込む
$sFile = @ScriptDir & '\test.txt'
$sText = 'abcdefghijklmnopqrstuvwxyz'
$tBuffer = DllStructCreate("byte[" & StringLen($sText) & "]")
DllStructSetData($tBuffer, 1, $sText)
$hFile = _WinAPI_CreateFile($sFile, 1)
_WinAPI_WriteFile($hFile, DllStructGetPtr($tBuffer), StringLen($sText), $nBytes)
_WinAPI_CloseHandle($hFile)
ConsoleWrite('1) ' & FileRead($sFile) & @CRLF)

; 2) 位置3から6バイト読み込む
$tBuffer = DllStructCreate("byte[6]")
$hFile = _WinAPI_CreateFile($sFile, 2, 2)
_WinAPI_SetFilePointer($hFile, 3)
_WinAPI_ReadFile($hFile, DllStructGetPtr($tBuffer), 6, $nBytes)
_WinAPI_CloseHandle($hFile)
$sText = BinaryToString(DllStructGetData($tBuffer, 1))
ConsoleWrite('2) ' & $sText & @CRLF)

; 3) 先ほど位置3から読み込んだ6バイトを同じ位置に大文字で書き込む
DllStructSetData($tBuffer, 1, StringUpper($sText))
$hFile = _WinAPI_CreateFile($sFile, 2, 4)
_WinAPI_SetFilePointer($hFile, 3)
_WinAPI_WriteFile($hFile, DllStructGetPtr($tBuffer), 6, $nBytes)
_WinAPI_CloseHandle($hFile)
$tBuffer = 0
ConsoleWrite('3) ' & FileRead($sFile) & @CRLF)

; 4) ファイルサイズを12バイトに切り捨て
$hFile = _WinAPI_CreateFile($sFile, 2, 4)
_WinAPI_SetFilePointer($hFile, 12)
_WinAPI_SetEndOfFile($hFile)
_WinAPI_CloseHandle($hFile)
ConsoleWrite('4) ' & FileRead($sFile) & @CRLF)

FileDelete($sfile)