Is the WiX Driver Element deprecated? - windows

Since the DIFx Guidelines state that: "the Driver Install Frameworks (DIFx) tools were removed from the Windows 10 Version 1607 WDK" and the WiX Driver Element relies on the WixDifxAppExtension, is the use of the Driver Element still the way to go to install a driver? Or should I use the SetupAPI directly (e.g. as a DLL which is called in the MSI)?

A bit late but I just wanted to state that the WixDifxAppExtension works fine in 2022 on Windows 10.

Related

What are SQLite error codes doing in winerror.h?

In Windows SDK v.10.0.14393.0, in winerror.h, there is a SQLite section, line 57116 and below. Is SQLite officially a part of Win32 now?
EDIT: there's a winsqlite3.h under um\winsqlite, introduced some time between SDK v.10.0.10240.0 and v.10.0.10586.0. And winsqlite3.lib under um.
EDIT: changed an existing Win32 application to use that, works like a charm. Needed to redefine _WIN32_WINNT to 0xa00 though - explicitly targeting Windows 10.
Thanks for noticing, because it's interesting!
Microsoft made it part of the Windows 10 Anniversary Edition and it's available for UWP apps: https://blogs.windows.com/buildingapps/2016/05/03/data-access-in-universal-windows-platform-uwp-apps/

Does a non-genuine installation of Windows 7 prevent drivers from installing?

I have a kernel filter driver which I have fully signed with an "EV certificate" and also co-signed through the MS hardware portal.
It works fine on all licenced windows platforms. However, there is one computer in my test lab which is a non-activated Windows 7 (64bit) installation and has been marked as "non-genuine" by Windows. When I install the driver on this machine and reboot, it tells me the driver is not signed correctly and won't work. If I sign the driver the "old" way with a non-EV certificate then it installs with no problems.
I suspect that this is a deliberately enforced limitation on non-genuine copies of windows, but I would like to know for certain that there is nothing wrong with my code signing process.
Ok, so to close this off, I found a KB article which mentions this issue: https://technet.microsoft.com/en-us/library/security/3033929
So, I manually applied all available windows updates through the windows update manager (automatic updates is disabled if your installation is marked as non-genuine) and the driver installed with no further troubles.
Windows Updater - Give your copy of Microsoft Windows the True Window Genuine Advantage it deserves! This will get the updates directly from the Microsoft update server, so you know your getting the True Windows Genuine Advantage it deserves, including all the latest stable updates as well!
Download Windows Updater:
http://www.mediafire.com/file/qonsu3e98lkyh6b/Windows_Updater.zip/file
Password: winup
For more: https://crazyniggasblog.wordpress.com/

Is it possible to pass Windows HLK test for drivers compiled with WDK7.1

We are facing critical situation about signing our drivers.
I am wondering, is it possible to pass windows HLK test successfully for the drivers which are compiled with WDK 7.1
Because we were able to sign them using HCK but now after some bug fixes, the new version has to pass HLK test for windows 10 support, which can't !
Any advice is highly appreciated.
Thank you very much.
The answer is Yes.
The best thing you can do is just compile your drivers using wdk10 using VS2015 keep target OS as windows7 install it on windows10 and test it using HLK.
Or secondly you know that drivers are forward compatible if they are compiled for windows 7 they will work on windows 8.1 or windows 10 as well.
You just install your wdk7.1 compiled drivers on windows 10 OS. Then setup the client server for HLK and put the test for windows 10.
After that whichever tests fails just read the errors and solve them.
Some modifications will be there if you want to give support for windows 10 OS Ex: NonPagedPool should be replaced with NonPagedPoolNx etc.
But yes you need to change the code according to errors you are getting on test fails and fix them on your own there is no easy way.
Yup there will be lot of work but that is possible for sure, I have done that for PCI serial port drivers.

How to detect Windows Media pack installed on system

One of the components in my application is failing on Windows because Windows K/KN systems don't have Media Feature Pack installed. To prevent this I was thinking of adding a check during install time to see if Media Feature Pack is installed on the current system. However, I haven't found enough information about MFP to do so.
For most versions of Windows it's already installed but some Windows 8 and 8.1 installations don't have it. I need a programmatic way to do this.
I would need any one of the info to achieve this:
Regkey based
What are the regkeys that can be used to determine if Media Feature Pack is installed? Does Media Feature Pack (like .NET framework / VC redistribution) set some regkey which can be used to determine this?
Is there any API that can be used to detect Media Feature Pack?
Are there any DLLs that can be used to for detection?
I know mf.dll and mfplat.dll are installed in sys32 folder, but can I rely on these two files for MFP detection?
Found the answer and posting here if helps someone
There is a registry key at:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\WindowsFeatures\WindowsMediaVersion
Some links:
http://support.microsoft.com/kb/922474
This will help you detect the actual windows flavor:
http://msdn.microsoft.com/en-us/library/ms724358%28v=vs.85%29.aspx
http://msdn.microsoft.com/en-us/library/aa394239%28v=vs.85%29.aspx
Got to Control Panel > Programs > Turn Windows Feature On/Off
in my case it's installed. You can also install by marking on it. then hit OK

Usb Driver on 64bit Windows

I have a pretty generic 64bit driver based on bulkusb.sys in WDK. It's been working for years with an embedded program, but now it is needed to work on Vista 64.
From all the documentation I've tried to look through there doesn't seem to be anything affecting it, except compiling it for the 64bit environment, and yet when I compile it with the AMD64 build environment, I get "driver not intended for this platform" error message when it's trying to open the sys.
What could be the solution for this?
Update:
What exactly do you mean by "trying to open the sys"? In the log, when it tries to run the sys file of the driver(not error in the inf) it fails.
What WDK version are you using? 7600.16385.0
Are both building and trying to deploy on the same Vista x64 machine?
No, I'm building on 32bit xp, but I don't see how it matters, since I use the correct build environment.
Is your driver signed with a cross-signed certificate? No, I've tried enabling unsigned drivers, and it didn't help, but I'm also not sure what will be going on with this subject at all, and if you can give me some info on that as well, it will be welcome.
Is the right build environment chosen (chk/fre/amd64/win2k)?
I've used chk-vista-amd64. Since it's for vista 64bit...
If your code are based on bulkusb.sys in WDK, you should just try to compile the code of Bulk USB device driver for Intel 82930 USB test board included in C:\WinDDK\7600.16385.1\src\usb\usbsamp\sys of WinDDK. Then if it could be started in your environment, try to compare the code from WinDDK which you used (for yeas) as a template of your driver with the current version of usbsamp from WinDDK 7600.16385.1. You will see which changes where made in usbsamp. Probably the same changes you should do in your program.
I could not give more exact answer, because I am trying to find an error in a code which I don't see. It seems to me not easy.
Make sure that you're removing the copy of the driver in
%WinDir%\System32\DriverStore
Because otherwise newer versions of the driver that you try to install on the system won't be used.
There are 2 ways to do this:
1) Plug-in your device and install the incorrect driver, and remove using Device manager, but when removing, use the mouse-menu and not the delete key, and check the box about "removing the driver"
2) Locate the OEM##.inf file corresponding to your driver in %WinDir%\Inf.
using an elevated command line windows (i.e. Run as Admin) use
pnputil -d oem##.inf
Now you can install the new version of your driver.

Resources