DirectX 10 = DirectX 9 for Vista

Nick

Veteran
Hi all,

I wonder to what degree we can consider DirctX 10 to be functionally equivalent to DirectX 9. I know it has a totally new interface and adds Shader Model 4.0 and a totally new driver model. But from an end-user point of view, are there any 'effects' that DirectX 10 games will be able to produce which DirectX 9 practically can't?

In other words, did Microsoft decide not to release DirectX 10 for XP primarily to help Vista sales, or is there just little point in having an equivalent API without the new driver model?

Thanks for your opinions,

Nicolas
 
There are certainly a number of new features and many performance enhancements that make it possible/reasonable to implement more complicated effects.

Of course you'll always get the people who say "you can do everything that you can do in D3D10 in D3D9" and while that's technically true (since you can always multi-pass, read back and execute on the CPU, etc. etc.), it's not a useful observation.

Off the top of my head, the geometry shader and stream out will certainly enable more effects (cascades gives a good example). Texture arrays are also quite useful, as is accessing the pre-resolved MSAA buffer. The resource/views/render targets design also avoids a lot of useless data movements that had to be done in D3D10 just because textures and buffers were too inflexible. The reduction in pass overhead also allows more complicated algorithms to be implemented.

Furthermore the D3D10 specifications have forced the hardware to become a lot more orthogonal which, while it is somewhat exposed in D3D9, allows a whole range of possibilities.

So I think the answer to the thread title is "no, Direct3D 10 has a lot more than Direct3D 9" but again it will take people a while to realize the possibilities. In the mean time we still have fast, much more flexible hardware even in Direct3D 9.

Plus it's just a lot easier and more fun to write in Direct3D 10 than 9... 9 was a bit of mess although not as much as OpenGL 2.0 IMHO.
 
DX10 is all about improved efficiency and the WDDM goes a long way towards aiding it in that goal. That being said I don't think the Vista driver model should be a requirement for DX10. Why DX10 is available only for Vista and not 2k/XP does seem more like marketing or a lack of wanting to recode the API for a different driver model.
 
Direct3D 10 is about doing more with less calls and move work from the CPU to the GPU.

As Andy TX already have written with Direct3D 10 PC games programming get a little bit more in the direction of console game programming. You still need to scale for different performance but not for different features sets. But it will take some time until we finally reach the point when we can drop Direct3D 9.
Therefore I expect that the first wave of Direct3D 10 enabled games will use this API mostly for performance improvements and maybe one or two new eyecandy effects.

Just to add two examples. For the first group the possibility to render to all six faces of a cube at the same time could be interesting. Direct rendering to volume texture slices could produce new effects.

But I would not call it “DirectX9 for Vistaâ€￾ as a great number of new Vista systems are still sold without Direct3D 10 hardware. It may reach this state some time after D3D10 hardware would become a requirement for the “Designed for Vistaâ€￾ logo program.

DX10 is all about improved efficiency and the WDDM goes a long way towards aiding it in that goal. That being said I don't think the Vista driver model should be a requirement for DX10. Why DX10 is available only for Vista and not 2k/XP does seem more like marketing or a lack of wanting to recode the API for a different driver model.

From the technical point of View Microsoft is able to write the necessary stuff to get Direct3D 10 running on Windows XP. But this would not be cheap and I am sure not that many people are willing to pay for it. Additional nvidia and AMD need to provide a second set of Direct3D 10 drivers in such a scenario. At least nvidia still have trouble with only one.
 
I'd summarise D3D10's value to end users is that in allowing developers greater and easier expression we'll get a LOT more of the 'eye candy'.

Sure, as AndyTX commented, you can probably achieve 90% of D3D10 effects via D3D9/XP but end-users don't realise just how damned hard this can be. Not only is stringing all of the features together into some sane architecture hard, scaling this over both features (e.g. FF-SM1-SM2-SM3 hardware) and performance (your 7300LE to your 7950's) is a horrific challenge.

The consequence of this is that in any commercial environment (read: games rather than tech demo's) you have to consider the cost (time/effort) of implementing all the features for as many or all of the target audience. I'm sure it comes as no surprise that a lot of things get cut as a consequence ;)

So with D3D10, if these things are easier to implement across a more fixed console-like platform then a huge number of the aforementioned problems get thrown away.

Demirug mentioned the render-to-cube-map enhancements. This makes it easier for developers and, within reason, why can't we have lots MORE cubemaps now? If its less hassle to implement and more efficient to execute then I'll put a cube map on less important aspects of the scene whereas in D3D9 I'd of prioritised them to only those parts that absolutely required them.

So, bottom line, if its quicker easier and cheaper to use 'more of the same' then thats no bad thing. Just because its not a new shiny buzzword that you haven't heard of before doesn't mean it's not important :smile:

Jack
 
Thanks all for the information and opinions!

I understand that the uniform features of DirectX 10 hardware opens a lot of possibilities, but wouldn't most games for the next 2-3 years also support DirectX 9? This means they need an engine which abstracts all rendering operations for both API's, which automatically minimises the use of DX10-only features. They also can't really justify doing things that are fast on any DX10 card but unacceptably slow even on a high-end DX9 card.

Considering that, offering DX10 'support' for XP would have only slowed the process of switching to the 'real' DX10, right?

I'm actually asking all this because I regularly visit other forums where Microsoft is bashed for not offering DX10 for XP. I think Microsoft is doing the right thing, but I'm looking for a one-liner to explain this to the masses. ;) The title of this thread is an attempt but not a very good one...
 
wouldn't most games for the next 2-3 years also support DirectX 9? This means they need an engine which abstracts all rendering operations for both API's, which automatically minimises the use of DX10-only features. They also can't really justify doing things that are fast on any DX10 card but unacceptably slow even on a high-end DX9 card.
Yes, this is all potentially true. Only time will tell whether developers/publishers follow the "clean cut" approach and go to 10, or if they try to invent some sort of grey-area hybrid approach. I'd imagine most will try the latter, but I doubt it'll carry on past the first year and/or first generation of engines/games...

Considering that, offering DX10 'support' for XP would have only slowed the process of switching to the 'real' DX10, right?
I really don't think it would have helped anything. So many low-level details have changed you'd either have to accept getting an XP+1 OS (e.g. XP-SP3 with all new Kernel and all new drivers) or a D3D10 -1 API (e.g. 10 syntax mapped to 9 hardware). As painful as it is, a clean cut was necessary - take a look at OpenGL, they desperately need one and have been talking about it more and more lately (I'm not familiar with the finer details)...

I'm actually asking all this because I regularly visit other forums where Microsoft is bashed for not offering DX10 for XP.
Plenty of us have been trying to hammer this point, but what can I say - there is no shortage of stupid people around? :LOL: The internet is terrible at giving anyone and everyone a soap box to shout from - and its a lot easier to slam "M$" for some underhand marketing tactic to get people onto Vista than it is to understand the technical details about driver models and software development :rolleyes:

Try this for size: DirectX 10 for Windows XP? Repeat after me: No. No. No..

hth
Jack
 
Yes, this is all potentially true. Only time will tell whether developers/publishers follow the "clean cut" approach and go to 10, or if they try to invent some sort of grey-area hybrid approach. I'd imagine most will try the latter, but I doubt it'll carry on past the first year and/or first generation of engines/games...
Considering that developing a cutting-edge game takes ~3 years (Far Cry: March 2004, Crysis: summer 2007), I believe it's going to stretch a little further than one year. Besides, there are just too many people with a good DirectX 9 card (think of laptops too) who would be pissed off. According to the Valve Survey 35% of people still run DirectX 8 or lower...
So many low-level details have changed you'd either have to accept getting an XP+1 OS (e.g. XP-SP3 with all new Kernel and all new drivers) or a D3D10 -1 API (e.g. 10 syntax mapped to 9 hardware).
Why would the XP+1 option require an all new kernel? As far as I know DirectX 10 can be implemented perfectly with the old driver model, just not with the highest performance. Anyway, that wouldn't be much of a solution of course. Just like upgrading your CPU sometimes requires a new motherboard as well, DirectX 10 requires a new O.S.

It's strongest argument is that Direct 10 cannot run on XP, but with the recent 'hack' that's just no longer true... That's why a lot of people feel Microsoft has been lying, to force gamers to upgrade to Vista.
 
I understand that the uniform features of DirectX 10 hardware opens a lot of possibilities, but wouldn't most games for the next 2-3 years also support DirectX 9?

Yes, there would properly even a number of games that only use D3D 9.

This means they need an engine which abstracts all rendering operations for both API's, which automatically minimises the use of DX10-only features.

I had hoped that Microsoft offers such an abstraction as part of D3DX.

They also can't really justify doing things that are fast on any DX10 card but unacceptably slow even on a high-end DX9 card.

There were always “detailsâ€￾ sliders and multiple paths in PC games. We had games that use SM2 as basis and offers addition effects when run on SM3 hardware.

Considering that, offering DX10 'support' for XP would have only slowed the process of switching to the 'real' DX10, right?

Depends on what you call „real“ DX10. There are some “softâ€￾ features like the lower overhead that is hard to get on Windows XP. SM 4 itself would be less a problem.

I'm actually asking all this because I regularly visit other forums where Microsoft is bashed for not offering DX10 for XP. I think Microsoft is doing the right thing, but I'm looking for a one-liner to explain this to the masses. ;) The title of this thread is an attempt but not a very good one...

I think there is no one line explain because the decision have it pros and cons.
 
Why would the XP+1 option require an all new kernel? As far as I know DirectX 10 can be implemented perfectly with the old driver model, just not with the highest performance. Anyway, that wouldn't be much of a solution of course. Just like upgrading your CPU sometimes requires a new motherboard as well, DirectX 10 requires a new O.S.

I am already had prepare something about this possible solution. But it is not published yet.

It's strongest argument is that Direct 10 cannot run on XP, but with the recent 'hack' that's just no longer true... That's why a lot of people feel Microsoft has been lying, to force gamers to upgrade to Vista.

If you talk about the "Alky Project"? The pre preview sucks. It proves nothing at all.
 
There were always “detailsâ€￾ sliders and multiple paths in PC games. We had games that use SM2 as basis and offers addition effects when run on SM3 hardware.
I know, but my point was that nobody with an expensive high-end DirectX 9 card will accept a game that uses a DirectX 10 feature that causes it to faster on a cheap mid-end DirectX 10 card. It's just another reason for game developers not to switch to DirectX 10 too soon.
I think there is no one line explain because the decision have it pros and cons.
Good point.

I wonder whether Microsoft 'should' have delayed DirectX 10 itself: provide IHVs with all the details, let them market the unified cards as DirectX 9.1 or something like that, and only release DirectX 10 a year later when the drivers and games are ready and Vista is more common.
 
I am already had prepare something about this possible solution. But it is not published yet.
Do you mean running the DX10 driver in XP by providing some emulation layers? That would be awesome!
If you talk about the "Alky Project"? The pre preview sucks. It proves nothing at all.
I know, but it made people rethink "DirectX 10 cannot run on XP". The project has some potential, although it takes quite a detour. Anyway, I work for TransGaming, so I know how far emulation can go...
 
Furthermore the D3D10 specifications have forced the hardware to become a lot more orthogonal which, while it is somewhat exposed in D3D9, allows a whole range of possibilities.

nicked from wikipedia ;)
"An instruction set is said to be orthogonal if any instruction can use any register in any addressing mode. This terminology results from considering an instruction as a vector whose components are the instruction fields. One field identifies the registers to be operated upon, and another specifies the addressing mode. An orthogonal instruction set uniquely encodes all combinations of registers and addressing modes."

is this what you mean ?
 
is this what you mean ?
Not that specific... when I say that features are "orthogonal", I mean that your choice of when and how to use one doesn't affect the other.

In D3D9 this was certainly not the case. For example if you choose to use 32-bit floating point textures, you lose multi-sampling, blending and filtering (among other things). Another example is the few texture formats that worked with vertex texture fetch.

In D3D10 this still exists to an extent, but it is much less pronounced. Generally one can use any feature with any other feature where it makes sense. This makes programming a whole lot easier and more flexible.
 
Do you mean running the DX10 driver in XP by providing some emulation layers? That would be awesome!

I know, but it made people rethink "DirectX 10 cannot run on XP". The project has some potential, although it takes quite a detour. Anyway, I work for TransGaming, so I know how far emulation can go...
Don't think emulation, simply think D3D10 is a software layer on top of the hardware/driver combo, just like any HAL...

Now, Micro$oft added a requirement specifically to this one: hardware must be capable of all what the API can request whereas D3D9 and older ones only needed the driver to allow it. We could say D3D10 no longer has an HAL role.

For example, if AMD wanted to port D3D10 on XP or even UNIX, all they would have to do is an interpreter, and since everything is quite well documented, there's no need for reverse engeneering.
 
Do you mean running the DX10 driver in XP by providing some emulation layers? That would be awesome!

No I was talking about an article that I have written about this. Using driver from a different OS is a very hard task and I haven’t had the time to solve all the problems.

Don't think emulation, simply think D3D10 is a software layer on top of the hardware/driver combo, just like any HAL...

Now, Micro$oft added a requirement specifically to this one: hardware must be capable of all what the API can request whereas D3D9 and older ones only needed the driver to allow it. We could say D3D10 no longer has an HAL role.

For example, if AMD wanted to port D3D10 on XP or even UNIX, all they would have to do is an interpreter, and since everything is quite well documented, there's no need for reverse engeneering.

There are some legal problems with this. Additional the official documentation is incomplete. AMD/ATI has the full set but I am not sure if they allowed using it for anything else then driver development.
 
Don't think emulation, simply think D3D10 is a software layer on top of the hardware/driver combo, just like any HAL...
If you mean this in the same sense that "Wine Is Not an Emulator" then I completely understand. ;)
We could say D3D10 no longer has an HAL role.
Apart for the removal of device caps I can't see how this makes D3D10 significantly different to D3D9 when it comes to HAL. Or is the D3D9 runtime more complex than I imagine?
 
Before I get started, how about consider this analogy:

Imagine the whole set up like a house. Your OS and driver model are your foundations - start messing with those and you destabilise the entire building. It might not fall down, but you probably don't want to live in it regardless of the fact it looks fine from the outside. Likewise, you can't just pick the walls, doors, windows and roof and plonk them on top of the foundations in place on the other side of the city...

So many low-level details have changed you'd either have to accept getting an XP+1 OS (e.g. XP-SP3 with all new Kernel and all new drivers) or a D3D10 -1 API (e.g. 10 syntax mapped to 9 hardware).

Why would the XP+1 option require an all new kernel? As far as I know DirectX 10 can be implemented perfectly with the old driver model, just not with the highest performance. Anyway, that wouldn't be much of a solution of course. Just like upgrading your CPU sometimes requires a new motherboard as well, DirectX 10 requires a new O.S.
You're over simplifying the relationship between the core driver stack and the API. You are aware that API just stands for Application Programming Interface, right? Sure its not just some pass-through layer, but in itself it is just a standard way for us programmers to target a variety of hardware that adheres to a given standard.

Few people have access to the D3D10/WDDM functional specifications, but there are a lot of bits in it that are dependent on certain hardware requirements as well as software characteristics.

It's strongest argument is that Direct 10 cannot run on XP, but with the recent 'hack' that's just no longer true... That's why a lot of people feel Microsoft has been lying, to force gamers to upgrade to Vista.
I know Demirug sees some potential (and given how smart he is, I'm just waiting to be proven wrong :LOL:) but I don't think these "hacks" or emulators or whatever will EVER do more than get tech-demos running. To go for a sound-bite: You won't play D3D10/Vista games on XP even if they do 'hack' the D3D10 API to run on XP.

So you make a wrapper than re-maps D3D10 calls to some OpenGL equivalent that runs on a G80 driver for XP. Same hardware but effectively just bypassing the WDDM and using GL+XPDM instead.

That assumes that OpenGL is capable of mapping all the features in exactly the same way (may sound simple, but look closely enough and you'll see that the two API's have differed over the years on how they expose hardware details).

The D3D10 API, and the application writers targetting it, are working to a fixed platform and there is relatively few ways for the API to report meaningful hardware capability/functionality problems. There is less enumeration code as the App developer can safely assume things Just Work. The up-shot is that you rip out a Vista game to run on XP and your GL+XPDM behaves slightly differently you're going to be in a world of hurt - image quality issues being the nicer of the options here.

That's also assuming that any programmer targetting Vista+D3D10 writes perfect code. Any developer knows that, try as we might, this just doesn't happen for any sufficiently large codebase. If I accidentally write something that abuses the API slightly, but somewhere deep-down it's getting massaged and handled correctly then I'll think my code is fine and it'll pass the official QA tests. Now combine that again with the possibility of marginally different behaviour of a GL+XPDM route and you go crashing down in flames again.

Then there's a rather minor point that most builds targetting just Windows Vista will probably using a Vista SDK and may well utilize new API features that don't exist under XP. That's nothing to do with D3D10, but it may well mean that you get a whole bunch of other issues with a Vista game not working on the XP OS.

So, bottom line, you might get the SDK samples and a few tech demos running via these emulators, but I don't think you'll get any more than that.

I wonder whether Microsoft 'should' have delayed DirectX 10 itself: provide IHVs with all the details, let them market the unified cards as DirectX 9.1 or something like that, and only release DirectX 10 a year later when the drivers and games are ready and Vista is more common.
I don't think this would have worked at all if you think it through.

Nvidia/ATI have had access to the specs for YEARS - think about it, Vista was in development in some form or another for ~5 years (XP was out in 2001, and we know they turn-around quickly as there was a blog post saying that (some of) the MS engineers are already working on Vienna) and this wasn't some big surprise to them. The Direct3D Architecture Board has all the IHV's and a few key ISV's involved, so D3D10 isn't just what MS decided - it's born of all the key stakeholders inputs.

There was nothing stopping them releasing unified hardware a year or two years ago. My interpretation is that they chose not to because of market factors rather than technical ones (although the two are obviously going to be related). Why release it earlier than they have to? Why not wait till the software is ready as it gives us (the IHV's) a few extra months to better the competition?

The exact same argument applies if they released Vista without D3D10. They wouldn't have any technical requirement to release the new generation until the software was there as a lot of the functionality would go unused - where's the sense in pushing hard to get the HW to market when there is no SW? Chicken and egg anyone? ;)

Part of the big problem is the drivers and the driver model - D3D10 is effectively a client of WDDM, so what you're proposing makes no sense here either. You've looked at it backwards.

Now, Micro$oft added a requirement specifically to this one: hardware must be capable of all what the API can request whereas D3D9 and older ones only needed the driver to allow it.
You do realise how this works with the DDI's, right? I forget the details, but the reason why previous D3D's would allow such a wide range of capabilities and hardware was that deep down it supported several DDI's - the D3D9 *API* would allow DDI7-9 drivers (although might even have gone to DDI6) whereas the D3D10 *API* only allows DDI10 drivers. You still had hardware requirements (Admittedly, not quite so strict) to be a DDI9 driver so MS putting restrictions in isn't such a new thing...
 
Imagine the whole set up like a house. Your OS and driver model are your foundations - start messing with those and you destabilise the entire building. It might not fall down, but you probably don't want to live in it regardless of the fact it looks fine from the outside. Likewise, you can't just pick the walls, doors, windows and roof and plonk them on top of the foundations in place on the other side of the city...
Very good analogy, thanks!
You're over simplifying the relationship between the core driver stack and the API. You are aware that API just stands for Application Programming Interface, right?
I've implemented DirectX 9 in software, so yeah I know what an API is. ;)
Sure its not just some pass-through layer, but in itself it is just a standard way for us programmers to target a variety of hardware that adheres to a given standard.
Sure, but what does this have to do with the driver model? Why would it be any significant effort to implement DirectX 10 on the XPDM? As far as I know the API is totally orthogonal to the driver model.
Few people have access to the D3D10/WDDM functional specifications, but there are a lot of bits in it that are dependent on certain hardware requirements as well as software characteristics.
Could you give an example of that, even hypothetical if you have to?
...but I don't think these "hacks" or emulators or whatever will EVER do more than get tech-demos running. To go for a sound-bite: You won't play D3D10/Vista games on XP even if they do 'hack' the D3D10 API to run on XP.
I can see why that's true for cutting-edge games, but for games that only use DX9-class features throught DX10, why not run it on XP? Ok, I'm not saying this is preferred or that Microsoft should provide this possibility, but I do believe some form of 'hack' can work quite well for a certain class of games.
The up-shot is that you rip out a Vista game to run on XP and your GL+XPDM behaves slightly differently you're going to be in a world of hurt - image quality issues being the nicer of the options here.
If you have to choose between that or not running the game at all... Of course, such games should provide DX9 support in the first place, but then you also enter the gray zone of caps enumeration and such again.
If I accidentally write something that abuses the API slightly, but somewhere deep-down it's getting massaged and handled correctly then I'll think my code is fine and it'll pass the official QA tests. Now combine that again with the possibility of marginally different behaviour of a GL+XPDM route and you go crashing down in flames again.
I've seen my share of games abusing the API. But as long as you're able to behave exactly the same as the real runtime this can be fixed. Game developers interested in a 'hack' to run their DX10 game on XP just have to do some QA rounds again.

By the way, developers shouldn't rely on DX10 to be completely invariant on every platform supporting it. Some driver bugs can still go uncaught in the WHQL tests. And there are still things that cause undefined behaviour, which can create the expected effect on one machine but cause trouble on another. DX10 has a lot less of these potential dangers, but you can't rely on it blindly. QA on different systems remains necessary.
Then there's a rather minor point that most builds targetting just Windows Vista will probably using a Vista SDK and may well utilize new API features that don't exist under XP. That's nothing to do with D3D10, but it may well mean that you get a whole bunch of other issues with a Vista game not working on the XP OS.
True. That's another reason why the XP DX10 'hack' shouldn't be regarded a drop-in solution. But for individual games that perform the necessary tests I see it as a potential solution.

Say a company has realized too late that DX10 and Vista aren't as wide-spread as they expected when a project was started, or customers are creating a significant negative reputation because it doesn't run on XP. Then they have the choise of going through the trouble of implementing a DX9 engine, or they can resort to an on-the-shelf solution. The latter might require some extra testing, but it could be the cheaper option and just as reliable.
Nvidia/ATI have had access to the specs for YEARS...
I've done an internship in the NVIDIA DX driver team in 2004, so I know how far back these things originate. :)
The Direct3D Architecture Board has all the IHV's and a few key ISV's involved, so D3D10 isn't just what MS decided - it's born of all the key stakeholders inputs.
So you believe the new driver model and all the incompatibility it causes wasn't primarily Microsoft's decision, 3-5 years ago? I think Microsoft is interested in stability more than performance and this was their first motivation to change the driver model and clean up the API. Supporting DX10 on XP would be a step back in stability and this is why I think they won't support it, not performance.
They wouldn't have any technical requirement to release the new generation until the software was there as a lot of the functionality would go unused - where's the sense in pushing hard to get the HW to market when there is no SW? Chicken and egg anyone? ;)
What I meant is to release the necessary documentation and software, but only for IHV's and ISV's, not the public. So they both can prepare well but end-users don't get cranky. There's another risk though: People might decide to buy a DirectX 9 card but later regret it when DirectX 9.1 cards turn out to support DirectX 10 for Vista as well.
Part of the big problem is the drivers and the driver model - D3D10 is effectively a client of WDDM, so what you're proposing makes no sense here either. You've looked at it backwards.
I don't see any big issue here to provide a layer that does the translation, both backward and forward.
You do realise how this works with the DDI's, right? I forget the details, but the reason why previous D3D's would allow such a wide range of capabilities and hardware was that deep down it supported several DDI's - the D3D9 *API* would allow DDI7-9 drivers (although might even have gone to DDI6) whereas the D3D10 *API* only allows DDI10 drivers.
As far as I know every version just kept adding commands. It's not like they're totally separate. Anyway, obviously DX10 support for XP can only be implemented with DX10 hardware.

So unless anyone can convince me of the contrary I believe it's not a big technical issue to support DX10 on XP. It's just a hard decision they made to make the future of computer graphics brighter.
 
I know Demirug sees some potential (and given how smart he is, I'm just waiting to be proven wrong :LOL:) but I don't think these "hacks" or emulators or whatever will EVER do more than get tech-demos running. To go for a sound-bite: You won't play D3D10/Vista games on XP even if they do 'hack' the D3D10 API to run on XP.

Well people run D3D9 games with OpenGL wrappers on Linux. The same would be true some day for Direct3D 10 and Windows XP. But as with Windows games on Linux everyone who say that everything will work out of the box is very optimistic. You already list a huge number of reasons that made it hard to make it happen but only hard not impossible.

Compared to the challenge to run console games on a PC getting D3D10 games running on Windows XP is easier.

So unless anyone can convince me of the contrary I believe it's not a big technical issue to support DX10 on XP. It's just a hard decision they made to make the future of computer graphics brighter.

Depends on what you call a big issue. Every line of code that you add to a “deadâ€￾ project is wasted. And the WDK for Windows XP is dead.
 
Back
Top