WindowsAPI

SPDRP_CLASSGUID

SPDRP_CLASSGUIDで、クラスGUIDを取得する。SetupDiSetDeviceRegistryPropertyW 関数 (setupapi.h) - Win32 apps | Microsoft LearnSPDRP_CLASSGUID.cppで、とする。 こうなる。こうなる。Sample/winapi/SPDRP_CLASSGUID/SPDRP_CLASSGUID/src/SPDRP_CLASSGUI…

SPDRP_CLASS

SetupDiGetDeviceRegistryPropertyの第3引数に、SPDRP_CLASSを指定して、クラス名を取得する。SetupDiSetDeviceRegistryPropertyW 関数 (setupapi.h) - Win32 apps | Microsoft LearnSPDRP_CLASS.cppで、とする。 サイズはバイト単位だが、取得した文字列は…

SetupDiGetDeviceRegistryProperty

SetupDiGetDeviceRegistryPropertyで、指定のプロパティを取得する。SetupDiGetDeviceRegistryPropertyW 関数 (setupapi.h) - Win32 apps | Microsoft Learn今回は、クラスプロパティのサイズだけ取得。 SDGDRP.cppで、とすると、 こうなる。こうなる。 サイ…

GUID_DEVINTERFACE_DISK

GUID_DEVINTERFACE_DISKは、定義済みのディスクデバイスインターフェースクラスGUID。GUID_DEVINTERFACE_DISK - Windows drivers | Microsoft Learnディスクデバイス一覧を列挙する。 GUID_DEVINTERFACE_DISK.cppで、こうすると、 メインのCドライブとUSBHDD…

GUID_DEVINTERFACE_VOLUME

GUID_DEVINTERFACE_VOLUMEは、定義済みのボリュームデバイスインターフェースクラスGUID。https://learn.microsoft.com/en-us/windows-hardware/drivers/install/guid-devinterface-volumeボリュームデバイス一覧を列挙する。 GUID_DEVINTERFACE_VOLUME.cpp…

SetupDiEnumDeviceInfo

SetupDiEnumDeviceInfoで、SP_DEVINFO_DATAを列挙できる。パソコンに接続されているデバイスを一覧する(UsefullCode.net)接続されているすべてのデバイスのSP_DEVINFO_DATAを列挙する。 SetupDiEnumDeviceInfo.cppで、SetupDiGetClassDevsの第1引数をNULL、…

IOCTL_STORAGE_GET_DEVICE_NUMBER

IOCTL_STORAGE_GET_DEVICE_NUMBERで、デバイスナンバーを取得する。IOCTL_STORAGE_GET_DEVICE_NUMBER (ntddstor.h) - Windows drivers | Microsoft Learnデバイスパスからデバイスナンバーも取得してみる。 I_S_G_D_N.cppで、とする。 赤同士、青同士、同じ…

DeviceIoControl

DeviceIoControlで、コントロールコードをデバイスドライバに送信し、デバイスを操作する。DeviceIoControl 関数 (ioapiset.h) - Win32 apps | Microsoft Learn How to Prepare a USB Drive for Safe Removal - CodeProjectドライブレターとデバイスパスが同…

GetVolumeNameForVolumeMountPoint

GetVolumeNameForVolumeMountPointで、ボリュームマウントポイントからボリューム名を取得できる。GetVolumeNameForVolumeMountPointW 関数 (fileapi.h) - Win32 apps | Microsoft Learn ドライブレターからボリューム名を取得 - わびさびサンプルソースボリ…

GetLogicalDriveStrings

GetLogicalDriveStringsを使えば、有効なドライブレター一覧を、文字列で取得することもできる。GetLogicalDriveStringsW function (fileapi.h) - Win32 apps | Microsoft Learn 有効なドライブ名を調べる - プログラミングのメモ帳(C/C++/HSP)GetLogicalDri…

GetLogicalDrives

GetLogicalDrivesで、有効なドライブ一覧を取得する。GetLogicalDrives 関数 (fileapi.h) - Win32 apps | Microsoft Learn GetLogicalDrives戻り値はビットマスクになっていて、1番下の0番目ビットが立っていたら'A'ドライブが有効、1番目が立っていたら'B'…

SP_DEVINFO_DATA

SetupDiGetDeviceInterfaceDetailでは、SP_DEVINFO_DATAも、ついでに取得できる。SP_DEVINFO_DATA (setupapi.h) - Win32 apps | Microsoft LearnSP_DEVINFO_DATA.cppで、spdd.DevInstを出力してみる。 こうなった。こうなった。Sample/winapi/SP_DEVINFO_DAT…

SP_DEVICE_INTERFACE_DETAIL_DATA

詳細情報、SP_DEVICE_INTERFACE_DETAIL_DATAを取得する。SP_DEVICE_INTERFACE_DETAIL_DATA_W (setupapi.h) - Win32 apps | Microsoft Learnとはいえ、構造体サイズcbSizeと、いろいろなところで使うデバイスパスDevicePathしかない。 SP_D_I_D_D.cppで、pspd…

SetupDiGetDeviceInterfaceDetail

詳細情報を取得するには、SetupDiGetDeviceInterfaceDetailを使う。SetupDiGetDeviceInterfaceDetailW 関数 (setupapi.h) - Win32 apps | Microsoft Learn詳細情報は、SP_DEVICE_INTERFACE_DETAIL_DATA構造体ポインタが挿すメモリに格納される。 実は、構造…

SP_DEVICE_INTERFACE_DATA

SP_DEVICE_INTERFACE_DATA構造体に、デバイスインターフェースデータが格納されている。SP_DEVICE_INTERFACE_DATA (setupapi.h) - Win32 apps | Microsoft LearnSP_DEVICE_INTERFACE_DATA.cppで、前回、Reservedだけ変わってるのをデバッガで見たので、値を…

SetupDiEnumDeviceInterfaces

SetupDiEnumDeviceInterfacesは、デバイスインターフェースデータを列挙する。SetupDiEnumDeviceInterfaces 関数 (setupapi.h) - Win32 apps | Microsoft Learn GUIDからデバイスドライバのデバイスインターフェース名を取得するSetupDiEnumDeviceInterfaces…

SystemParametersInfo

SystemParametersInfoで、システムパラメータを取得したり、設定できる。SystemParametersInfoW 関数 (winuser.h) - Win32 apps | Microsoft Learnタスクバーを除いたデスクトップ領域のサイズを取得する。 resource.hで、ID_SYSTEM_INFOを追加。 SystemPara…

SHFILEINFO

SHFILEINFOは、ファイル情報を持つ構造体。SHFILEINFOW (shellapi.h) - Win32 apps | Microsoft Learnアイコンハンドルを取得してみる。 SHFILEINFO.cppで、SHGFI_ICONを追加。 WM_PAINTで、今回はsfi.hIconの値を描画。 (アイコン自体の描画はいずれ・・・…

SHGetFileInfo

SHGetFileInfoで、指定されたパスのファイル情報を取得する。SHGetFileInfoW 関数 (shellapi.h) - Win32 apps | Microsoft LearnGetFileTitleの項のソースコードをベースに、SHFILEINFO型変数sfiをstaticで用意しておく。Openが選択された時の最後に、SHGetF…

PathFindExtension

PathFindExtensionは、指定されたパスからドット(.)を含む拡張子部分だけを抽出する。PathFindExtensionA 関数 (shwlapi.h) - Win32 apps | Microsoft LearnPathFindExtension.cppで、こう書く。 "text1.txt"から".txt"を抽出できた。"text1.txt"から".txt"…

GetFileTitle

ファイル名部分の抽出は、GetFileTitleでもできる。GetFileTitleW function (commdlg.h) - Win32 apps | Microsoft Learnコモンダイアログの関数なので種類が違う。comdlg32.libのリンクは要らなかった。 以前やったOPENFILENAMEの項のソースコードをベース…

PathFindFileName

PathFindFileNameは、指定されたパスからファイル名部分だけを抽出する。PathFindFileNameA 関数 (shwlapi.h) - Win32 apps | Microsoft Learnこれはまたshlwapi.libのリンク必要。 PathFindFileName.cppは、こう書く。 戻り値でファイル名文字列のポインタ…

SetCurrentDirectory

SetCurrentDirectoryは、指定のパスをこのプロセスの現在のディレクトリパスとして設定する。SetCurrentDirectory function (winbase.h) - Win32 apps | Microsoft LearnSetCurrentDirectory.cppで、ややこしいんだけど・・・。 現在のディレクトリパスを取…

GetCurrentDirectory

GetCurrentDirectoryは、このプロセスにおける現在のディレクトリパスを取得する。GetCurrentDirectory 関数 (winbase.h) - Win32 apps | Microsoft Learnshlwapi.libではなく、kernel32.libの関数なので、shlwapi.libのリンクは不要。 GetCurrentDirectory.…

GetFullPathName

GetFullPathNameで、指定された相対パスから絶対パスを取得する。GetFullPathNameW 関数 (fileapi.h) - Win32 apps | Microsoft LearnGetFullPathName.cppで、相対パスなら、GetFullPathNameで絶対パスとファイル名部分を取得する。 "."だとreleaseフォルダ…

PathIsRelative

PathIsRelativeは、指定されたパスが相対パスかどうかをチェックする。PathIsRelativeW 関数 (shlwapi.h) - Win32 apps | Microsoft LearnPathIsRelative.cppで、argv[1]をチェックする。 "C:\"から始まるtext1.txtは絶対パス"C:\"から始まるtext1.txtは絶対…

PathIsDirectory

PathIsDirectoryは、指定されたパスがディレクトリかどうかチェックする。PathIsDirectoryW 関数 (shlwapi.h) - Win32 apps | Microsoft LearnPathIsDirectory.cppで、PathFileExistsの判定の後に、PathIsDirectoryの判定もする。 text1.txtに加えて、ディレ…

PathFileExists

PathFileExistsで、指定のパスにファイルが存在するかチェックする。PathFileExistsA 関数 (shlwapi.h) - Win32 apps | Microsoft LearnPathFileExists.cppで、コマンドライン引数のargv[1]に渡したファイルパス文字列を、PathFileExistsに渡して判定。 シェ…

GetFocus

GetFocusで、フォーカスを取得したウィンドウのハンドルを取得できる。GetFocus 関数 (winuser.h) - Win32 apps | Microsoft LearnGetFocus.rcで、Item8, Item8-1追加。 GetFocus.cppで、GetFocusで取得したハンドルが、hEdit1と同じなら"Edit1"、hEdit2と同…

SetFocus

SetFocusで、指定のウィンドウハンドルのウィンドウに、フォーカスを与える。SetFocus 関数 (winuser.h) - Win32 apps | Microsoft LearnWM_SETFOCUS辺りはプロジェクト作り直してたけど、ここからまたShowCaretの項のプロジェクトベースに。 SetFocus.rcで…