Sometimes, it is important to call a spade a spade, or a f***ing shovel.
Too many p-baked (p < 0.1) get handed down from “on high” by people who
are remarkably unqualified to do any kind of design. They expect the
programmer at the bottom of the hierarchy to somehow magically make their
dreams (or, in some cases, what appears to be LSD-induced visions) into
deliverable reality. In such cases, it can help that poor person at the
bottom convince his or her manager that the desired goal is impossible, or
the design is just completely wrong for Windows, or that the design cannot
work in Windows < N or Windows >= N (for example, unsigned drivers in
Windows 8.1, or a design that requires DDI calls not found on XP). The
goal is that the programmer can go back up the chain with evidence (“the
experts say this is insane, and here’s the proof”) so that some manager
who programmed in MS-DOS or some RTOS of the 1970s understands that the
design simply cannot be made to work (or work reliably, or robustly, or in
Windows XP, or in Windows 8.1). If the goals are insanely impossible,
that’s important, too. It saves getting a bad performance review for
failing to accomplish the impossible. Or establishes a basis for an NLRB
appeal over unfair firing (I’ve had two friends go through this. One won,
one lost. The one who lost had no proof that he had been asked to build
something that is perhaps three PhD dissertations from having the problem
space defined, never mind the solution implemented).
Calling a design insane is not necessarily an attack on the OP, who has
been costrained to implement a specific design, but an attack on the
designer. And yes, if the OP is the designer, it is an attack on the OP.
Some programmers think they can treat Windows just like their favorite
RTOS, perhaps (or almost certainly) one that did not use virtual memory.
The number of times I had programmers in my classes who had NO IDEA what
“virtual memory” was or how it worked was frighteningly high. Some had
come from a background of RTOS real-mode programming, but a greater number
were just people who knew that the name existed, and allowed their
programs to run, but had no idea about the underlying mechanisms. And
were trying to do things that required this understanding. They also
don’t understand the difference between “it works” and “it works on my
machine, with no user load, massive amounts of physical memory, and a
single-threaded app, on Version N of Windows” and confuse this with “I
have created a deliverable product that will perform correctly and to spec
on all customer machines, including heavily-loaded servers”. I used to
say things like, “If you haven’t tested your {driver, app} on a multicore
machine, you haven’t tested it”. Now that multicore machines are no
longer exotic (my mother, at age 90, had a multicore machine), I would say
things like “If you haven’t tested your 32-bit driver with a 3GB user
partition, you haven’t tested your driver” and “if you haven’t tested your
driver by opening it for async I/O, you haven’t tested it”, and for shared
devices, “If you have not had at least three concurrent multithreaded apps
sending requests to your driver, you haven’t tested it”. The number of
failures I’ve seen for these reasons is far too high, and might have been
caught if the designs had been posted here and the OP had been told the
design was completely wrong.
joe
Peter,
Actually, It has absolutely nothing to do with " his marketing
department’s choice of words"…My point is that the OP may be simply trying to comply with the request
that is unreasonable in itself,and, as a result, tries to do things that
may be simply ridiculous from the technical standpoint. In your
terminology, he may be requested to stick wings to a pig and has no chance
to explain to his boss that pigs don’t fly (you wrote a good article about
it few years ago in NT Insider). Some years ago I worked with a client
like that so that I know what it is like…Anton Bassov
NTDEV is sponsored by OSR
Visit the list at: http://www.osronline.com/showlists.cfm?list=ntdev
OSR is HIRING!! See http://www.osr.com/careers
For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminarsTo unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer