最終更新:2018-04-11 (水) 17:32:31 (2207d)
CreateFile
Top / CreateFile
https://msdn.microsoft.com/en-us/library/windows/desktop/aa363858(v=vs.85).aspx
https://msdn.microsoft.com/ja-jp/library/cc429198.aspx
- 次のオブジェクトを作成するか開き、そのオブジェクトをアクセスするために利用できるハンドルを返します。
- コンソール
- 通信リソース
- ディレクトリ(開くだけで作成は不可能)
- ディスクデバイス(Windows NT/2000 のみ)
- \\.\PHYSICALDRIVE2
- \\.\C:
- ファイル
- メールスロット
- パイプ
HANDLE CreateFile( LPCTSTR lpFileName, // ファイル名 DWORD dwDesiredAccess, // アクセスモード DWORD dwShareMode, // 共有モード LPSECURITY_ATTRIBUTES lpSecurityAttributes, // セキュリティ記述子 DWORD dwCreationDisposition, // 作成方法 DWORD dwFlagsAndAttributes, // ファイル属性 HANDLE hTemplateFile // テンプレートファイルのハンドル );
パラメータ
- hfile = CreateFile (パス名,読み書きの種別,共有の指定,セキュリティ属性,ファイルの生成の要求,ファイルの属性,テンプレートの指定);
lpFileName?
- LPCTSTR
- 作成または開く対象のオブジェクトの名前を保持している、NULL で終わる文字列へのポインタを指定します。
dwDesiredAccess?
- オブジェクトへのアクセスのタイプを指定します。アプリケーションは、読み取りアクセス、書き込みアクセス、読み書きアクセス、デバイス問い合わせアクセスのいずれかを取得できます。次の値の任意の組み合わせを指定します。
値 意味 0 オブジェクトへのデバイス問い合わせアクセスを指定します。アプリケーションは、デバイスにアクセスすることなく、デバイス属性の問い合わせを行えます。 GENERIC_READ(0x80000000) オブジェクトへの読み取りアクセスを指定します。データの読み取りとファイルポインタの移動ができます。読み書きアクセスを行うには、GENERIC_WRITE と共に指定します。 GENERIC_WRITE(0x40000000) オブジェクトへの書き込みアクセスを指定します。データの書き込みとファイルポインタの移動ができます。読み書きアクセスを行うには、GENERIC_READ と共に指定します。
dwShareMode?
例
HIDデバイスのデバイスパス
- \\?\hid#vid_046d&pid_c525&mi_01&col01#9&2f0b9478&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
メモ
- In the ANSI version of this function, the name is limited to MAX_PATH characters.
- To extend this limit to 32,767 wide characters, call the Unicode version of the function and prepend "\\?\" to the path.
Windows/HID
- HidD_GetHidGuid/SetupDiGetClassDevs/SetupDiEnumDeviceInterfacesを使ってHIDデバイスを列挙して
- SetupDiGetDeviceInterfaceDetailでデバイスパスを取得してCreateFileするときに、Read/Writeフラグを指定するとシステムが排他アクセスしているデバイスでオープンに失敗する