예제 #1
0
		internal virtual Device CreateDevice(DeviceClass deviceClass, Native.SP_DEVINFO_DATA deviceInfoData, string path, int index) {
			return new Device(deviceClass, deviceInfoData, path, index);
		}
예제 #2
0
 internal Volume(DeviceClass deviceClass, Native.SP_DEVINFO_DATA deviceInfoData, string path, int index)
     :base(deviceClass, deviceInfoData, path, index)
 {
 }
예제 #3
0
		internal Guid GetProperty(Native.SP_DEVINFO_DATA devData, int property, Guid defaultValue) {
			if (devData == null)
				throw new ArgumentNullException("devData");

			int propertyRegDataType = 0;
			int requiredSize;
			int propertyBufferSize = Marshal.SizeOf(typeof(Guid));

			IntPtr propertyBuffer = Marshal.AllocHGlobal(propertyBufferSize);
			if (!Native.SetupDiGetDeviceRegistryProperty(_deviceInfoSet,
					devData,
					property,
					out propertyRegDataType,
					propertyBuffer,
					propertyBufferSize,
					out requiredSize)) {
				Marshal.FreeHGlobal(propertyBuffer);
				int error = Marshal.GetLastWin32Error();
				if (error != Native.ERROR_INVALID_DATA)
					throw new Win32Exception(error);
				return defaultValue;
			}

			Guid value = (Guid)Marshal.PtrToStructure(propertyBuffer, typeof(Guid));
			Marshal.FreeHGlobal(propertyBuffer);
			return value;
		}
예제 #4
0
 internal override Device CreateDevice(DeviceClass deviceClass, Native.SP_DEVINFO_DATA deviceInfoData, string path, int index)
 {
     return new Volume(deviceClass, deviceInfoData, path, index);
 }