コード例 #1
0
        internal static T GetObjectPropertyInfo <T>(
            IntPtr driverStoreHandle,
            string objectName,
            DevPropKey propertyKey,
            DriverStoreObjectType objectType = DriverStoreObjectType.DriverPackage)
        {
            const int bufferSize        = 2048;
            IntPtr    propertyBufferPtr = Marshal.AllocHGlobal(bufferSize);

            if (NativeMethods.DriverStoreGetObjectProperty(
                    driverStoreHandle,
                    objectType,
                    objectName,
                    ref propertyKey,
                    out DevPropType propertyType,
                    propertyBufferPtr,
                    bufferSize,
                    out uint propertySize,
                    DriverStoreSetObjectPropertyFlags.None))
            {
                if (propertySize > 0)
                {
                    return(DeviceHelper.ConvertPropToType <T>(propertyBufferPtr, propertyType));
                }
            }

            Marshal.FreeHGlobal(propertyBufferPtr);

            return(default);
コード例 #2
0
 internal static extern bool DriverStoreEnumObjects(
     IntPtr hDriverStore,
     DriverStoreObjectType objectType,
     DRIVERSTORE_LOCK_LEVEL flags,
     EnumObjectsDelegate callbackRoutine,
     IntPtr lParam
     );
コード例 #3
0
 internal static extern bool DriverStoreSetObjectProperty(
     IntPtr driverStoreHandle,
     DriverStoreObjectType objectType,
     string objectName,
     ref DevPropKey propertyKey,
     DevPropType propertyType,
     ref uint propertyBuffer,
     int propertySize,
     DriverStoreSetObjectPropertyFlags flag);
コード例 #4
0
        internal static bool EnumDeviceObjects(
            IntPtr hDriverStore,
            DriverStoreObjectType ObjectType,
            string ObjectName,
            IntPtr lParam)
        {
            var devicesInfo = (List <DeviceDriverInfo>)GCHandle.FromIntPtr(lParam).Target;

            devicesInfo.Add(new DeviceDriverInfo(
                                GetObjectPropertyInfo <string>(hDriverStore, ObjectName, DeviceHelper.DEVPKEY_Device_DriverDesc, ObjectType),
                                GetObjectPropertyInfo <string>(hDriverStore, ObjectName, DeviceHelper.DEVPKEY_Device_DriverInfPath, ObjectType),
                                GetObjectPropertyInfo <DateTime>(hDriverStore, ObjectName, DeviceHelper.DEVPKEY_Device_DriverDate, ObjectType),
                                Version.Parse(GetObjectPropertyInfo <string>(hDriverStore, ObjectName, DeviceHelper.DEVPKEY_Device_DriverVersion, ObjectType)),
                                GetObjectPropertyInfo <bool?>(hDriverStore, ObjectName, DeviceHelper.DEVPKEY_Device_IsPresent, ObjectType)));

            return(true);
        }