NDIS6 LWF installation problems via DPInst and DIFxAPI - filter

We have a NDIS6 LWF driver which installs fine if installed from the adapter's property sheet, but does not install neither via DPInst, nor via DriverPackageInstall function from DIFxAPI.dll
Apart from vendor info and descriptions, it differs from the NDIS6 LWF Passthru sample in the following ways:
binds only to WLAN medium:
HKR, Ndi\Interfaces, FilterMediaTypes,,"wlan"
specifies DriverPackageType=Network (a requirement of DIFxAPI)
passthru sample says "compression" here, we say "custom"
HKR, Ndi,FilterClass,, custom
The current full version of the INF is stored at https://docs.google.com/file/d/0By4TPkL7aR-RelRSZC1PZmdQYnc/edit?pli=1 because it's too big to quote it here.
So, the question is: what else does this INF require in order to be installed via DIFxAPI? (It currently installs fine via the adapter's property sheet)

You will need to update NetCfgInstanceId in inf file and have same id as UniqueName in registration attributes at driver entry.
You can use following site to have a new id generated and replace your present:
www.uuidgen.com

Related

How does PnP manager determine the appropriate function driver?

I am learing the loading process of Windows Driver.
But I cannot understand a part of the following article.
https://learn.microsoft.com/ja-jp/windows-hardware/drivers/install/step-3--the-driver-for-the-device-is-installed
In this article, there is the following description.
"4. The PnP manager loads the appropriate function driver and any optional filter drivers for the device."
I have a question about above description.
How does the PnP manager determine the appropriate function driver?
For example,
when a USB memory is plugged into a Windows PC then PnP manager will load disk.sys after loading a driver relating USB.
In this case, I want to know why PnP manager could judge that the device corresponds to disk.sys.
(seeing somewhere in registry? sending some requests to bus driver? and so on.. )
when bus driver detect and report PDO device PnP manager send several IRP_MJ_PNP to PDO device. including IRP_MN_QUERY_ID for get Device Identification Strings
then formated registry key path in form
\REGISTRY\MACHINE\SYSTEM\CurrentControlSet\Enum\<BusQueryDeviceID>\<BusQueryInstanceID>
in place <BusQueryDeviceID> string returned by device for BusQueryDeviceID and in place <BusQueryInstanceID> string returned by device for BusQueryInstanceID (Parameters.QueryId.IdType)
this key opened or created. then was query for BusQueryHardwareIDs and BusQueryCompatibleIDs. result of this query saved in HardwareID and CompatibleIDs REG_MULTI_SZ values.
and then PnP manager look for Service REG_SZ value under this key - if it already exist - the driver ( \REGISTRY\MACHINE\SYSTEM\CurrentControlSet\Services\<Service>) loaded and it AddDevice called with this PDO. if this value yet not set - was search via installed inf files in system - for best match HardwareID and CompatibleIDs. if found driver - result saved under Service REG_SZ value, for not search next time

How to install upper driver for class?

I created a filter driver and I just want to install it for the Serial port. I know that the existing driver class is "Ports" so I changed inf file as follows:
[Version]
Signature="$Windows NT$"
Class=Ports
ClassGUID={4D36E978-E325-11CE-BFC1-08002BE10318}
Provider=%Provider%
DriverVer=03/17/2001,1.0.0.1
CatalogFile=KmdfSamples.cat
Note that the classguid is the same as in system for serial port. So I does not know how to install it for specyfic class, I have to manally edit "UpperFilter" field in registry?
I also can not find out from the microsoft documentation if I have to specyfi device in such a way (I do not know the device name, but i know whole class id).
So the questions are:
How to install upper filter for existing class?
Have I specyfi the device hardware id that I do not know?
Any repsonses will be greatly appreciated ;)

Using fixed device table instead of udev

I'd like to generate a fixed device table in my embedded Linux image and skip using udev.
Following the Yocto Dev Manual, chapter* 5.18.1*, I've set the 2 variables USE_DEVFS="0" and IMAGE_DEVICE_TABLES = "device_table-mymachine.txt" and removed udev from the variable VIRTUAL-RUNTIME_dev_manager.
But the table was not created and I still need udev to populate devices.
Does anyone have an idea?
I am not sure how you have defined device_table-mymachine.txt but this is device_table-minimal.txt for example.
Secondly, without udev, you need to add another device manager such as BusyBox's mdev by specifying it in your conf/local.conf file as follow:
VIRTUAL_RUNTIME_dev_manager = "mdev"
Note that this will work only with core images that include packagegroup-core-boot

How can I install the Sybase JDBC driver for ColdFusion?

I just want to ask for some help regarding the JDBC driver and configuring a ColdFusion datasource. After I save, by clicking the submit button, it generates this error:
Connection verification failed for data source: mydtsrcName java.sql.SQLException: No suitable driver found for jdbc:jtds:sybase://127.0.0.1:1313/test.db The root cause was that: java.sql.SQLException: No suitable driver found for jdbc:jtds:sybase://127.0.0.1:1313/test.db
Can anyone explain the problem? How can I install the JDBC driver in ColdFusion?
Here are the settings for the DSN that I configured in the ColdFusion Administrator:
CF Data Source : my_dtsrc
JDBC URL : jdbc:sybase:Tds:127.0.0.1:3939
Driver Class : com.sybase.jdbc3.jdbc.SybDriver
Driver Name : SybDriver
User name : myusername
Password : mypwd
Did I miss something ?
(Extended from comments ...)
Did you add the driver jar to the CF class path and restart the CF server first? When the CF server starts, it only checks specific locations for jars/classes. Collectively, those locations are referred to as the "CF class path". Your driver jar must be placed somewhere within the CF class path, or it will not be detected. Hence the error message "No suitable driver found".
There are several locations CF checks automatically when it starts, such as:
{cf_root}\lib
{cf_root}\WEB-INF\lib
The simplest option is to just drop your jar in one of those directories. Then restart the service so CF detects the jar. Afterward, CF will be able to locate the driver class and you can create your "Other" datasource. (Note, the driver class name is case-sensitive)
NB: Technically you can place a jar anywhere, as long as it is accessible to the CF server and you add it to the class path in jvm.config. (See this blog entry for details. It is old, but still relevant). But again, it is simpler to just drop it in one of the directories CF checks automatically. Then there is no need to muck around with the jvm.config file.

Storing data in Kernel mode driver

I have an array in my kernel mode driver. Is it possible for the driver to save the array data and on load restore the same?
Assuming your array is not incredibly large you can use the registry to store this type of information.
You can set your driver to open a specific registry location relative to your driver instance. If it's missing your driver should contain a default value (you can also set your INF file to put this value in the registry on install). Then, as your data changes and your device unloads rewrite the data to the registry to be looked up the next time your device loads.

Resources