b87143192281cc1b65afa522ef1bb26455c1aa46
[reactos.git] / reactos / include / ndk / fixmes.txt
1 NDK FIXMES
2 -----------
3
4 Order:
5 * Priority 1 = Most important to fix.
6 * Priority 5 = Least important to fix.
7
8 Format:
9 <Priority Level>
10 - FIXME Description (Assigned Fixer) [FIXME location(s)]
11
12 List:
13 Priority 1:
14 - LDR_DATA_TABLE_ENTRY has a ROSSYM Hack (GvG) [ldrtypes.h]
15 - FIXED: LDR_FLAGS are not correct (Alex) [ldrtypes.h]
16 - FIXED: Remove extra Process Info classes from ddk (Alex) [zwtypes.h]
17 - FIXED: PsEstablishWin32Callouts + Parameters don't match NT (Alex) [obtypes.h]
18 - FIXED: PROCESS_SET_PORT was removed, ThomasW did a patch about this? (Thomas) [pstypes.h]
19 - FIXED: Some files need cleanup (Alex + Eric) [zwfuncs.h, rtlfuncs.h, rtltypes.h]
20
21 Priority 2:
22 - FIXED: DEVICE_NODE has 2 fields not part of NT's defintion (Alex) [iotypes.h]
23 - Object Callbacks don't match NT's (Alex) [obtypes.h]
24 - Remove Create Callback Hack (Alex) [obtypes.h]
25 - Object header doesn't match NT (Alex) [obtypes.h] blocks on ->
26 - Object Directory + implementation doesn't match NT (Alex) [obtypes.h]
27
28 Priority 3:
29 - Some RTL Structures need review (Alex) [rtltypes.h]
30 - Pushlock support is needed to fix EPROCESS (Alex) [pstypes.h]
31 - MADDRESS_SPACE must be converted into the NT Type (Alex) [pstypes.h, mmtypes.h]
32
33 Priority 4:
34 - FIXED: Kernel and Memory Types are not architecture-specific (Eric) [ketypes.h, mmtypes.h]
35 - FIXED: Win32K Builds with windows.h (Filip) [extypes.h, ketypes.h]
36 - Move out stuff from umtypes.h into the actual header where they should go. Use ifdeffing
37 directly in that file to protect user-mode versus kernel-mode types. umtypes.h will only
38 end up containing the misc types that are needed for compatibility. This would create a
39 significant cleanup.
40
41 Priority 5:
42 - FIXED: LPC Types are totally wrong. (Alex) [lpctypes.h]
43 - Missing System Info Classes [zwtypes.h]
44 - FIXED: Process Priority Classes are messed up (Alex) [pstypes.h]
45
46 Generic Note:
47 One of the most difficult things is when certain structures require the IFS for some of their
48 members. Up until some time ago, the IFS was 1000$, so it was senseless to require it in order
49 to allow people to use the NDK. Recently, however, the IFS price went down to 100$. This is
50 still way too much. Even though the GNU NTIFS.H exists, I don't want to fallback on it. The
51 good news is that the WDK (Windows Driver Kit), which will supplant the DDK in about a year,
52 includes the IFS. At that point we can remove all the #ifndef/ifdef NTIFS hacks, since it'll
53 be OK to "force" IFS usage.
54
55 UPDATE:
56 However, I'm giving serious consideration of making the IFS a requirement, and suggesting
57 usage of the GNU IFS for anyone that needs it. The problem, however, is that the official
58 GNU IFS is outdated and quite invalid in many ways, compared to the ReactOS IFS (which still
59 isn't perfect yet). Also, this would include many more definitions then needed. A third
60 option that I'm considering is creating a new header, until the WDK is out, which will be
61 called ifstypes. It would be the brother of umtypes, but for kernel mode. Only a small
62 number of types will need to be included, and hence they will be easy to locate in case
63 the official ones change (by the time they do, the WDK will be out however, so no worries).
64 It would reduce all the ifdeffing to a single file.
65
66 UPDATE2:
67 No. This is a bad idea. I've just added a note to purge out large parts of umtypes.h into the
68 actual xxtypes.h files, and then use iffdefing. This is a direct contradiction to my idea of
69 generalizing all the IFS stuff together.
70
71 UPDATE3:
72 No. This is different...the user-mode types will always be unavailable in kernel-mode, and
73 dissipating them into the real files is a good thing, because they will never move out and
74 they are much easier to maintain. However, once the WDK comes out, all #ifdef ntifs will
75 become obsolete, and they will have to be hunted down and removed. Having a single file that
76 is automatically added if the IFS is not detected is much easier to remove once the time
77 comes.