All posts by Ed Tittel

Full-time freelance writer, researcher and occasional expert witness, I specialize in Windows operating systems, information security, markup languages, and Web development tools and environments. I blog for numerous Websites, still write (or revise) the occasional book, and write lots of articles, white papers, tech briefs, and so forth.

Counting MS 2006 Drivers

Yesterday’s post about generic, MS-supplied device drivers got me thinking. These drivers bear an issue date of 6/21/2006, which coincides with Windows Vista’s RTM date. To be more specific, I wondered how many such items might appear in the Windows DriverStore. With counting MS 2006 drivers in mind, I asked Copilot for a PowerShell script to count them for me. Just for grins I compared that count to the total items as well.

Scripting Out Counting MS 2006 Drivers

You can see the results of my query to Copilot in the lead-in graphic. That query was “Write me a PowerShell script to display number of Windows drivers dated 6/21/2006 and total driver count.” As it turned out, on my Lenovo X380 ThinkPad running Windows 11, those numbers were 517 (2006 count) and 701 (total count). On my i7Skylake homebuilt system running Windows 10, those numbers were 511 and 672, respectively.

I’ll show the PowerShell commands below, but first I want to observe I had NO IDEA that MS supplies roughly 5 of every 7 drivers that Windows uses (over 70%). From looking at the items in the DriverStore more closely thanks to PowerShell, I see that this is because many of them are class, bus and service drivers. You can thus understand them as part of the driver stack between the OS and the function driver (at the bottom of the stack, it actually interacts with devices).

Here’s how MS shows this architecture in its MS Learn article “What is a driver?

Counting MS 2006 Drivers.diagram
The driver at the bottom of the stack that communicates with a device is a function driver; according to the MS Learn item, filter drivers do “auxiliary processing” which may involve monitoring, verifying, translating, or otherwise manipulating in- and out-bound stack communications. By convention app to device communication moves down the stack, while device to app communication goes the other way.

PowerShell Details

Here’s the PowerShell that Copilot handed to me in response to my query, including comments (start with a # character):

#Get all the drivers from the online Windows image
$drivers = Get-WindowsDriver -Online -All
# Filter the drivers by the date of June 21, 2006
$drivers_2006 = $drivers | Where-Object {$_.Date -eq "6/21/2006"}
# Count the number of drivers with that date
$drivers_2006_count = $drivers_2006.Count
# Display the number of drivers and their names
Write-Output "There are $drivers_2006_count drivers dated 6/21/2006 in the online Windows image."
Write-Output "The names of the drivers are:"
$drivers_2006 | ForEach-Object {Write-Output $_.OriginalFileName}
# Display the total number of drivers
$alld = $drivers | Where-Object {$_.Inbox -eq "True"}
Write-Output "There are $alld.count total Windows drivers in the online Windows image."

Some of the lines shown above break across two lines in the browser, but are actually single PowerShell commands. If you run them, you must put them on a single line. I just ran the commands in sequence, one at a time as you can see in the lead-in graphic. I cheated, though: I simply output $alld.count in the last line shown. The PowerShell shown above wraps this in some explanatory text.

Facebooklinkedin
Facebooklinkedin

2006 Microsoft Device Driver Date

Here’s an interesting bit of administrivia. Look at any number of generic drivers inside Microsoft Device Manager. Invariably you’ll see some interesting and apparently ancient items. They’ll show Device Provider: Microsoft and a Driver Date of 6/21/2006. On a Windows 11 test machine just now, for example, I saw that very date under six-plus headings. That included Batteries, Bluetooth, ACPI, Remote Display Adapter, Device Firmware,  and USB . What’s special about this 2006 Microsoft Device Driver date anyway? Good question!

Understanding the 2006 Microsoft Device Driver Date

As it turns out, 6/21/20016 was the day Windows Vista released to manufacturing  (aka RTM date). Since then, when MS supplies a driver for a non-Microsoft device it uses this date. This pushes the driver far back in time. As Device Manager chooses a driver to install it picks the best match for its device ID AND the one with the highest version number and the most recent date.

Why do this? If the OEM (or some other 3rd party with driver signing authority) produces a driver, it will bear a newer date (and possibly a higher version number). Thus, the other driver gets selected and installed. This ensures Windows always installs the best possible driver for any device. And, most of the time, it works!

The MS Driver Date Rationale

As MS updates generic drivers, it increments the driver version number. But it leaves the date at 6/21/2006. That way if a third-party driver comes along, it will almost always trump the MS generic driver version.

Why use the Vista date? Raymond Chen’s MS blog on this topic (2/8/2017) explains things in a bit more detail. A PC Magazine story from the same year supplies another crucial quote from an MS developer:

since only drivers as far back as Vista are compatible with new versions of Windows, every driver should have a date newer than Vista RTM, preserving the driver you installed as the best ranked driver.

So now we know why certain MS-supplied drivers go back to the start of the “modern Windows era.” Good stuff!

 

Facebooklinkedin
Facebooklinkedin

New Canary Notepad Builds Character

When I saw @JenMsft’s Tweet yesterday,  I knew I had to have it. A new Notepad version now includes character counts in the (bottom-line) status bar. If you squint, and look bottom right, you can see it in the lead-in graphic: 10,852 characters. Thus, when I declaim that the new Canary Notepad builds character, I’m not talking about personality traits like gumption and perseverance. I’m talkin’ numbers, baby!

Exactly How New Canary Notepad Builds Character

Over time, MS has been revamping and improving the Notepad app. Indeed, it now comes from the MS Store and lives in the Program Files\WindowsApp file hierarchy (version 11.2311.29.0 has these particular goods). Indeed, I’ve seen some discussion that it might even gain more code editing and formatting smarts, a la Notepad++.

But this current version far exceeds the capability of its predecessor (e.g. the version still running in Windows 10). That older iteration lacks the bottom status bar completely. It’s got no settings controls, either: you must do all that stuff using menu bar entries.

A Different Update Drill…

Optimistically, I went looking for the newest Notepad version on one of my Canary test PCs when the news about the character counts came out. I should’ve known better. I had to open the Store, click the Library entry, then Update all. After that, as you can see in the closing screencap below, I obtained “new Notepad satisfaction.”

New Canary Notepad Builds Character.in-store

Once I visited the Store, I was able to update Notepad to see its new character count ability.

Facebooklinkedin
Facebooklinkedin

Team Lead Sez: Winget Upgrade Winget

If you read this blog, you know I’ve been reporting for months about interesting issues that occur in PowerShell when winget tries to update itself. In a Tuesday Tweet MS Team Lead Sez: Winget Upgrade Winget. I take this to mean that they’ve solved the issues (for the stable version at the moment, previews planned for some future date) related to winget upgrading itself. Good stuff!

Why Team Lead Sez: Winget Upgrade Winget

I’ve interacted with the afore-mentioned Winget Team Lead, Demitrius Nelon, repeatedly in the last few months on this very topic. In fact, we’ve agreed that the issues of an application updating itself can be both tricky and challenging (it’s a kind of Catch-22, in the most classic sense).

And now, I find myself in an interesting situation. I can’t wait for the next stable version of winget to come along, so I can try updating it using winget itself. But the most recent release dates back to November. I can’t find any info on when the next release is coming out … goes off to message Demitrius on X … will report any responses received back here.

Note added 2 hrs later: Mr.Delon resonded to my inquiry about when the next winget stable release might hit. According to his reply,it could happen for an incremental winget 1.6 version before year’s end. If not, 1.7 is scheduled for February 2024. Now we know!

I just checked a representative sample of test and production PCs and there’s nothing in the queue for a winget self-upgrade just yet. But it should be interesting to see how it all plays out. Stay tuned: I’ll keep you posted.

Facebooklinkedin
Facebooklinkedin

Windows 10 Lifecycle Changes

If I’m reading its HTML metadata correctly, Microsoft updated its Lifecycle FAQ = Windows document yesterday (December 5).  That’s when they added information about Extended Support Updates (ESUs) beyond the Windows 10 EOL date of October 14, 2025. ESU is a paid-for kind of support that allows licensees to get updates even after that cut-off date. Let’s explore what these Windows 10 Lifecycle changes  could mean.

Exploring Windows 10 Lifecycle Changes

For previous versions of Windows (e.g. 7) MS offered ESUs only to MS customers with existing paid-for support or licensing agreements. If I’m reading the afore-linked FAQ’s text correctly (see lead-in graphic), ordinary users (“individual users”) will also be eligible to pay for and receive these updates. That should be interesting.

I asked Copilot this question “How much did MS charge for ESU on Windows 7?” Here’s how it answered (superscript numbers 1-3 link to the sources for this information):

According to the web search results, Microsoft charged different amounts for Extended Security Updates (ESU) for Windows 7 depending on the edition and the year of purchase. For Windows 7 Professional, the ESU prices were $50, $100, and $200 per device for the first, second, and third year respectively1For Windows 7 Enterprise, the ESU prices were $25, $50, and $100 per device for the same period1However, some customers could get ESU for Windows 7 for free through Windows Virtual Desktop or other support contracts23.

Given that EOL for Windows 7 was January 14, 2020, let’s factor in some inflation. That makes it exactly 5.75 years between that date and the Windows 10 EOL. Using a low-ball average inflation rate of 2.5% over that period means adjusting the foregoing numbers by 14.4% or thereabouts. That means $50 becomes $57, $100 → $114, $200 → $228. You can do the math for the rest (but I think the Professional prices are the ones to go by).

Are They Ready to Rumble?

I’m forced to speculate that MS is adding individual consumers to its upcoming ESU coverage because they believe they left money on the table during the Windows 7 extended service period. This essentially brings businesses and users who are willing to pay for coverage, but who don’t have a licensing agreement or equivalent already in place with MS. It could easily be as big a revenue stream as the covered Windows 7 population was when EOL rolls around.

Inertia is indeed a strong force in business affairs. And sometimes, smaller businesses — especially sole proprietorships — can strongly resist change. This should be interesting to watch and try to figure out. I’m not sure if I should be impressed or appalled. Stay tuned: I’ll tell you…

PS Thanks to Sergey Tkachenko at WinAero.com for bringing this to my attention. I figured out the date info on my own…

Facebooklinkedin
Facebooklinkedin

PowerShell Out-GridView Grants Output Insights

OK, then. I’m taking Matt Hester’s fabulous Learning PowerShell course over at LinkedIn. Right now, I’m into the third of three modules. I have to say: it’s been great! Yesterday, among lots of other incredibly useful nuggets, I learned about the Out-GridView cmdlet. To say that PowerShell Out-Gridview grants output insights for most cmdlets is like saying “The Grand Canyon is Big.” But that makes it no less true or interesting — to me, at least. Let me explain…

What PowerShell Out-Gridview Grants Output Insights Means

PowerShell cmdlets manipulate data objects. These have named properties. When you output them, you can see the values associated with all properties for an object instance (rows). You can also see the values associated with individual properties for all instances (columns).

Simply put, what Out-Gridview does is to grab the values associated with each instance’s properties and throw them up in a window like the one you see in the lead-in graphic. As you can see in the top line of that window this shows the results of the get-service cmdlet, from which the resulting objects’ Name, Status and RequiredServices property values are all shown. This is cool and helpful all by itself, but there’s more: a LOT more.

Working the GridView Window

Let’s call the windowed output from Out-Gridview a “GridView Window.” It’s actually an output from the Interactive Script Editor (ISE) that’s part of the overall PowerShell runtime environment.

In this GridView Window, you can click on any column head therein to sort the data by the values in that column. By default it comes sorted on whatever shows up in column 1 (aka “alphabetical order, by Name”). But you can also sort on Status, or RequiredServices as well.

Wait! There’s still more:

  • You can add all kinds of filters to the output shown in the Window
  • Types of filters include
    • contains (string or value partial matching anywhere)
    • does not contain (string or value absent)
    • starts with (initial string character matching)
    • equals (string or value exact match)
    • does not equal (string or value not matched or equal)
    • ends with (ending string character matching)
    • is empty (property has no value defined or is null)
    • is not empty (property has a value defined or is not null)
  • You can add as many filters as you like, change them as you go, and the GridView Window’s contents change dynamically to keep up
  • Data shows up as you type

Overall, this is a great way to examine data from cmdlet outputs in PowerShell. It means you don’t have to scroll up and down in the command window, nor do you have to save the data to a file and open it using your favorite editor. The gridview data is, however, evanescent (when you close the window, the data is gone). It doesn’t do away with piping output into files: it’s just a (temporary) alternative, but a darned good one!

Facebooklinkedin
Facebooklinkedin

Windows 10 Copilot Limitations

Dang! I’d have to call my desktop experience “a swing and a miss.” I jumped on the KB5023378 Preview update, expecting to get Copilot out of that amendment. Wrong! Among the first words in the afore-linked update Support note, key Windows 10 Copilot limitations emerge. This includes this scoping statment: “This [Copilot addition] only applies to devices that run Home or Pro editions…” (emphasis mine). As you can see from the lead-in graphic for reasons that are too long and tedious to explain, this PC is running Windows 10 Enterprise. Sigh.

Bitten By Windows 10 Copilot Limitations

Sigh. It just goes to show that my personal dark cloud hasn’t quit hovering in the vicinity. I’ve often observed that if MS slides an update out as a gradual release, my PCs are invariably in the rear guard. This is something of a spin on this all-too-familiar situation, but nontheless an amusing one.

Fortunately, my physical desktop is not the only Windows 10 image I can run. I just jumped over to the ThinkPad P16 Mobile Workstation where I have a couple of Win10 images from which to choose. My cleanest one (installed last week for an AskWoody column) is installing same right now. When it reboots, I expect to see a Copilot icon in the Taskbar. Here goes…

Overall, install time on a 4GB Gen2 VM was quick. The whole thing took under 3 minutes to download, install, then cycle through post-reboot update processing. Good stuff. But did I see Copilot on the Taskbar when it was all done? Nope.

I had to turn on and relaunch the VM to come back from the update reboot. And another reboot didn’t bring it up, either. Nor did a right-click in the Taskbar show a Copilot control. No Copilot item under Settings → Personalization, either. Very interesting. I’m obviously going to have to learn more to get Copilot working on my Windows 10 Pro VMs. Should be fun: stay tuned!

That Old Familiar Sensation

I see in the Windows Latest coverage (Mayank Pamar) that “Microsoft has also warned that the feature may not be available on devices with compatibility issues, including devices with an incompatible app.” Why do I get the feeling that includes either my ThinkPad P16 Mobile Workstation or its Hyper-V runtime environment for my 2 Windows 10 VMs on that machine?

Note Added December 6: Maybe I should be grateful none of my Win10 PCs got Copilot? I’m seeing numerous reports that MS has put updates for both 10 and 11 on hold because of Copilot issues. I guess waiting is better than troubleshooting problems of Microsoft’s making. Isn’t that just the way things go here in Windows-World?

Facebooklinkedin
Facebooklinkedin

Windows 11 MarketShare Jumps Quarter Mark

Well, well, well. Here’s an interesting Windows statistic for you. According to StatCounter, the global desktop OS marketshare for Windows 11 hit 26.17% at the end of October. That’s up by 2.53% from the previous month. And it’s the first time Windows 11 shows running on over 1 in every 4 PCs using the Internet. You can see some related numbers in the lead-in screencap.  Indeed, it claims Windows 11 marketshare jumps quarter mark vis-a-vis other versions.

What Windows 11 MarketShare Jumps Quarter Mark Means

I have some questions about the Statcounter image and numbers (see lead-in graphic), though. Across the top bar of the image you see Windows 10 at 68%, and 11 share at 26.66% and so forth. But if I mouseover the data points at the end of those counter lines, they report 69.31% for Windows 10 and 26.17% for 11. I don’t understand why there’s a discrepancy, but I’m taking the numbers from the charts rather than the top line stuff as “correct.”

By way of comparison, I also checked analytics.usa.gov which keeps track of devices visiting US government websites (“5.33 billion sessions over the past 90 days,” so an appreciable data volume from which to draw statistics and inferences). It doesn’t report Windows 11 numbers per se. (I believe they’re included in its Windows 10 count because Windows 11 still uses a Windows 10 user agent ID in web browsers.) But it shows 98.37% of Windows visitors were running one or the other of those two OSes. (Add the 2 Statcounter numbers together and you get 95.48% — not horribly divergent.)

Alas, Copilot still quotes old Statista numbers (the company requires an annual subscription that costs US$1,788 for free, unfettered access to their latest stats). Thus, I can’t use them as an additional point of reference.

Looking at the Trend Lines

Whereas the Windows 11 line in the Statcounter chart is definitely trending upward, you can’t really say the Windows 10 line is visibly trending downward. It’s sort of meandering, with both ups and downs in the 12-month period on display there.

The 2.53% September-to-October jump for Windows 11 is pretty interesting, though. That’s a 10.7% jump in a single month, which is massive. It’s significantly higher than preceding month-to-month changes. All of those are positive in slope, but none comes close to even half that value.

Recently, I’ve commented that business hasn’t yet gotten serious about migrating from Windows 10 to 11. This spike could be evidence that my comment is based on outdated tracking and stats. We’ll get a much better idea if things are truly picking up, or if this is a short-lived spike, as data for the next few months gets reported.

This has, however, piqued my interest pretty sharply. Stay tuned and I’ll let you know which way the worm turns next. It could be that the tide is finally turning… The numbers may not lie, exactly, but they don’t always slap us in the face with what’s going on, either.

Is a Leapfrog Release Coming? (Added Dec 4)

Fascinating follow-up from a Martin Brinkmann story over at Ghacks this morning. It’s entitled Windows 11 24H2 and Windows 12 Expected in 2024. It puts forward two fairly credible sources for info that MS may ship an entirely new Windows version next year. This would put “Windows 12” (stalking horse name, since MS is of course mum on this topic) out before Windows 10 goes EOL. That would indicate a jump from 10 to 12 would be in the offing, leapfrogging over 11 entirely. Now there’s a twist I didn’t see coming. This should be fun to watch.

 

Facebooklinkedin
Facebooklinkedin

Canary 26002 Gets Energy Saver

Once upon a time, if one wanted to manage laptop batteries intelligently, one needed the OEM to provide a utility. No more. With the latest Insider Preview, Canary 26002 gets Energy Saver capability built in.

You can see this on display in the lead-in screen shot. It shows the notification area expanded to include a new “Energy Saver” entry (right). What’s more. if you right-click that item, it will open Settings for you. There you can easily get to the Power & Battery display (left) that shows Energy saver is turned on and always running.

Why Canary 26002 Gets Energy Saver Is Good News

Many, many years ago — I think it was in the early 2000s — I translated an article for Toms Hardware from German into English. It dealt with the issues involved in keeping batteries alive as long as possible. This could be a problem for units whose chargers remain plugged-in more than running off battery.

Indeed, it had long been the case that laptop makers had to furnish a special utility that would monitor battery charge levels, usage patterns, min/max for charge and discharge (and more) to keep track of things. You can see evidence of this even in my 2021 vintage Lenovo ThinkPad P1 Gen 6 Mobile Workstation. Here are its Battery Details (from Lenovo Commercial Vantage):

Canary 26002 Gets Energy Saver.battery-details

Lenovo tracks all kinds of battery levels and stats.
[Click image for full-sized view.]

With this latest addition, the OS can keep track of this kind of thing for any and all battery-powered PCs. It can also manage charge levels and energy consumption to ensure long batter life while also minimizing actual energy consumption. This is a great step forward, and a good thing for laptops, users and the environment. I approve!

Facebooklinkedin
Facebooklinkedin

Learning to Hurdle Terminal Chat Gotchas

When I was a kid we lived in Kendall Park, NJ in 1962 and 1963. The barbershop where my Mom took me for haircuts was interesting. It was long and narrow and lined with mirrors on both sides. That created what I have forever since called “the hall of mirrors” effect. There a poor man’s infinity is born as those parallel mirrors reflect each other forever and ever. I remembered that hall as I read the MS November 17 Windows Command Line blog Terminal Chat in Windows Terminal Canary. Since it came out, I’ve been figuring out how to hurdle Terminal Chat gotchas in similar wise. Let me explain…

Pre-reqs Precede Hurdle Terminal Chat Gotchas

If you look at the lead-in graphic (it comes from the afore-linked Command Line blog, a personal fave) it shows a “Welcome to Terminal Chat” message inside a PowerShell/Windows Terminal session. I’ve been trying to get to the point where I can bring that message up myself on a test or production PC, but I’ve yet to surmount the hurdles in my way. Let me enumerate them:

1. In Windows Terminal team lead Chris Nguyen’s words “Terminal Chat only supports Azure OpenAI Service for now.” That means one needs an Azure OpenAI Service endpoint and key.

2. To obtain said endpoint and key, one must create and deploy an Azure OpenAI service resource.

3. To create and deploy an Azure OpenAI service resource, one needs an Azure OPen AI Service enabled Azure account. This requires setting up monthly billling for consumption of Azure resources with an OpenAI rider added. (For pricing info, start with Plan to manage costs for Azure OpenAI Service for the OpenAI piece, then check out Understand Cost Management Data for the underlying Azure piece). It’s daunting!

Only when you have all the pieces in place, and then create and deploy a valid Azure OpenAI service resource, can you install and use Terminal Chat. I’m not there yet. In fact, I’m thinking hard whether or not minimum monthly charges of at least US$50-150 are commensurate with the joy of using Terminal Chat.

Enough … or Too Much?

This subtitle comes courtesy of William Blake’s Proverbs of Heaven and Hell. I’m inclined to bow more to the infernal side of that dichotomy when it comes to putting all the pieces in place. All I wanted to do, really, was to see what kind of advice Terminal Chat could dispense at the command line. I’ve already got Copilot ready to advise me on PowerShell and Command Prompt input with some basic ability to plop it onto a command line.

Why so many hoops and hurdles? I’m sure there’s an answer. I’m reaching out to the author of the blog post to see what I can learn. Should be interesting… Stay tuned!

Facebooklinkedin
Facebooklinkedin