Quantcast
Channel: The Old New Thing
Browsing all 3085 articles
Browse latest View live

Getting MS-DOS games to run on Windows 95: Virtual memory

A lot of games of the pre-Windows 95 era use so-called MS-DOS Extenders, which are libraries that provide a protected-mode environment to MS-DOS applications. The application is technically two...

View Article


Why doesn’t a program show up on the Start menu’s Recently Used Programs list...

A customer had a question about the Start menu’s Recently Used Programs list: Start with a brand new machine. If you double-click a document which is associated with a program, the associated program...

View Article


The numerology of the build, redux

I noted some time ago that starting in Windows Vista, final build numbers must be a multiple of 16. Why is that? The version number comes in four parts, each consisting of a 16-bit integer:...

View Article

Why are there four functions for parsing strings into GUIDs, and why are they...

Some time ago, we discussed the differences among various functions that take a string and produce a GUID-like thing. Let’s look at that table. Function Exported by Uuid­From­String rpcrt4.dll...

View Article

Is it really a prank if the victim doesn’t realize there’s a prank going on?

One of my friends pranked a colleague by surreptitiously putting a program in the Startup group. This program opened a network socket and awaited further instructions. Things you could tell the...

View Article


Getting MS-DOS games to run on Windows 95: Working around the iretd problem

Today’s story is the story of Speed Racer in the Challenge of Racer X. Here goes. The really scary thing is that I still remember the details. To this day, I can’t bear to listen to the Speed Racer...

View Article

Dubious security vulnerability: Disk space consumption

Today’s dubious security vulnerability goes like this: The $RECYCLE.BIN directory can be used to launch a denial of service attack that is not detected by any current anti-malware software. An...

View Article

How does GetFinalPathNameByHandle choose the name if there are multiple names...

Alex Shalimov wonders how the Get­Final­Path­Name­By­Handle behaves in the face of hard links. If there are multiple equivalent names, which one is returned? The function returns the name that was...

View Article


Why can’t the debugger call GetFinalPathNameByHandle via .call?

There were a number of follow-up questions to my demonstration of calling the Get­Final­Path­Name­By­HandleW function from the debugger. Mason Wheeler asks, “What debugger is this? Why doesn’t it have...

View Article


Why does FindExecutable behave erratically for files with extensions longer...

The Find­Executable function looks up the executable responsible for launching a particular file. This is a dubious undertaking, because it assumes that the thing that launches a file is an...

View Article

Getting MS-DOS games to run on Windows 95: The interrupt flag

In the flags register of the 80386 processor is a flag called the interrupt flag. If the flag is set, then the CPU will respond to hardware interrupts. If the flag is clear, then the CPU will ignore...

View Article

Inherited access control entries are captured when the child object is created

In the discussion of how to change permissions as fast as Explorer does it, it appears that it was not clear to people how inherited access control entries work, so there were a lot of suggestions...

View Article

If relocated DLLs cannot share pages, then doesn’t ASLR cause all pages to be...

Commenter Medinoc wonders whether it’s still the case that relocated DLLs can’t be shared in memory. If so, then doesn’t ASLR cause all pages to become non-sharable? There are multiple things in play...

View Article


Inherited access control entries are captured when the child object is created

In the discussion of how to change permissions as fast as Explorer does it, it appears that it was not clear to people how inherited access control entries work, so there were a lot of suggestions...

View Article

Even though the target audience may be programmers, it can still be seen by...

The access violation error message erroneously reports execute errors as write errors, which is probably for the better, seeing as end users are not going to understand the technical term “execute”,...

View Article


What happens if I call EnumPropsEx while another thread is mutating the...

Following up on the question Are SetProp and RemoveProp thread-safe?, you might wonder what happens if you call Enum­Props­Ex while another thread is mutating the properties? The answer is similar to...

View Article

Getting MS-DOS games to run on Windows 95: Too much memory!

Piggybacking on Roger Lipscombe’s story of the MS-DOS extender that didn’t work if you have 64MB of RAM: There was a popular MS-DOS game from 1994 that didn’t run in Windows 95. After some...

View Article


Why is there a screen that says “It is now safe to turn off your computer”?

I don’t know whose idea it was, but Windows 95 added a screen that appeared when you shut down Windows. It’s now safe to turn offyour computer. This message was added because people would shut down...

View Article

Why are mouse wheel messages delivered to the focus window instead of the...

Douglas asks, “Is there a good reason that mouse wheel messages are sent to the focused window instead of the window under the mouse?” I don’t know if there’s a good reason, but there’s a reason. The...

View Article

It rather involved being on the other side of this airtight hatchway: Invalid...

We received a very professional security vulnerability report from a video driver manufacturer which reported a security vulnerability in DirectX. You can tell it’s a professional operation because...

View Article
Browsing all 3085 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>