The perceived type tells you what kind of file it is, for a very general sense of the word “kind”.
A customer was debugging some code that calls RegisterClass on a class that’s already been registered. In this case, it was registered by another DLL in the same process. Normally, this wouldn’t be a problem, because each DLL passes its own instance handle to RegisterClass so that there are no name collisions.
We saw some time ago that permission to delete a file is granted either
if you have DELETE access on the file, or
if you have FILE_DELETE_CHILD access on the containing directory.
File attributes behave in an analogous way.
Permission to read a file’s attributes is granted either
if you have FILE_READ_ATTRIBUTES access on the file,
Just an order of magnitude. Or three. Or more.
You don’t need to.
COM methods cannot be variadic.
Because the marshaler doesn’t know when to stop.
Suppose variadic COM methods were possible.
And then you wrote this code:
HRESULT Mystery([in] int code, …);
IVariadic *variadic = something;
You never crossed the boundary.
That one started from Windows NT.
According to television.