[c#]USB接続デバイス管理 4-構造体の準備

デバイスの状態の検知が終わりましたので、状態操作のために『setupapi.dll』を利用します。
ここで注意点ですが、ビルドや動作状態が32bitである必要があります。
管理人は Windows7(64bit)にて動作確認を行いましたが、32bitビルドを行う必要がありました。
[IntPtr].sizeの差などの要因があるため)
まずは状態の格納を行うための構造体等を用意。

        [Flags()]
        internal enum SetupFlag
        {Default = 1, Present = 2,AllClasses = 4, Profile = 8,DeviceInterface = (int)0x10}

        internal enum Function
        {
            Select = 1,Install = 2,Properties = 4,
            Remove = 5,FoundDevice = 7,PropertyChange = (int)0x12,
        }

        /// デバイス状態格納
        internal enum StatusAction
        {Enable = 1, Disable = 2,PropChange = 3, Start = 4,Stop = 5}

        [Flags()]
        internal enum Scope
        {Global = 1, ConfigSpecific = 2,ConfigGeneral = 4}

        [StructLayout(LayoutKind.Sequential)]
        internal struct DeviceInfoData
        {
            public int Size;
            public Guid ClassGuid;
            public int DevInst;
            public int Reserved;
        }

        [StructLayout(LayoutKind.Sequential)]
        internal struct PropertyParameters
        {
            public int Size;
            public Function MyFunction;
            public StatusAction StateChange;
            public Scope Scope;
            public int Profile;
        }

これらを『setupapi.dll』利用の際の引数などするための受け皿とします。

【各ページへのリンク】

この記事へのコメント