Csenteri Barna

Hi

What installation method is recommended for a sideshow driver

I tried DPInst.exe shipped with the DDK but it doesn't works (installs something because second time it sees that already was installed but the device does not appears in the device list so most probably it does only a preinstall)

Is there a common way to install UMDF drivers

I don't need any fancy stuff, just to be possible for a user starting a simple exe or msi which does the install for him (instead of going to control panel/add device/manual install)

Regards,

Barna Csenteri



Re: Windows SideShow Development Installkit for a sideshow driver?

tenorwoody85

Hi Barna,

It sounds like you're talking about 2 seperate issues here.

To install a Windows SideShow device you need to conquer 2 things:

1) Installing the driver into the Windows Driver Store

2) Initiating Device Discovery to pair your physical (or virtual) device with a driver

DPInst is one of the mechanisms for pre-installing a driver into the device store. It does not however handle the device discovery.

A device enumator will handle the device discovery (e.g. USB, Bluetooth). Once your enumerator detects the device it will then instantiate a driver instance and add your device to the Windows SideShow Control Panel. Your inf file is the key to device discovery. See the WDK for information on Device Identification Strings.

If you do not want to go the 'device discovery' route then you can always install your device as a non-pnp device using the Setup API's. The WDK provides alot of methods to remove the automatic discovery process (see SetupDiRegisterDeviceInfo).

This topic is quite large though so I suggest that you drill into the WDK documentation on device discovery and driver installation.

I hope this answers your questions,






Re: Windows SideShow Development Installkit for a sideshow driver?

Dan Polivy - MSFT

Barna,

The recommended way to install a driver is through Plug and Play (PnP), as that provides the best user experience. We would really like to avoid having 'legacy' devices which are manually installed and always running regardless of the device's connected state. Ideally you'll be able to take advantage of PnP via your device's connectivity bus, and then just use DPInst to populate the driver store with the driver, so when PnP kicks in, it will automatically be able to find it.

Please note that you should also submit your driver to WHQL when it is final so distribution can occur via Windows Update, as well as occur without requiring the user to click on a consent prompt during installation.

Dan





Re: Windows SideShow Development Installkit for a sideshow driver?

Csenteri Barna

Hi

I will try to do it the PnP way - I have to dig into the documentation for this.

I still have something uncertain: I need to save settings for a given device (even if it's unplugged next time when it's plugged in the settings should be restored). Does the PnP provides suport for this or only the 'legacy' driver style Those settings should be individual (I can have two devices with the same type)

Same problem with the attachments between gadgets and sideshow devices - they are kept or every time I plug in a PnP sideshow device, the user have to make the connections

Regards,

Barni





Re: Windows SideShow Development Installkit for a sideshow driver?

tenorwoody85

Hi,

If the device is unplugged (but not removed/delete) then SideShow will remember the association between gadgets and devices for the next time it is plugged in.

As for saving settings you could always try the registry.

The Setup API provides a few methods ("SetupDiOpenDevRegKey" or "SetupDiCreateDevRegKey"). These methods provide access to per-device registry settings. The WDK provides a good amount of information on how to use them.

Hope this helps,

-james






Re: Windows SideShow Development Installkit for a sideshow driver?

Csenteri Barna

Hi

I managed to store my settings with IWDFNamedPropertyStore (recommended for drivers under Vista). It works - I will see what happens together with the PnP stuff once I manage to make the PnP connection Smile

Right now I cannot find a way to trigger the PnP store when my device is plugged in - I'm playing around with the INF strings but without a result until now.

The device is a HID one - I tried to use the HID hardware id, the USB one, nothing happend. I suppose I have to try more Smile

If you have any hint or You already done such a thing any help would be appreciated. I'm not too used with drivers - worked mostly in server-streaming-home automation area but times and jobs are changing and now I have to learn fast Smile

Regards,

Barni





Re: Windows SideShow Development Installkit for a sideshow driver?

Dan Polivy - MSFT

Barni,

Yup, the IWDFNamedPropertyStore is your best bet for saving device properties in an easy to access manner.

Regarding installation--do you have any control over the device firmware and how it enumerates Can you make it a composite device, where you have a second interface exposed that causes the SideShow driver to load, but ultimately the SideShow driver just uses the HID APIs to talk to the device (I'm assuming that's what you do now)

Dan





Re: Windows SideShow Development Installkit for a sideshow driver?

Csenteri Barna

Hi

I don't have control for one of the devices since it's already on the market Smile

It's was sold more sooner than Vista was released so I have to deal with what I have.

If you mean under HID API the hidsdi functions than yes - I'm using those ones together with the primary i/o functions like SetupDiXXXX and CreateFile.

I think that my problem is that the device's primary driver is considered the HID driver and the sideshow one is not loaded. It wouldn't be a solution to replace the HID driver either since I need both.

Regards,

Barni





Re: Windows SideShow Development Installkit for a sideshow driver?

Csenteri Barna

Hi

I made a bunch of trials - now I ended up in a situation where the PnP recognizes that I've installed something but reacts in a strange way:

Instead of installing my driver on the top of the HID, it just moves the "HID-compliant device" from the Device-manager tree/Human Interface Devices section to the Windows SideShow section but the driver remains the HID one. So instead of having two drivers (the HID one at the Human Interface Devices and the Sideshow LCD in the Windows SideShow section) I have only the HID one but moved to the Sideshow section.

My inf installing section looks like this:
[LCDDisplay.NTx86]
%LCD.DeviceDesc% =LCD_Install,UMB\LCD,HID\VID_04D8&PID_0002&REV_0001&Col01

I also tried this with the same result:
[LCDDisplay.NTx86]
%LCD.DeviceDesc% =LCD_Install,HID\VID_04D8&PID_0002&REV_0001&Col01

The [LCD_Install] section calls the addreg and copyfiles section - it's executed very well when the inf is installed manually so this shouldn't be a problem.

It seems that this manner doesn't work with sideshow drivers - what kind of INF entries do I have to use for a HID device with the hardware ID HID\VID_04D8&PID_0002&REV_0001&Col01 to have both drivers (the HID one and my one) at the end

I asked on the Newsgroup (device.drivers) but they said that the Sideshow team will be asked so I'm back here again Smile

Regards,

Barni





Re: Windows SideShow Development Installkit for a sideshow driver?

James Woodall

Have you considered creating a filter driver to handle the SideShow part of your device This way it won't replace the existing driver but should allow you to 'attach' the SideShow functionality.

I noticed that there is a filter driver UMDF sample in the WDK to get you started.

-james






Re: Windows SideShow Development Installkit for a sideshow driver?

Csenteri Barna

Hi

It might be a solution - I already thought about that.

My problem is that I already have two drivers following the Sideshow samples, they are working well, I spent a bunch of worktime on them (I have two LCD's) and I would like to avoid switching now to filter drivers since this means shifting in the schedule and I don't really have time for that.

The driver guys told me that it should work as a function driver as well (HID is not a real function driver according to them and my sideshow driver could be that one). I don't know what to believe because obviously Vista doesn't likes the idea to keep the HID and add my driver on the top.

Regards,

Barni