mirror of
https://github.com/reactos/reactos
synced 2025-10-08 17:32:43 +02:00
Compare commits
935 Commits
backups/xe
...
backups/ha
Author | SHA1 | Date | |
---|---|---|---|
|
95e0fa9313 | ||
|
2cf308079f | ||
|
b0b68753ff | ||
|
5d915742e5 | ||
|
98dd342a5e | ||
|
9c6c715330 | ||
|
58f5ef812e | ||
|
0d62ee8f06 | ||
|
4ecc4b94c9 | ||
|
c4341bddc3 | ||
|
409e9165aa | ||
|
0da3627c3b | ||
|
c6262e3b0f | ||
|
e4549de4a3 | ||
|
f479dd02aa | ||
|
7b6225c3b5 | ||
|
2e13f4640d | ||
|
368f39faad | ||
|
4365851492 | ||
|
8e5b438930 | ||
|
9b3250ce17 | ||
|
3134614de5 | ||
|
7ba312f725 | ||
|
0e0a951483 | ||
|
0be32fc8d7 | ||
|
5fa260d21f | ||
|
692af5f653 | ||
|
e8ebef770f | ||
|
86f7b177e0 | ||
|
0452118dc0 | ||
|
f7270f23c4 | ||
|
832b1aa035 | ||
|
3de4927bd6 | ||
|
f48a391bbd | ||
|
7928f042c0 | ||
|
6e7d8b2e8d | ||
|
73e69c9d9e | ||
|
22ef1b4558 | ||
|
f25f86cc02 | ||
|
4a454cb7d6 | ||
|
b44c46dccd | ||
|
5b843df690 | ||
|
4e94521b41 | ||
|
1e4f24a1e8 | ||
|
52d68cf938 | ||
|
8e78ac6a62 | ||
|
6f5624c2a4 | ||
|
a6fd14c5c8 | ||
|
3925d142b0 | ||
|
758d835b13 | ||
|
07a3a7ec8e | ||
|
ce7fb8c1b9 | ||
|
269fab698e | ||
|
b9edb4f6e3 | ||
|
08711eda61 | ||
|
02b9843370 | ||
|
d09f528ad2 | ||
|
35b93a79d6 | ||
|
0825640a24 | ||
|
53f97f1bee | ||
|
2adf26048d | ||
|
d3493295ab | ||
|
d40d2d7c83 | ||
|
08e09be28a | ||
|
6d83f83840 | ||
|
ad59c91e1b | ||
|
d3d7a7f34b | ||
|
28cb187427 | ||
|
b635d34a4f | ||
|
9c93090a1f | ||
|
2a0636a4ef | ||
|
85da1524b5 | ||
|
2210ddb826 | ||
|
583ed2bdab | ||
|
56d1785ca5 | ||
|
612346a8b7 | ||
|
07e1646825 | ||
|
a04a10667a | ||
|
d4ff3d81a2 | ||
|
92106004ec | ||
|
acbcf1c29a | ||
|
49c3197c28 | ||
|
108c748343 | ||
|
b4d21f4107 | ||
|
14733418a7 | ||
|
0f1a1d9269 | ||
|
9ebf08eac5 | ||
|
b0c939bf13 | ||
|
ada13b04e0 | ||
|
5ec1eff5db | ||
|
431d4a6295 | ||
|
5638b3729f | ||
|
6088c647a3 | ||
|
6d92ae56c6 | ||
|
eb4fb35571 | ||
|
6850597254 | ||
|
8aa7fc3fb8 | ||
|
8b10660c85 | ||
|
486636c37b | ||
|
023ebef222 | ||
|
199110e78f | ||
|
81517874a0 | ||
|
050b5c1946 | ||
|
9f9dfd53cf | ||
|
03a11e092f | ||
|
97d546c77a | ||
|
bde6eea1e8 | ||
|
dfaed2eb99 | ||
|
e75662b821 | ||
|
84dc5b02f3 | ||
|
2e307cf29e | ||
|
cc3f2972eb | ||
|
2aed25b015 | ||
|
3c13baae03 | ||
|
a8f77a38bd | ||
|
f0300f5044 | ||
|
2032b01e66 | ||
|
3a00c096a3 | ||
|
98d6ba9ebf | ||
|
a292f28ef5 | ||
|
3aae85b431 | ||
|
521a302ab8 | ||
|
ad6a045f5b | ||
|
be123f5a26 | ||
|
f84f0b7a10 | ||
|
537bcb48fa | ||
|
7a0a377edd | ||
|
d31647b31f | ||
|
698dee2b87 | ||
|
a56f2840b3 | ||
|
90be5e4d9b | ||
|
5f9eec4d04 | ||
|
2c8f96ecf4 | ||
|
c855fc1edb | ||
|
c01f0050df | ||
|
6f84809a47 | ||
|
b8be54888b | ||
|
1f9b723f25 | ||
|
5e61398fc3 | ||
|
358a2167ab | ||
|
e6523bb71e | ||
|
36a1230e2b | ||
|
a10ed009b7 | ||
|
e36f90a9f9 | ||
|
fcc95c66a8 | ||
|
9b991b83fd | ||
|
eb4f7c8b2f | ||
|
34fd8c7135 | ||
|
c81ba78f7b | ||
|
6a38a2f69d | ||
|
5c73d34569 | ||
|
58d41e3c76 | ||
|
e43573196c | ||
|
67af25e720 | ||
|
fe2f78c54c | ||
|
a5b363cd94 | ||
|
de63015392 | ||
|
122bcd196f | ||
|
97679e7210 | ||
|
c0fb7448b1 | ||
|
6c73106dfd | ||
|
5dd6792d1d | ||
|
ff7e7c8ae6 | ||
|
7022204505 | ||
|
b2bf468fad | ||
|
5e3cc7bc94 | ||
|
6b36fb6848 | ||
|
91269f987b | ||
|
876fc32e53 | ||
|
d556da508d | ||
|
4c9e39ee83 | ||
|
622c4d86e9 | ||
|
6c4cbed9a2 | ||
|
e6ce20818e | ||
|
a340c27ec1 | ||
|
d3558a7c23 | ||
|
8895954185 | ||
|
953b49324b | ||
|
31c9627540 | ||
|
74346861b0 | ||
|
daafc242e6 | ||
|
f7289e9d4a | ||
|
19b47127b0 | ||
|
93fc422f43 | ||
|
2bd961bd1d | ||
|
bff830321b | ||
|
610ec85471 | ||
|
497eba8519 | ||
|
dfcc16249d | ||
|
c2db525161 | ||
|
7d58c61349 | ||
|
5620de4ea7 | ||
|
ac3457f145 | ||
|
71183fb50d | ||
|
7d472ee662 | ||
|
4e39fcafa0 | ||
|
d7990aa664 | ||
|
4fedfe1bf7 | ||
|
5aa3039278 | ||
|
be0b8327dd | ||
|
e64361f015 | ||
|
52e8ffce44 | ||
|
8407954c54 | ||
|
d1c9fb08f5 | ||
|
c296b39f61 | ||
|
af07d5f933 | ||
|
23c534f821 | ||
|
8322ac0d33 | ||
|
8a79bd9b46 | ||
|
44efc84fb4 | ||
|
0ddd1be07e | ||
|
28277f305b | ||
|
40c9cd2c5d | ||
|
bb29508c33 | ||
|
dc2b5795d3 | ||
|
67984c6757 | ||
|
8655ed62ef | ||
|
7ee590086a | ||
|
721be9ec7b | ||
|
78df6635f5 | ||
|
2936d05aa3 | ||
|
8a1b2d5c2b | ||
|
c82da07ee2 | ||
|
c9b36033d8 | ||
|
1369d1649e | ||
|
2fc5a38d16 | ||
|
db15209f07 | ||
|
3b440449dd | ||
|
04480b3be7 | ||
|
9254444a9c | ||
|
8064f8c236 | ||
|
b6e80ebb53 | ||
|
8e4e06d0de | ||
|
2773203033 | ||
|
d64e8b4096 | ||
|
902a400b19 | ||
|
4ea9392a55 | ||
|
c75115824f | ||
|
5979e80363 | ||
|
cc6ffdce48 | ||
|
c3e6b1f6a4 | ||
|
d9cbcc2128 | ||
|
d005fc9f1a | ||
|
40dc1919bc | ||
|
93232de775 | ||
|
dd349cfd8b | ||
|
3b9c960f59 | ||
|
8e86b33472 | ||
|
f29b15b285 | ||
|
d6ebf05ea0 | ||
|
51c604714a | ||
|
7afd05c217 | ||
|
9b619507af | ||
|
4a200035de | ||
|
3c215ef287 | ||
|
a314f1c4ad | ||
|
9766bda54e | ||
|
bd691c850c | ||
|
945ed508b6 | ||
|
a4a9299b16 | ||
|
eea2c1d47c | ||
|
cf3c6e6296 | ||
|
541151ea53 | ||
|
d8e78cc66b | ||
|
199b9bce22 | ||
|
8f08cb04c9 | ||
|
382e1c8635 | ||
|
9b63d671e9 | ||
|
12e95836ec | ||
|
a11dac9b2a | ||
|
8e3b9a7f21 | ||
|
0140b609d9 | ||
|
48e0fe423b | ||
|
a0f4cc2feb | ||
|
7661ff0d5f | ||
|
9d1991ed72 | ||
|
68a5299cd2 | ||
|
fae2febad9 | ||
|
d3bf39b1f2 | ||
|
2bdea48b49 | ||
|
3988ea5599 | ||
|
1d354a90fe | ||
|
7a42053e8b | ||
|
ef28baf965 | ||
|
4be9703fa6 | ||
|
89ac547ef5 | ||
|
d46e87dfdb | ||
|
5c050fc41f | ||
|
89d4545331 | ||
|
3eb22d7480 | ||
|
151fe7f976 | ||
|
7e100086d3 | ||
|
c21d161abd | ||
|
51e10671c0 | ||
|
79811989d8 | ||
|
d23d39a743 | ||
|
396b274742 | ||
|
5f53398bd1 | ||
|
8925d0aca7 | ||
|
6c58ea3cd7 | ||
|
50c2bb7322 | ||
|
65ecbfa03d | ||
|
f15bf7924f | ||
|
16c7672bfd | ||
|
15436e184a | ||
|
46903e60ea | ||
|
c18f64ffe6 | ||
|
e2a3507651 | ||
|
dca78ab993 | ||
|
ff230341e0 | ||
|
5cda38b218 | ||
|
15d5aa6c62 | ||
|
a51afa23e7 | ||
|
aa9df5babf | ||
|
79ab4b5644 | ||
|
919125b189 | ||
|
14e3b7395b | ||
|
267707560d | ||
|
4eb4922aad | ||
|
2125679164 | ||
|
755c848950 | ||
|
084cc36104 | ||
|
077fa44358 | ||
|
30a6f296fd | ||
|
493ca2fe71 | ||
|
8539083b08 | ||
|
8209b87210 | ||
|
5420982bbb | ||
|
eaf273b4ef | ||
|
02bd986e69 | ||
|
d280ce9240 | ||
|
bc4215dca5 | ||
|
046d85a84a | ||
|
2170f23f23 | ||
|
444df32c83 | ||
|
005201f320 | ||
|
56ac965dc9 | ||
|
f992a4e417 | ||
|
f5dfe7db02 | ||
|
ff9c6f6419 | ||
|
9a7a1b2147 | ||
|
8ab1501eb8 | ||
|
625fd620c6 | ||
|
73970db31b | ||
|
3fd1a79ff3 | ||
|
235fba2f3b | ||
|
13da42279f | ||
|
dbf298de73 | ||
|
8ebf837814 | ||
|
356bf8d78c | ||
|
f08cae7194 | ||
|
06bd6d6ba8 | ||
|
99cf3f8baa | ||
|
28f775e06d | ||
|
70c62c571a | ||
|
ba4e11025f | ||
|
a6114ec37f | ||
|
db07afe07a | ||
|
1d02274287 | ||
|
fb6b25f553 | ||
|
753209adc2 | ||
|
9a714d7f55 | ||
|
5a9947460c | ||
|
6d73043da8 | ||
|
af4ad253eb | ||
|
19fedef475 | ||
|
0b4e482a01 | ||
|
0a57f377c6 | ||
|
f03def7913 | ||
|
53dea75f28 | ||
|
a484af08a4 | ||
|
3da468a670 | ||
|
ef09f963dd | ||
|
9734b13b5c | ||
|
c717085add | ||
|
0c07cf98ad | ||
|
566e4b53a3 | ||
|
a35b024258 | ||
|
4710304a0d | ||
|
7132276795 | ||
|
025d7c475c | ||
|
954200311b | ||
|
67c200f2f9 | ||
|
3562ba1c03 | ||
|
edbcb1e0f4 | ||
|
6a9d46a3bb | ||
|
fef9d4dc69 | ||
|
7c91ae9295 | ||
|
ce50274dc3 | ||
|
7cf07db3d7 | ||
|
ef8c4070db | ||
|
daae3048fd | ||
|
489bda971f | ||
|
8f6865c18a | ||
|
f0365b3d7a | ||
|
ee15175e82 | ||
|
e91e67f144 | ||
|
80a245fca0 | ||
|
068dd36e8b | ||
|
2d4d9762bb | ||
|
499eae2bd2 | ||
|
3251827a3d | ||
|
c6af94415d | ||
|
ae46f5aa6a | ||
|
b9345f5cd1 | ||
|
c12e487549 | ||
|
a01ddd88cf | ||
|
c6e139c501 | ||
|
deb7a80fdd | ||
|
1e4c8ee564 | ||
|
95f0ca7fdb | ||
|
a9a36a579f | ||
|
4169a5a54b | ||
|
767c5ce44f | ||
|
8a99b51cbf | ||
|
5c2b2a05bf | ||
|
59605ac1e7 | ||
|
5444c47450 | ||
|
a434b1aa6d | ||
|
469c016da3 | ||
|
ff3d5dbe7d | ||
|
c78d9b68e1 | ||
|
4a320e11d6 | ||
|
758ab5ab61 | ||
|
7f2ec8aa5d | ||
|
64016b704d | ||
|
130a036ab2 | ||
|
13c65b3f47 | ||
|
366a911edc | ||
|
f887cf0f05 | ||
|
7143bd0824 | ||
|
96507ffe7c | ||
|
236ce44dac | ||
|
f6259d7ec4 | ||
|
efbd608bb5 | ||
|
c0d381402e | ||
|
4f18890314 | ||
|
1a1adca582 | ||
|
5eefe9bdd1 | ||
|
f8707b368d | ||
|
ad71bcda91 | ||
|
610b6a4048 | ||
|
3e1728b45b | ||
|
65fd7f2386 | ||
|
20e1654594 | ||
|
680c995ee1 | ||
|
705a57e075 | ||
|
d1258e99fa | ||
|
9925309a13 | ||
|
e3ed3792ca | ||
|
204ad68d21 | ||
|
9900f1ee91 | ||
|
588a9bc3cb | ||
|
2778f92cc3 | ||
|
07c4b32cdd | ||
|
d3a3c52a0a | ||
|
9633616f5b | ||
|
5276f2c8bb | ||
|
2ab26c9f4d | ||
|
9e8e05cf39 | ||
|
b5a67666e6 | ||
|
73abbbd77e | ||
|
164b25c391 | ||
|
3e604d23e7 | ||
|
321df5d69c | ||
|
1af2b69826 | ||
|
a6d58d5291 | ||
|
c9d742f6cf | ||
|
8e3623c1af | ||
|
e3f555a8c9 | ||
|
3596d2a339 | ||
|
e3cfe86657 | ||
|
77f673dd82 | ||
|
1595459dbc | ||
|
b5e1fdb37a | ||
|
58f27e918c | ||
|
3b2016d0ac | ||
|
1d7902f557 | ||
|
4650be627f | ||
|
ce068ea890 | ||
|
2e4d4d6dfd | ||
|
8b83fb933a | ||
|
d8de94af8a | ||
|
725169d745 | ||
|
be5ad51996 | ||
|
e04c28b61f | ||
|
4d21e1f410 | ||
|
2c52e31b61 | ||
|
d373bd32e7 | ||
|
9eea30f8b3 | ||
|
c618c35523 | ||
|
5cc3617a10 | ||
|
b97fb9c707 | ||
|
f4d5dc8eb3 | ||
|
1bb602a345 | ||
|
0669fda144 | ||
|
de322e6992 | ||
|
26fca9d4cf | ||
|
f239820920 | ||
|
f9eab6bf5e | ||
|
7fdb1a2266 | ||
|
a1a5cdb7ca | ||
|
aa1e7d31e8 | ||
|
0bbb2a98cd | ||
|
b19d74062e | ||
|
0856013938 | ||
|
07d22c372d | ||
|
4cf87b40e7 | ||
|
747c64b7c4 | ||
|
ae955c39ed | ||
|
c3151ba005 | ||
|
d53d55734a | ||
|
44b8b1697a | ||
|
cf9968925b | ||
|
29075cd391 | ||
|
0f3a2ad610 | ||
|
88b8879367 | ||
|
8e0a6b7b07 | ||
|
a609b028a1 | ||
|
e133ad2f81 | ||
|
7bf3a79d15 | ||
|
f266cbb1c2 | ||
|
d69a2a31dd | ||
|
81175de9c1 | ||
|
6479d4526a | ||
|
3b0038292f | ||
|
cdad35b774 | ||
|
d160d80677 | ||
|
aa82a6a072 | ||
|
e0df17c6fd | ||
|
59057f2e70 | ||
|
113cab2be5 | ||
|
21616080f6 | ||
|
31ad5f02a9 | ||
|
57074db1aa | ||
|
0ee8822197 | ||
|
4b83cb1f77 | ||
|
eb67c61944 | ||
|
497256b40e | ||
|
d98066b2aa | ||
|
4a0a216d3e | ||
|
3bfd20f396 | ||
|
8cd2554cff | ||
|
f5e002e1c9 | ||
|
aaad0af903 | ||
|
16c356bfa1 | ||
|
b4cb154b4a | ||
|
94b818d7c0 | ||
|
697e997b8f | ||
|
8098dc0a97 | ||
|
9bd5178ad2 | ||
|
b76b475c32 | ||
|
aec8d2f143 | ||
|
1754d20379 | ||
|
d3e93a6629 | ||
|
9deb8137ef | ||
|
ef09428e85 | ||
|
38765d4930 | ||
|
a43ea85ae0 | ||
|
4d69a0fddb | ||
|
61eed1a9da | ||
|
299cedf334 | ||
|
3b65c45a7c | ||
|
d3d66f5e68 | ||
|
514f6f4626 | ||
|
448fd2a82a | ||
|
fd45cff559 | ||
|
3ff128077e | ||
|
93d9bcad1a | ||
|
7d84d6b837 | ||
|
b3bc018212 | ||
|
ac4f85a89e | ||
|
1b74c03fb1 | ||
|
8b3da072dd | ||
|
3dcd5f1ff6 | ||
|
f2ff7df489 | ||
|
8625b6ac08 | ||
|
2954ec2db0 | ||
|
ae8bd99934 | ||
|
d4719c91ec | ||
|
30eee0c5d1 | ||
|
a5e4e00e8a | ||
|
2caba7c355 | ||
|
e661bfdc12 | ||
|
17c0f2829a | ||
|
499a2712a9 | ||
|
fbf1722197 | ||
|
068cf10896 | ||
|
b63e292fbd | ||
|
d864df4b3b | ||
|
887716169a | ||
|
b76c3856ee | ||
|
6048617aab | ||
|
1311a0191c | ||
|
469fa69ab7 | ||
|
10c1c40139 | ||
|
e960d42247 | ||
|
9d04f9a976 | ||
|
a6c04adbb2 | ||
|
cbe3dc72cb | ||
|
428572a138 | ||
|
0af7b6f7a0 | ||
|
5a4296bcec | ||
|
5be76fa181 | ||
|
cc03f70b55 | ||
|
7971e8425b | ||
|
c09b52bf01 | ||
|
46f26a073b | ||
|
bc47c238df | ||
|
5e0373034a | ||
|
dc337def98 | ||
|
fd44a4b514 | ||
|
39da2fef47 | ||
|
91a2889e07 | ||
|
95d1b8ae62 | ||
|
434303caa3 | ||
|
8b43bd8c4c | ||
|
31b7f64f58 | ||
|
52f8761d3a | ||
|
ff246534c9 | ||
|
fb0959e85a | ||
|
4d14d7da13 | ||
|
bb40279864 | ||
|
a7753f898e | ||
|
c818943efa | ||
|
2d6c9998be | ||
|
73d83fbb2b | ||
|
7bbb54b0e7 | ||
|
0f030a82b0 | ||
|
99cc88158b | ||
|
f8d053290e | ||
|
06e00cb9c9 | ||
|
762e020a20 | ||
|
3e334c65fc | ||
|
a5579f945f | ||
|
01251016ad | ||
|
eb4f82ce4d | ||
|
cc6150fb29 | ||
|
14b69747a2 | ||
|
6a7e9f4bf7 | ||
|
4fd0801d50 | ||
|
186c8b72d1 | ||
|
69b04c6fd2 | ||
|
eb4f850ff3 | ||
|
65a5620cd8 | ||
|
1ac8300db4 | ||
|
2486be430f | ||
|
37e38723e7 | ||
|
fbf52b7050 | ||
|
b7754ab78d | ||
|
7cee43970a | ||
|
c37765923c | ||
|
5d7043ea5a | ||
|
da4957ec53 | ||
|
f53f915435 | ||
|
836c8f9265 | ||
|
3f0cb9fa9f | ||
|
609922c292 | ||
|
6c512c6430 | ||
|
d1dbe1be23 | ||
|
a8f8cec2a4 | ||
|
d143eebd0f | ||
|
4b08e9770a | ||
|
0a48555ba9 | ||
|
7af0efc0bc | ||
|
3ab6c437cc | ||
|
402b13b071 | ||
|
faeb567e1c | ||
|
8502799382 | ||
|
ffe54a1108 | ||
|
2df663e3fe | ||
|
5e400ded46 | ||
|
46794424c7 | ||
|
bfe3229a7d | ||
|
ef09f86407 | ||
|
580b785a18 | ||
|
b4a5cd914f | ||
|
0794ad5aa6 | ||
|
c57e3d0690 | ||
|
300fd866a2 | ||
|
dfe571622c | ||
|
ac243d95f2 | ||
|
a9a05b022d | ||
|
2e71724ae1 | ||
|
ddec33b110 | ||
|
f44cbee050 | ||
|
e37f6810a5 | ||
|
7554c281d5 | ||
|
8342ea7301 | ||
|
3f77a1c166 | ||
|
a4cb3017e6 | ||
|
05548c5587 | ||
|
bae68b41b1 | ||
|
6a36797b61 | ||
|
1b5f61f4e6 | ||
|
4cd0b32494 | ||
|
a965b968f2 | ||
|
e0463986d3 | ||
|
b0d3f5b991 | ||
|
317d4942bd | ||
|
d604caaaf3 | ||
|
14e5873c84 | ||
|
bd0ef4def4 | ||
|
aab0294f3b | ||
|
ab4dfd00f0 | ||
|
3fb65d4597 | ||
|
19955a57e1 | ||
|
acfd0635dd | ||
|
785eb54c6a | ||
|
37bfae8d86 | ||
|
ba98c65d7a | ||
|
f6e5d12f4c | ||
|
a50fde81ae | ||
|
204dc0088b | ||
|
826e4d001b | ||
|
99e07a1ddf | ||
|
138bbbaa3a | ||
|
05061cedaa | ||
|
63ac2d0f1f | ||
|
754ccb0eb6 | ||
|
3814e88279 | ||
|
d4e71ef096 | ||
|
7ccf07aecc | ||
|
81405a8541 | ||
|
c893e787ea | ||
|
c7ccd70dbd | ||
|
59801357f9 | ||
|
314e0eaf59 | ||
|
c2167ebb58 | ||
|
66c72376e1 | ||
|
f104c62bd6 | ||
|
11ae17704c | ||
|
1284e1351f | ||
|
192c84808f | ||
|
2054ea72e9 | ||
|
8f5dd38cdd | ||
|
2cc8819bc6 | ||
|
f31239f089 | ||
|
c8ba8dd860 | ||
|
3ab1c49a3e | ||
|
251cbb167f | ||
|
60410fb891 | ||
|
cba0f39ae7 | ||
|
f050a320ca | ||
|
4345881c2a | ||
|
6dfaa9b3a5 | ||
|
87ee9dfafb | ||
|
84321058f9 | ||
|
f30aac562d | ||
|
3bf9dce002 | ||
|
0d5c780913 | ||
|
390d16bed5 | ||
|
9e9a326ead | ||
|
095faa8449 | ||
|
a6b2363ea0 | ||
|
56f5461bff | ||
|
88e9416cb8 | ||
|
83ff161361 | ||
|
d101bc4e2d | ||
|
f4ff6e70b3 | ||
|
83210a64d6 | ||
|
17990a22f5 | ||
|
cd1a3da016 | ||
|
b2970c097e | ||
|
819d60094a | ||
|
2e0ff75066 | ||
|
28c50308c7 | ||
|
9c3a32fd9e | ||
|
08d5e5e7e5 | ||
|
f5f855488d | ||
|
a189416191 | ||
|
d520f41934 | ||
|
ed558f123b | ||
|
925b767f99 | ||
|
6b3ec8469e | ||
|
f5b60bc69e | ||
|
ca33e9fc4f | ||
|
ab2a7524d0 | ||
|
9631980621 | ||
|
9038f375f7 | ||
|
c1d7682a91 | ||
|
c50ea61c80 | ||
|
d4e3987bad | ||
|
45c9cc8bde | ||
|
584e9b9488 | ||
|
e3502f710b | ||
|
5347091d15 | ||
|
0aec39dcbe | ||
|
99848068d0 | ||
|
9d5a92b86b | ||
|
8ab10b3efd | ||
|
f4732fef7d | ||
|
45a93411a7 | ||
|
4f0032f8d7 | ||
|
83804c9749 | ||
|
53a8f66404 | ||
|
ad1bdc040e | ||
|
ad04a63867 | ||
|
95aa074b1e | ||
|
b2f1b36fd9 | ||
|
321c3545d8 | ||
|
639193ca53 | ||
|
bfef768a76 | ||
|
bef9eaff74 | ||
|
ed5cf2efc8 | ||
|
c25cc23eb8 | ||
|
8addb6ae11 | ||
|
6eab0b40a0 | ||
|
03586e2534 | ||
|
c1643db40b | ||
|
7c9de0d8d6 | ||
|
c507c88f25 | ||
|
1503cdc0b4 | ||
|
df3ceea77c | ||
|
2dc107e012 | ||
|
64bd0a6bd1 | ||
|
988bbc4f12 | ||
|
d92ffc0b93 | ||
|
15e83c5e04 | ||
|
5ecd1f57d9 | ||
|
bb18fc25e9 | ||
|
ecb9480129 | ||
|
e4d12844dc | ||
|
a89c7dcf3d | ||
|
ba8d788967 | ||
|
26d0d00e72 | ||
|
7240f0cf76 | ||
|
e87cc02785 | ||
|
f0881728a7 | ||
|
ec70aa71b0 | ||
|
5fb6c9fc9c | ||
|
e5541e23e6 | ||
|
b494dd6e5e | ||
|
cb3ec720bd | ||
|
7aea00d1d6 | ||
|
7a4b2f8d8f | ||
|
b4f774ec1e | ||
|
cc0fc0d35c | ||
|
4619446ed0 | ||
|
e7f345e0a2 | ||
|
d06d236296 | ||
|
2b005b9bfa | ||
|
85b03712d5 | ||
|
72448a5e50 | ||
|
1413f0bd4c | ||
|
518bede98c | ||
|
a344dd8f15 | ||
|
700e2c8098 | ||
|
6193faf9cd | ||
|
794ac95666 | ||
|
5e938a6c68 | ||
|
9ea1665416 | ||
|
1272e9ca67 | ||
|
f97e4e54cd | ||
|
be1ac79fa0 | ||
|
170980ae6f | ||
|
3ed044e92e | ||
|
012786bd8f | ||
|
5c0d2bc84c | ||
|
2163a01133 | ||
|
4c7bbd9c39 | ||
|
34fea9606b | ||
|
09b3ff1ebb | ||
|
00457dbaa6 | ||
|
ef499ee12a | ||
|
dba8d6b88a | ||
|
1aa91e26e5 | ||
|
34ef0d66de | ||
|
0d7ebb711c | ||
|
a104816de4 | ||
|
355593bafa | ||
|
607f793fc0 | ||
|
2fb48b3787 | ||
|
14245cb4ed | ||
|
9dafeab3da | ||
|
4b55dd45ab | ||
|
f40c4fef66 | ||
|
633fbd38c8 | ||
|
de07d08907 | ||
|
33798a8e08 | ||
|
daaeafc22b | ||
|
59b2cea3cd | ||
|
fd884b9ca2 | ||
|
e24313d28a | ||
|
e13bb66f6e | ||
|
651c6eedd3 | ||
|
9f03cb709d | ||
|
bf82efbfa5 | ||
|
238b5dae79 | ||
|
44917b7007 | ||
|
4a13ec527a | ||
|
1ec0b9da80 | ||
|
bf66d82efc | ||
|
3c262aeb05 | ||
|
c46d9a027b | ||
|
a41298140f | ||
|
5fd1b3d346 | ||
|
525d26d031 | ||
|
5a2cbdf365 | ||
|
47418050f9 | ||
|
2bb29cba04 | ||
|
0bbffbfe78 | ||
|
8c8bc52df8 | ||
|
e631ea01ae | ||
|
f240bd9f61 | ||
|
253b2e8c8a | ||
|
848d499f3d | ||
|
5416ad8915 | ||
|
d0551f0760 | ||
|
9719715092 | ||
|
dcf3800a39 | ||
|
c7f2fa3f15 | ||
|
ab4e0e3543 | ||
|
34b6e5c4e2 | ||
|
65c31ced72 | ||
|
fbb262fc76 | ||
|
bd38382acb | ||
|
83c66bb1c1 | ||
|
4276c73ec9 | ||
|
da87b75712 | ||
|
114fa63aa5 | ||
|
2565867874 | ||
|
278d41accc | ||
|
13d5ffb301 | ||
|
bdcd967755 | ||
|
59a36a978f | ||
|
c5bcf76042 | ||
|
793415253c | ||
|
372172fd93 | ||
|
e8d9ee409c | ||
|
8ebdfa0f0d | ||
|
592490d2ae | ||
|
1983bc6012 | ||
|
0e6919a8c0 | ||
|
2786a429ac |
0
.gitignore
vendored
0
.gitignore
vendored
@@ -2,19 +2,22 @@
|
||||
#ifndef __WIN32K_BITMAPS_H
|
||||
#define __WIN32K_BITMAPS_H
|
||||
|
||||
#include <win32k/dc.h>
|
||||
#include <win32k/gdiobj.h>
|
||||
|
||||
/* GDI logical bitmap object */
|
||||
typedef struct _BITMAPOBJ
|
||||
{
|
||||
SURFOBJ SurfObj;
|
||||
FLONG flHooks;
|
||||
FLONG flFlags;
|
||||
SIZE dimension; /* For SetBitmapDimension(), do NOT use
|
||||
to get width/height of bitmap, use
|
||||
bitmap.bmWidth/bitmap.bmHeight for
|
||||
that */
|
||||
SIZE dimension; /* For SetBitmapDimension(), do NOT use
|
||||
to get width/height of bitmap, use
|
||||
bitmap.bmWidth/bitmap.bmHeight for
|
||||
that */
|
||||
#ifdef NTOS_MODE_USER
|
||||
PVOID BitsLock;
|
||||
#else
|
||||
PFAST_MUTEX BitsLock; /* You need to hold this lock before you touch
|
||||
the actual bits in the bitmap */
|
||||
#endif
|
||||
|
||||
/* For device-independent bitmaps: */
|
||||
DIBSECTION *dib;
|
||||
@@ -29,10 +32,16 @@ typedef struct _BITMAPOBJ
|
||||
((HBITMAP) GDIOBJ_AllocObj (GDI_OBJECT_TYPE_BITMAP))
|
||||
#define BITMAPOBJ_FreeBitmap(hBMObj) \
|
||||
GDIOBJ_FreeObj((HGDIOBJ) hBMObj, GDI_OBJECT_TYPE_BITMAP)
|
||||
#define BITMAPOBJ_LockBitmap(hBMObj) GDIOBJ_LockObj((HGDIOBJ) hBMObj, GDI_OBJECT_TYPE_BITMAP)
|
||||
#define BITMAPOBJ_UnlockBitmap(hBMObj) GDIOBJ_UnlockObj((HGDIOBJ) hBMObj)
|
||||
/* NOTE: Use shared locks! */
|
||||
#define BITMAPOBJ_LockBitmap(hBMObj) (PBITMAPOBJ)EngLockSurface((HSURF)hBMObj)
|
||||
#define BITMAPOBJ_UnlockBitmap(pBMObj) EngUnlockSurface(&pBMObj->SurfObj)
|
||||
BOOL INTERNAL_CALL BITMAP_Cleanup(PVOID ObjectBody);
|
||||
|
||||
BOOL INTERNAL_CALL BITMAPOBJ_InitBitsLock(BITMAPOBJ *pBMObj);
|
||||
#define BITMAPOBJ_LockBitmapBits(pBMObj) ExAcquireFastMutex((pBMObj)->BitsLock)
|
||||
#define BITMAPOBJ_UnlockBitmapBits(pBMObj) ExReleaseFastMutex((pBMObj)->BitsLock)
|
||||
void INTERNAL_CALL BITMAPOBJ_CleanupBitsLock(BITMAPOBJ *pBMObj);
|
||||
|
||||
INT FASTCALL BITMAPOBJ_GetWidthBytes (INT bmWidth, INT bpp);
|
||||
HBITMAP FASTCALL BITMAPOBJ_CopyBitmap (HBITMAP hBitmap);
|
||||
INT FASTCALL DIB_GetDIBWidthBytes (INT width, INT depth);
|
@@ -71,16 +71,9 @@ typedef struct
|
||||
#define BRUSHOBJ_AllocBrush() ((HBRUSH) GDIOBJ_AllocObj (GDI_OBJECT_TYPE_BRUSH))
|
||||
#define BRUSHOBJ_FreeBrush(hBrush) GDIOBJ_FreeObj((HGDIOBJ)hBrush, GDI_OBJECT_TYPE_BRUSH)
|
||||
#define BRUSHOBJ_LockBrush(hBrush) ((PGDIBRUSHOBJ)GDIOBJ_LockObj((HGDIOBJ)hBrush, GDI_OBJECT_TYPE_BRUSH))
|
||||
#define BRUSHOBJ_UnlockBrush(hBrush) GDIOBJ_UnlockObj((HGDIOBJ)hBrush)
|
||||
#define BRUSHOBJ_UnlockBrush(pBrush) GDIOBJ_UnlockObjByPtr(pBrush)
|
||||
BOOL INTERNAL_CALL BRUSH_Cleanup(PVOID ObjectBody);
|
||||
|
||||
#ifdef __USE_W32API
|
||||
typedef struct _PATRECT {
|
||||
RECT r;
|
||||
HBRUSH hBrush;
|
||||
} PATRECT, * PPATRECT;
|
||||
#endif
|
||||
|
||||
HBRUSH STDCALL
|
||||
NtGdiCreateBrushIndirect(
|
||||
CONST LOGBRUSH *LogBrush);
|
||||
@@ -109,32 +102,6 @@ BOOL STDCALL
|
||||
NtGdiFixBrushOrgEx(
|
||||
VOID);
|
||||
|
||||
BOOL STDCALL
|
||||
NtGdiPatBlt(
|
||||
HDC hDC,
|
||||
INT XLeft,
|
||||
INT YLeft,
|
||||
INT Width,
|
||||
INT Height,
|
||||
DWORD ROP);
|
||||
|
||||
BOOL STDCALL
|
||||
NtGdiPolyPatBlt(
|
||||
HDC hDC,
|
||||
DWORD dwRop,
|
||||
PPATRECT pRects,
|
||||
INT cRects,
|
||||
ULONG Reserved);
|
||||
|
||||
BOOL STDCALL
|
||||
NtGdiPatBlt(
|
||||
HDC hDC,
|
||||
INT XLeft,
|
||||
INT YLeft,
|
||||
INT Width,
|
||||
INT Height,
|
||||
DWORD ROP);
|
||||
|
||||
BOOL STDCALL
|
||||
NtGdiSetBrushOrgEx(
|
||||
HDC hDC,
|
23
caret.h
Normal file
23
caret.h
Normal file
@@ -0,0 +1,23 @@
|
||||
/*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS system libraries
|
||||
* FILE: include/win32k/caret.h
|
||||
* PURPOSE: GDI32/Win32k Caret interface
|
||||
* PROGRAMMER:
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef WIN32K_CARET_H_INCLUDED
|
||||
#define WIN32K_CARET_H_INCLUDED
|
||||
|
||||
typedef struct _THRDCARETINFO
|
||||
{
|
||||
HWND hWnd;
|
||||
HBITMAP Bitmap;
|
||||
POINT Pos;
|
||||
SIZE Size;
|
||||
BYTE Visible;
|
||||
BYTE Showing;
|
||||
} THRDCARETINFO, *PTHRDCARETINFO;
|
||||
|
||||
#endif /* WIN32K_FONT_H_INCLUDED */
|
@@ -1,8 +1,6 @@
|
||||
#ifndef __WIN32K_COORD_H
|
||||
#define __WIN32K_COORD_H
|
||||
|
||||
#include "dc.h"
|
||||
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiCombineTransform (
|
@@ -2,9 +2,6 @@
|
||||
#ifndef __WIN32K_CURSORICON_H
|
||||
#define __WIN32K_CURSORICON_H
|
||||
|
||||
#include <win32k/dc.h>
|
||||
#include <win32k/gdiobj.h>
|
||||
|
||||
#include <pshpack1.h>
|
||||
|
||||
/* Structures for reading icon/cursor files and resources */
|
@@ -2,11 +2,6 @@
|
||||
#ifndef __WIN32K_DC_H
|
||||
#define __WIN32K_DC_H
|
||||
|
||||
#include <windows.h>
|
||||
#include <win32k/driver.h>
|
||||
#include <win32k/gdiobj.h>
|
||||
#include <win32k/path.h>
|
||||
|
||||
typedef struct _WIN_DC_INFO
|
||||
{
|
||||
int flags;
|
||||
@@ -135,7 +130,11 @@ typedef struct
|
||||
GDIINFO GDIInfo;
|
||||
DEVINFO DevInfo;
|
||||
DRIVER_FUNCTIONS DriverFunctions;
|
||||
#ifdef NTOS_MODE_USER
|
||||
PVOID VideoFileObject;
|
||||
#else
|
||||
PFILE_OBJECT VideoFileObject;
|
||||
#endif
|
||||
BOOLEAN PreparedDriver;
|
||||
ULONG DisplayNumber;
|
||||
|
||||
@@ -149,10 +148,12 @@ typedef struct
|
||||
|
||||
/* Internal functions */
|
||||
|
||||
#ifndef NTOS_MODE_USER
|
||||
|
||||
#define DC_LockDc(hDC) \
|
||||
((PDC) GDIOBJ_LockObj ((HGDIOBJ) hDC, GDI_OBJECT_TYPE_DC))
|
||||
#define DC_UnlockDc(hDC) \
|
||||
GDIOBJ_UnlockObj ((HGDIOBJ) hDC)
|
||||
#define DC_UnlockDc(pDC) \
|
||||
GDIOBJ_UnlockObjByPtr (pDC)
|
||||
|
||||
HDC FASTCALL RetrieveDisplayHDC(VOID);
|
||||
HDC FASTCALL DC_AllocDC(PUNICODE_STRING Driver);
|
||||
@@ -167,6 +168,8 @@ VOID FASTCALL DC_SetOwnership(HDC DC, PEPROCESS Owner);
|
||||
VOID FASTCALL DC_UpdateXforms(PDC dc);
|
||||
BOOL FASTCALL DC_InvertXform(const XFORM *xformSrc, XFORM *xformDest);
|
||||
|
||||
#endif
|
||||
|
||||
/* User entry points */
|
||||
|
||||
BOOL STDCALL NtGdiCancelDC(HDC hDC);
|
||||
@@ -186,11 +189,6 @@ INT STDCALL NtGdiDrawEscape(HDC hDC,
|
||||
INT cbInput,
|
||||
LPCSTR lpszInData);
|
||||
|
||||
#ifndef __USE_W32API
|
||||
/* FIXME: this typedef should go somewhere else... */
|
||||
typedef VOID (*GOBJENUMPROC)(PVOID, LPARAM);
|
||||
#endif
|
||||
|
||||
INT STDCALL NtGdiEnumObjects(HDC hDC,
|
||||
INT ObjectType,
|
||||
GOBJENUMPROC ObjectFunc,
|
@@ -21,9 +21,12 @@ typedef VOID (STDCALL *PGD_DISABLEPDEV)(DHPDEV);
|
||||
typedef HSURF (STDCALL *PGD_ENABLESURFACE)(DHPDEV);
|
||||
typedef VOID (STDCALL *PGD_DISABLESURFACE)(DHPDEV);
|
||||
typedef BOOL (STDCALL *PGD_ASSERTMODE)(DHPDEV, BOOL);
|
||||
typedef BOOL (STDCALL *PGD_OFFSET)(SURFOBJ*, LONG, LONG, FLONG);
|
||||
typedef BOOL (STDCALL *PGD_RESETPDEV)(DHPDEV, DHPDEV);
|
||||
typedef VOID (STDCALL *PGD_DISABLEDRIVER)(VOID);
|
||||
typedef HBITMAP (STDCALL *PGD_CREATEDEVICEBITMAP)(DHPDEV, SIZEL, ULONG);
|
||||
typedef VOID (STDCALL *PGD_DELETEDEVICEBITMAP)(DHSURF);
|
||||
typedef BOOL (STDCALL *PGD_ALPHABLEND)(SURFOBJ*, SURFOBJ*, CLIPOBJ*, XLATEOBJ*, RECTL*, RECTL*, BLENDOBJ*);
|
||||
typedef BOOL (STDCALL *PGD_REALIZEBRUSH)(BRUSHOBJ*, SURFOBJ*, SURFOBJ*, SURFOBJ*,
|
||||
XLATEOBJ*, ULONG);
|
||||
typedef ULONG (STDCALL *PGD_DITHERCOLOR)(DHPDEV, ULONG, ULONG, PULONG);
|
||||
@@ -38,12 +41,17 @@ typedef BOOL (STDCALL *PGD_PAINT)(SURFOBJ*, CLIPOBJ*, BRUSHOBJ*, POINTL*, MIX);
|
||||
typedef BOOL (STDCALL *PGD_BITBLT)(SURFOBJ*, SURFOBJ*, SURFOBJ*, CLIPOBJ*,
|
||||
XLATEOBJ*, RECTL*, POINTL*, POINTL*, BRUSHOBJ*,
|
||||
POINTL*, ROP4);
|
||||
typedef BOOL (STDCALL *PGD_TRANSPARENTBLT)(SURFOBJ*, SURFOBJ*, CLIPOBJ*, XLATEOBJ*, RECTL*, RECTL*, ULONG, ULONG);
|
||||
typedef BOOL (STDCALL *PGD_TRANSPARENTBLT)(SURFOBJ*, SURFOBJ*, CLIPOBJ*, XLATEOBJ*,
|
||||
RECTL*, RECTL*, ULONG, ULONG);
|
||||
typedef BOOL (STDCALL *PGD_COPYBITS)(SURFOBJ*, SURFOBJ*, CLIPOBJ*, XLATEOBJ*,
|
||||
RECTL*, POINTL*);
|
||||
typedef BOOL (STDCALL *PGD_STRETCHBLT)(SURFOBJ*, SURFOBJ*, SURFOBJ*, CLIPOBJ*,
|
||||
XLATEOBJ*, COLORADJUSTMENT*, POINTL*,
|
||||
RECTL*, RECTL*, POINTL*, ULONG);
|
||||
RECTL*, RECTL*, POINTL*, ULONG);
|
||||
typedef BOOL (STDCALL *PGD_STRETCHBLTROP)(SURFOBJ*, SURFOBJ*, SURFOBJ*, CLIPOBJ*,
|
||||
XLATEOBJ*, COLORADJUSTMENT*, POINTL*,
|
||||
RECTL*, RECTL*, POINTL*, ULONG,
|
||||
BRUSHOBJ*, DWORD);
|
||||
typedef BOOL (STDCALL *PGD_SETPALETTE)(DHPDEV, PALOBJ*, ULONG, ULONG, ULONG);
|
||||
typedef BOOL (STDCALL *PGD_TEXTOUT)(SURFOBJ*, STROBJ*, FONTOBJ*, CLIPOBJ*, RECTL*,
|
||||
RECTL*, BRUSHOBJ*, BRUSHOBJ*, POINTL*, MIX);
|
||||
@@ -108,7 +116,9 @@ typedef struct _DRIVER_FUNCTIONS
|
||||
PGD_ENABLESURFACE EnableSurface;
|
||||
PGD_DISABLESURFACE DisableSurface;
|
||||
PGD_ASSERTMODE AssertMode;
|
||||
PGD_OFFSET Offset;
|
||||
PGD_RESETPDEV ResetPDEV;
|
||||
PGD_DISABLEDRIVER DisableDriver;
|
||||
PGD_CREATEDEVICEBITMAP CreateDeviceBitmap;
|
||||
PGD_DELETEDEVICEBITMAP DeleteDeviceBitmap;
|
||||
PGD_REALIZEBRUSH RealizeBrush;
|
||||
@@ -121,6 +131,7 @@ typedef struct _DRIVER_FUNCTIONS
|
||||
PGD_TRANSPARENTBLT TransparentBlt;
|
||||
PGD_COPYBITS CopyBits;
|
||||
PGD_STRETCHBLT StretchBlt;
|
||||
PGD_STRETCHBLTROP StretchBltROP;
|
||||
PGD_SETPALETTE SetPalette;
|
||||
PGD_TEXTOUT TextOut;
|
||||
PGD_ESCAPE Escape;
|
||||
@@ -161,8 +172,11 @@ typedef struct _DRIVER_FUNCTIONS
|
||||
PGD_QUERYSPOOLTYPE QuerySpoolType;
|
||||
PGD_GRADIENTFILL GradientFill;
|
||||
PGD_SYNCHRONIZESURFACE SynchronizeSurface;
|
||||
PGD_ALPHABLEND AlphaBlend;
|
||||
} DRIVER_FUNCTIONS, *PDRIVER_FUNCTIONS;
|
||||
|
||||
#ifndef NTOS_MODE_USER
|
||||
|
||||
BOOL DRIVER_RegisterDriver(LPCWSTR Name, PGD_ENABLEDRIVER EnableDriver);
|
||||
PGD_ENABLEDRIVER DRIVER_FindDDIDriver(LPCWSTR Name);
|
||||
PFILE_OBJECT DRIVER_FindMPDriver(ULONG DisplayNumber);
|
||||
@@ -174,3 +188,5 @@ INT DRIVER_UnreferenceDriver (LPCWSTR Name);
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
@@ -11,8 +11,6 @@
|
||||
#ifndef WIN32K_FONT_H_INCLUDED
|
||||
#define WIN32K_FONT_H_INCLUDED
|
||||
|
||||
#include <windows.h>
|
||||
|
||||
typedef struct tagFONTFAMILYINFO
|
||||
{
|
||||
ENUMLOGFONTEXW EnumLogFontEx;
|
@@ -6,8 +6,6 @@
|
||||
#ifndef __WIN32K_GDIOBJ_H
|
||||
#define __WIN32K_GDIOBJ_H
|
||||
|
||||
#include <ddk/ntddk.h>
|
||||
|
||||
/* base address where the handle table is mapped to */
|
||||
#define GDI_HANDLE_TABLE_BASE_ADDRESS (0x400000)
|
||||
|
||||
@@ -60,14 +58,20 @@
|
||||
|
||||
typedef PVOID PGDIOBJ;
|
||||
|
||||
#ifndef NTOS_MODE_USER
|
||||
typedef BOOL (INTERNAL_CALL *GDICLEANUPPROC)(PVOID ObjectBody);
|
||||
#endif
|
||||
|
||||
/*!
|
||||
* GDI object header. This is a part of any GDI object
|
||||
*/
|
||||
typedef struct _GDIOBJHDR
|
||||
{
|
||||
#ifdef NTOS_MODE_USER
|
||||
PVOID LockingThread;
|
||||
#else
|
||||
PETHREAD LockingThread; /* only assigned if a thread is holding the lock! */
|
||||
#endif
|
||||
ULONG Locks;
|
||||
#ifdef GDI_DEBUG
|
||||
const char* createdfile;
|
||||
@@ -77,10 +81,13 @@ typedef struct _GDIOBJHDR
|
||||
#endif
|
||||
} GDIOBJHDR, *PGDIOBJHDR;
|
||||
|
||||
#ifndef NTOS_MODE_USER
|
||||
|
||||
BOOL INTERNAL_CALL GDIOBJ_OwnedByCurrentProcess(HGDIOBJ ObjectHandle);
|
||||
void INTERNAL_CALL GDIOBJ_SetOwnership(HGDIOBJ ObjectHandle, PEPROCESS Owner);
|
||||
void INTERNAL_CALL GDIOBJ_CopyOwnership(HGDIOBJ CopyFrom, HGDIOBJ CopyTo);
|
||||
BOOL INTERNAL_CALL GDIOBJ_ConvertToStockObj(HGDIOBJ *hObj);
|
||||
VOID INTERNAL_CALL GDIOBJ_UnlockObjByPtr(PGDIOBJ Object);
|
||||
|
||||
#define GDIOBJ_GetObjectType(Handle) \
|
||||
GDI_HANDLE_GET_TYPE(Handle)
|
||||
@@ -91,26 +98,28 @@ BOOL INTERNAL_CALL GDIOBJ_ConvertToStockObj(HGDIOBJ *hObj);
|
||||
#define GDIOBJ_AllocObj(ty) GDIOBJ_AllocObjDbg(__FILE__,__LINE__,ty)
|
||||
#define GDIOBJ_FreeObj(obj,ty) GDIOBJ_FreeObjDbg(__FILE__,__LINE__,obj,ty)
|
||||
#define GDIOBJ_LockObj(obj,ty) GDIOBJ_LockObjDbg(__FILE__,__LINE__,obj,ty)
|
||||
#define GDIOBJ_UnlockObj(obj) GDIOBJ_UnlockObjDbg(__FILE__,__LINE__,obj)
|
||||
#define GDIOBJ_ShareLockObj(obj,ty) GDIOBJ_ShareLockObjDbg(__FILE__,__LINE__,obj,ty)
|
||||
|
||||
HGDIOBJ INTERNAL_CALL GDIOBJ_AllocObjDbg(const char* file, int line, ULONG ObjectType);
|
||||
BOOL INTERNAL_CALL GDIOBJ_FreeObjDbg (const char* file, int line, HGDIOBJ hObj, DWORD ObjectType);
|
||||
PGDIOBJ INTERNAL_CALL GDIOBJ_LockObjDbg (const char* file, int line, HGDIOBJ hObj, DWORD ObjectType);
|
||||
BOOL INTERNAL_CALL GDIOBJ_UnlockObjDbg (const char* file, int line, HGDIOBJ hObj);
|
||||
PGDIOBJ INTERNAL_CALL GDIOBJ_ShareLockObjDbg (const char* file, int line, HGDIOBJ hObj, DWORD ObjectType);
|
||||
|
||||
#else /* !GDI_DEBUG */
|
||||
|
||||
HGDIOBJ INTERNAL_CALL GDIOBJ_AllocObj(ULONG ObjectType);
|
||||
BOOL INTERNAL_CALL GDIOBJ_FreeObj (HGDIOBJ hObj, DWORD ObjectType);
|
||||
PGDIOBJ INTERNAL_CALL GDIOBJ_LockObj (HGDIOBJ hObj, DWORD ObjectType);
|
||||
BOOL INTERNAL_CALL GDIOBJ_UnlockObj (HGDIOBJ hObj);
|
||||
PGDIOBJ INTERNAL_CALL GDIOBJ_ShareLockObj (HGDIOBJ hObj, DWORD ObjectType);
|
||||
|
||||
#endif /* GDI_DEBUG */
|
||||
|
||||
PVOID INTERNAL_CALL GDI_MapHandleTable(PEPROCESS Process);
|
||||
|
||||
#endif
|
||||
|
||||
#define GDIOBJFLAG_DEFAULT (0x0)
|
||||
#define GDIOBJFLAG_IGNOREPID (0x1)
|
||||
#define GDIOBJFLAG_IGNORELOCK (0x2)
|
||||
|
||||
PVOID INTERNAL_CALL GDI_MapHandleTable(PEPROCESS Process);
|
||||
|
||||
#endif
|
329
inc_w32k/bitmaps.h
Normal file
329
inc_w32k/bitmaps.h
Normal file
@@ -0,0 +1,329 @@
|
||||
|
||||
#ifndef __WIN32K_BITMAPS_H
|
||||
#define __WIN32K_BITMAPS_H
|
||||
|
||||
/* GDI logical bitmap object */
|
||||
typedef struct _BITMAPOBJ
|
||||
{
|
||||
SURFOBJ SurfObj;
|
||||
FLONG flHooks;
|
||||
FLONG flFlags;
|
||||
SIZE dimension; /* For SetBitmapDimension(), do NOT use
|
||||
to get width/height of bitmap, use
|
||||
bitmap.bmWidth/bitmap.bmHeight for
|
||||
that */
|
||||
#ifdef NTOS_MODE_USER
|
||||
PVOID BitsLock;
|
||||
#else
|
||||
PFAST_MUTEX BitsLock; /* You need to hold this lock before you touch
|
||||
the actual bits in the bitmap */
|
||||
#endif
|
||||
|
||||
/* For device-independent bitmaps: */
|
||||
DIBSECTION *dib;
|
||||
HPALETTE hDIBPalette;
|
||||
} BITMAPOBJ, *PBITMAPOBJ;
|
||||
|
||||
#define BITMAPOBJ_IS_APIBITMAP 0x1
|
||||
|
||||
/* Internal interface */
|
||||
|
||||
#define BITMAPOBJ_AllocBitmap() \
|
||||
((HBITMAP) GDIOBJ_AllocObj (GDI_OBJECT_TYPE_BITMAP))
|
||||
#define BITMAPOBJ_FreeBitmap(hBMObj) \
|
||||
GDIOBJ_FreeObj((HGDIOBJ) hBMObj, GDI_OBJECT_TYPE_BITMAP)
|
||||
/* NOTE: Use shared locks! */
|
||||
#define BITMAPOBJ_LockBitmap(hBMObj) (PBITMAPOBJ)EngLockSurface((HSURF)hBMObj)
|
||||
#define BITMAPOBJ_UnlockBitmap(pBMObj) EngUnlockSurface(&pBMObj->SurfObj)
|
||||
BOOL INTERNAL_CALL BITMAP_Cleanup(PVOID ObjectBody);
|
||||
|
||||
BOOL INTERNAL_CALL BITMAPOBJ_InitBitsLock(BITMAPOBJ *pBMObj);
|
||||
#define BITMAPOBJ_LockBitmapBits(pBMObj) ExAcquireFastMutex((pBMObj)->BitsLock)
|
||||
#define BITMAPOBJ_UnlockBitmapBits(pBMObj) ExReleaseFastMutex((pBMObj)->BitsLock)
|
||||
void INTERNAL_CALL BITMAPOBJ_CleanupBitsLock(BITMAPOBJ *pBMObj);
|
||||
|
||||
INT FASTCALL BITMAPOBJ_GetWidthBytes (INT bmWidth, INT bpp);
|
||||
HBITMAP FASTCALL BITMAPOBJ_CopyBitmap (HBITMAP hBitmap);
|
||||
INT FASTCALL DIB_GetDIBWidthBytes (INT width, INT depth);
|
||||
int STDCALL DIB_GetDIBImageBytes (INT width, INT height, INT depth);
|
||||
INT FASTCALL DIB_BitmapInfoSize (const BITMAPINFO * info, WORD coloruse);
|
||||
INT STDCALL BITMAP_GetObject(BITMAPOBJ * bmp, INT count, LPVOID buffer);
|
||||
HBITMAP FASTCALL BitmapToSurf(PBITMAPOBJ BitmapObj, HDEV GDIDevice);
|
||||
|
||||
HBITMAP FASTCALL IntCreateCompatibleBitmap(PDC Dc, INT Width, INT Height);
|
||||
|
||||
/* User Entry Points */
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiBitBlt (
|
||||
HDC hDCDest,
|
||||
INT XDest,
|
||||
INT YDest,
|
||||
INT Width,
|
||||
INT Height,
|
||||
HDC hDCSrc,
|
||||
INT XSrc,
|
||||
INT YSrc,
|
||||
DWORD ROP
|
||||
);
|
||||
HBITMAP
|
||||
STDCALL
|
||||
NtGdiCreateBitmap (
|
||||
INT Width,
|
||||
INT Height,
|
||||
UINT Planes,
|
||||
UINT BitsPerPel,
|
||||
CONST VOID * Bits
|
||||
);
|
||||
HBITMAP
|
||||
STDCALL
|
||||
NtGdiCreateCompatibleBitmap (
|
||||
HDC hDC,
|
||||
INT Width,
|
||||
INT Height
|
||||
);
|
||||
HBITMAP
|
||||
STDCALL
|
||||
NtGdiCreateBitmapIndirect (
|
||||
CONST BITMAP * BM
|
||||
);
|
||||
HBITMAP
|
||||
STDCALL
|
||||
NtGdiCreateDIBitmap (
|
||||
HDC hDC,
|
||||
CONST BITMAPINFOHEADER * bmih,
|
||||
DWORD Init,
|
||||
CONST VOID * bInit,
|
||||
CONST BITMAPINFO * bmi,
|
||||
UINT Usage
|
||||
);
|
||||
HBITMAP
|
||||
STDCALL
|
||||
NtGdiCreateDIBSection (
|
||||
HDC hDC,
|
||||
CONST BITMAPINFO * bmi,
|
||||
UINT Usage,
|
||||
VOID * Bits,
|
||||
HANDLE hSection,
|
||||
DWORD dwOffset
|
||||
);
|
||||
HBITMAP
|
||||
STDCALL
|
||||
NtGdiCreateDiscardableBitmap (
|
||||
HDC hDC,
|
||||
INT Width,
|
||||
INT Height
|
||||
);
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiExtFloodFill (
|
||||
HDC hDC,
|
||||
INT XStart,
|
||||
INT YStart,
|
||||
COLORREF Color,
|
||||
UINT FillType
|
||||
);
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiFloodFill (
|
||||
HDC hDC,
|
||||
INT XStart,
|
||||
INT YStart,
|
||||
COLORREF Fill
|
||||
);
|
||||
LONG
|
||||
STDCALL
|
||||
NtGdiGetBitmapBits (
|
||||
HBITMAP hBitmap,
|
||||
LONG Buffer,
|
||||
LPVOID Bits
|
||||
);
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiGetBitmapDimensionEx (
|
||||
HBITMAP hBitmap,
|
||||
LPSIZE Dimension
|
||||
);
|
||||
UINT
|
||||
STDCALL
|
||||
NtGdiGetDIBColorTable (
|
||||
HDC hDC,
|
||||
UINT StartIndex,
|
||||
UINT Entries,
|
||||
RGBQUAD * Colors
|
||||
);
|
||||
INT
|
||||
STDCALL
|
||||
NtGdiGetDIBits (
|
||||
HDC hDC,
|
||||
HBITMAP hBitmap,
|
||||
UINT StartScan,
|
||||
UINT ScanLines,
|
||||
LPVOID Bits,
|
||||
LPBITMAPINFO bi,
|
||||
UINT Usage
|
||||
);
|
||||
COLORREF
|
||||
STDCALL
|
||||
NtGdiGetPixel (
|
||||
HDC hDC,
|
||||
INT XPos,
|
||||
INT YPos
|
||||
);
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiGradientFill (
|
||||
HDC hdc,
|
||||
PTRIVERTEX pVertex,
|
||||
ULONG uVertex,
|
||||
PVOID pMesh,
|
||||
ULONG uMesh,
|
||||
ULONG ulMode
|
||||
);
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiMaskBlt (
|
||||
HDC hDCDest,
|
||||
INT XDest,
|
||||
INT YDest,
|
||||
INT Width,
|
||||
INT Height,
|
||||
HDC hDCSrc,
|
||||
INT XSrc,
|
||||
INT YSrc,
|
||||
HBITMAP hMaskBitmap,
|
||||
INT xMask,
|
||||
INT yMask,
|
||||
DWORD ROP
|
||||
);
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiPlgBlt (
|
||||
HDC hDCDest,
|
||||
CONST POINT * Point,
|
||||
HDC hDCSrc,
|
||||
INT XSrc,
|
||||
INT YSrc,
|
||||
INT Width,
|
||||
INT Height,
|
||||
HBITMAP hMaskBitmap,
|
||||
INT xMask,
|
||||
INT yMask
|
||||
);
|
||||
LONG
|
||||
STDCALL
|
||||
NtGdiSetBitmapBits (
|
||||
HBITMAP hBitmap,
|
||||
DWORD Bytes,
|
||||
CONST VOID * Bits
|
||||
);
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiSetBitmapDimensionEx (
|
||||
HBITMAP hBitmap,
|
||||
INT Width,
|
||||
INT Height,
|
||||
LPSIZE Size
|
||||
);
|
||||
UINT
|
||||
STDCALL
|
||||
NtGdiSetDIBColorTable (
|
||||
HDC hDC,
|
||||
UINT StartIndex,
|
||||
UINT Entries,
|
||||
CONST RGBQUAD * Colors
|
||||
);
|
||||
INT
|
||||
STDCALL
|
||||
NtGdiSetDIBits (
|
||||
HDC hDC,
|
||||
HBITMAP hBitmap,
|
||||
UINT StartScan,
|
||||
UINT ScanLines,
|
||||
CONST VOID * Bits,
|
||||
CONST BITMAPINFO * bmi,
|
||||
UINT ColorUse
|
||||
);
|
||||
INT
|
||||
STDCALL
|
||||
NtGdiSetDIBitsToDevice (
|
||||
HDC hDC,
|
||||
INT XDest,
|
||||
INT YDest,
|
||||
DWORD Width,
|
||||
DWORD Height,
|
||||
INT XSrc,
|
||||
INT YSrc,
|
||||
UINT StartScan,
|
||||
UINT ScanLines,
|
||||
CONST VOID * Bits,
|
||||
CONST BITMAPINFO * bmi,
|
||||
UINT ColorUse
|
||||
);
|
||||
COLORREF
|
||||
STDCALL
|
||||
NtGdiSetPixel (
|
||||
HDC hDC,
|
||||
INT X,
|
||||
INT Y,
|
||||
COLORREF Color
|
||||
);
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiSetPixelV (
|
||||
HDC hDC,
|
||||
INT X,
|
||||
INT Y,
|
||||
COLORREF Color
|
||||
);
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiStretchBlt (
|
||||
HDC hDCDest,
|
||||
INT XOriginDest,
|
||||
INT YOriginDest,
|
||||
INT WidthDest,
|
||||
INT HeightDest,
|
||||
HDC hDCSrc,
|
||||
INT XOriginSrc,
|
||||
INT YOriginSrc,
|
||||
INT WidthSrc,
|
||||
INT HeightSrc,
|
||||
DWORD ROP
|
||||
);
|
||||
INT
|
||||
STDCALL
|
||||
NtGdiStretchDIBits (
|
||||
HDC hDC,
|
||||
INT XDest,
|
||||
INT YDest,
|
||||
INT DestWidth,
|
||||
INT DestHeight,
|
||||
INT XSrc,
|
||||
INT YSrc,
|
||||
INT SrcWidth,
|
||||
INT SrcHeight,
|
||||
CONST VOID * Bits,
|
||||
CONST BITMAPINFO * BitsInfo,
|
||||
UINT Usage,
|
||||
DWORD ROP
|
||||
);
|
||||
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiTransparentBlt(
|
||||
HDC hdcDst,
|
||||
INT xDst,
|
||||
INT yDst,
|
||||
INT cxDst,
|
||||
INT cyDst,
|
||||
HDC hdcSrc,
|
||||
INT xSrc,
|
||||
INT ySrc,
|
||||
INT cxSrc,
|
||||
INT cySrc,
|
||||
COLORREF TransColor
|
||||
);
|
||||
|
||||
#endif
|
||||
|
112
inc_w32k/brush.h
Normal file
112
inc_w32k/brush.h
Normal file
@@ -0,0 +1,112 @@
|
||||
#ifndef __WIN32K_BRUSH_H
|
||||
#define __WIN32K_BRUSH_H
|
||||
|
||||
#include <win32k/gdiobj.h>
|
||||
|
||||
/* Internal interface */
|
||||
|
||||
#define NB_HATCH_STYLES 6
|
||||
|
||||
/*
|
||||
* The layout of this structure is taken from "Windows Graphics Programming"
|
||||
* book written by Feng Yuan.
|
||||
*
|
||||
* DON'T MODIFY THIS STRUCTURE UNLESS REALLY NEEDED AND EVEN THEN ASK ON
|
||||
* A MAILING LIST FIRST.
|
||||
*/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
ULONG AttrFlags;
|
||||
COLORREF lbColor;
|
||||
} BRUSHATTR, *PBRUSHATTR;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
ULONG ulStyle;
|
||||
HBITMAP hbmPattern;
|
||||
HANDLE hbmClient;
|
||||
ULONG flAttrs;
|
||||
|
||||
ULONG ulBrushUnique;
|
||||
BRUSHATTR *pBrushAttr;
|
||||
BRUSHATTR BrushAttr;
|
||||
POINT ptOrigin;
|
||||
ULONG bCacheGrabbed;
|
||||
COLORREF crBack;
|
||||
COLORREF crFore;
|
||||
ULONG ulPalTime;
|
||||
ULONG ulSurfTime;
|
||||
PVOID ulRealization;
|
||||
ULONG Unknown4C[3];
|
||||
POINT ptPenWidth;
|
||||
ULONG ulPenStyle;
|
||||
DWORD *pStyle;
|
||||
ULONG dwStyleCount;
|
||||
ULONG Unknown6C;
|
||||
} GDIBRUSHOBJ, *PGDIBRUSHOBJ;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
BRUSHOBJ BrushObject;
|
||||
PGDIBRUSHOBJ GdiBrushObject;
|
||||
XLATEOBJ *XlateObject;
|
||||
} GDIBRUSHINST, *PGDIBRUSHINST;
|
||||
|
||||
/* GDI Brush Attributes */
|
||||
|
||||
#define GDIBRUSH_NEED_BK_CLR 0x0002 /* Background color is needed */
|
||||
#define GDIBRUSH_DITHER_OK 0x0004 /* Allow color dithering */
|
||||
#define GDIBRUSH_IS_SOLID 0x0010 /* Solid brush */
|
||||
#define GDIBRUSH_IS_HATCH 0x0020 /* Hatch brush */
|
||||
#define GDIBRUSH_IS_BITMAP 0x0040 /* DDB pattern brush */
|
||||
#define GDIBRUSH_IS_DIB 0x0080 /* DIB pattern brush */
|
||||
#define GDIBRUSH_IS_NULL 0x0100 /* Null/hollow brush */
|
||||
#define GDIBRUSH_IS_GLOBAL 0x0200 /* Stock objects */
|
||||
#define GDIBRUSH_IS_PEN 0x0400 /* Pen */
|
||||
#define GDIBRUSH_IS_OLDSTYLEPEN 0x0800 /* Geometric pen */
|
||||
#define GDIBRUSH_IS_MASKING 0x8000 /* Pattern bitmap is used as transparent mask (?) */
|
||||
#define GDIBRUSH_CACHED_IS_SOLID 0x80000000
|
||||
|
||||
#define BRUSHOBJ_AllocBrush() ((HBRUSH) GDIOBJ_AllocObj (GDI_OBJECT_TYPE_BRUSH))
|
||||
#define BRUSHOBJ_FreeBrush(hBrush) GDIOBJ_FreeObj((HGDIOBJ)hBrush, GDI_OBJECT_TYPE_BRUSH)
|
||||
#define BRUSHOBJ_LockBrush(hBrush) ((PGDIBRUSHOBJ)GDIOBJ_LockObj((HGDIOBJ)hBrush, GDI_OBJECT_TYPE_BRUSH))
|
||||
#define BRUSHOBJ_UnlockBrush(pBrush) GDIOBJ_UnlockObjByPtr(pBrush)
|
||||
BOOL INTERNAL_CALL BRUSH_Cleanup(PVOID ObjectBody);
|
||||
|
||||
HBRUSH STDCALL
|
||||
NtGdiCreateBrushIndirect(
|
||||
CONST LOGBRUSH *LogBrush);
|
||||
|
||||
HBRUSH STDCALL
|
||||
NtGdiCreateDIBBrush(
|
||||
CONST BITMAPINFO *BitmapInfoAndData,
|
||||
UINT ColorSpec,
|
||||
UINT BitmapInfoSize,
|
||||
CONST VOID *PackedDIB);
|
||||
|
||||
HBRUSH STDCALL
|
||||
NtGdiCreateHatchBrush(
|
||||
INT Style,
|
||||
COLORREF Color);
|
||||
|
||||
HBRUSH STDCALL
|
||||
NtGdiCreatePatternBrush(
|
||||
HBITMAP hBitmap);
|
||||
|
||||
HBRUSH STDCALL
|
||||
NtGdiCreateSolidBrush(
|
||||
COLORREF Color);
|
||||
|
||||
BOOL STDCALL
|
||||
NtGdiFixBrushOrgEx(
|
||||
VOID);
|
||||
|
||||
BOOL STDCALL
|
||||
NtGdiSetBrushOrgEx(
|
||||
HDC hDC,
|
||||
INT XOrg,
|
||||
INT YOrg,
|
||||
LPPOINT Point);
|
||||
|
||||
#endif
|
64
inc_w32k/callback.h
Normal file
64
inc_w32k/callback.h
Normal file
@@ -0,0 +1,64 @@
|
||||
#ifndef __INCLUDE_USER32_CALLBACK_H
|
||||
#define __INCLUDE_USER32_CALLBACK_H
|
||||
|
||||
#define USER32_CALLBACK_WINDOWPROC (0)
|
||||
#define USER32_CALLBACK_SENDASYNCPROC (1)
|
||||
#define USER32_CALLBACK_LOADSYSMENUTEMPLATE (2)
|
||||
#define USER32_CALLBACK_LOADDEFAULTCURSORS (3)
|
||||
#define USER32_CALLBACK_HOOKPROC (4)
|
||||
#define USER32_CALLBACK_MAXIMUM (4)
|
||||
|
||||
typedef struct _WINDOWPROC_CALLBACK_ARGUMENTS
|
||||
{
|
||||
WNDPROC Proc;
|
||||
BOOL IsAnsiProc;
|
||||
HWND Wnd;
|
||||
UINT Msg;
|
||||
WPARAM wParam;
|
||||
LPARAM lParam;
|
||||
INT lParamBufferSize;
|
||||
LRESULT Result;
|
||||
/* char Buffer[]; */
|
||||
} WINDOWPROC_CALLBACK_ARGUMENTS, *PWINDOWPROC_CALLBACK_ARGUMENTS;
|
||||
|
||||
typedef struct _SENDASYNCPROC_CALLBACK_ARGUMENTS
|
||||
{
|
||||
SENDASYNCPROC Callback;
|
||||
HWND Wnd;
|
||||
UINT Msg;
|
||||
ULONG_PTR Context;
|
||||
LRESULT Result;
|
||||
} SENDASYNCPROC_CALLBACK_ARGUMENTS, *PSENDASYNCPROC_CALLBACK_ARGUMENTS;
|
||||
|
||||
typedef struct _HOOKPROC_CALLBACK_ARGUMENTS
|
||||
{
|
||||
INT HookId;
|
||||
INT Code;
|
||||
WPARAM wParam;
|
||||
LPARAM lParam;
|
||||
HOOKPROC Proc;
|
||||
BOOLEAN Ansi;
|
||||
UINT ModuleNameLength;
|
||||
WCHAR ModuleName[1];
|
||||
} HOOKPROC_CALLBACK_ARGUMENTS, *PHOOKPROC_CALLBACK_ARGUMENTS;
|
||||
|
||||
typedef struct _HOOKPROC_CBT_CREATEWND_EXTRA_ARGUMENTS
|
||||
{
|
||||
CREATESTRUCTW Cs; /* lpszName and lpszClass replaced by offsets */
|
||||
HWND WndInsertAfter;
|
||||
/* WCHAR szName[] */
|
||||
/* WCHAR szClass[] */
|
||||
} HOOKPROC_CBT_CREATEWND_EXTRA_ARGUMENTS, *PHOOKPROC_CBT_CREATEWND_EXTRA_ARGUMENTS;
|
||||
|
||||
NTSTATUS STDCALL
|
||||
User32CallWindowProcFromKernel(PVOID Arguments, ULONG ArgumentLength);
|
||||
NTSTATUS STDCALL
|
||||
User32CallSendAsyncProcForKernel(PVOID Arguments, ULONG ArgumentLength);
|
||||
NTSTATUS STDCALL
|
||||
User32LoadSysMenuTemplateForKernel(PVOID Arguments, ULONG ArgumentLength);
|
||||
NTSTATUS STDCALL
|
||||
User32SetupDefaultCursors(PVOID Arguments, ULONG ArgumentLength);
|
||||
NTSTATUS STDCALL
|
||||
User32CallHookProcFromKernel(PVOID Arguments, ULONG ArgumentLength);
|
||||
|
||||
#endif /* __INCLUDE_USER32_CALLBACK_H */
|
23
inc_w32k/caret.h
Normal file
23
inc_w32k/caret.h
Normal file
@@ -0,0 +1,23 @@
|
||||
/*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS system libraries
|
||||
* FILE: include/win32k/caret.h
|
||||
* PURPOSE: GDI32/Win32k Caret interface
|
||||
* PROGRAMMER:
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef WIN32K_CARET_H_INCLUDED
|
||||
#define WIN32K_CARET_H_INCLUDED
|
||||
|
||||
typedef struct _THRDCARETINFO
|
||||
{
|
||||
HWND hWnd;
|
||||
HBITMAP Bitmap;
|
||||
POINT Pos;
|
||||
SIZE Size;
|
||||
BYTE Visible;
|
||||
BYTE Showing;
|
||||
} THRDCARETINFO, *PTHRDCARETINFO;
|
||||
|
||||
#endif /* WIN32K_FONT_H_INCLUDED */
|
81
inc_w32k/cliprgn.h
Normal file
81
inc_w32k/cliprgn.h
Normal file
@@ -0,0 +1,81 @@
|
||||
#ifndef _WIN32K_CLIPRGN_H
|
||||
#define _WIN32K_CLIPRGN_H
|
||||
|
||||
HRGN WINAPI SaveVisRgn(HDC hdc);
|
||||
INT WINAPI SelectVisRgn(HDC hdc, HRGN hrgn);
|
||||
|
||||
int
|
||||
STDCALL
|
||||
NtGdiExcludeClipRect (
|
||||
HDC hDC,
|
||||
int LeftRect,
|
||||
int TopRect,
|
||||
int RightRect,
|
||||
int BottomRect
|
||||
);
|
||||
int
|
||||
STDCALL
|
||||
NtGdiExtSelectClipRgn (
|
||||
HDC hDC,
|
||||
HRGN hrgn,
|
||||
int fnMode
|
||||
);
|
||||
int
|
||||
STDCALL
|
||||
NtGdiGetClipBox (
|
||||
HDC hDC,
|
||||
LPRECT rc
|
||||
);
|
||||
int
|
||||
STDCALL
|
||||
NtGdiGetMetaRgn (
|
||||
HDC hDC,
|
||||
HRGN hrgn
|
||||
);
|
||||
int
|
||||
STDCALL
|
||||
NtGdiIntersectClipRect (
|
||||
HDC hDC,
|
||||
int LeftRect,
|
||||
int TopRect,
|
||||
int RightRect,
|
||||
int BottomRect
|
||||
);
|
||||
int
|
||||
STDCALL
|
||||
NtGdiOffsetClipRgn (
|
||||
HDC hDC,
|
||||
int XOffset,
|
||||
int YOffset
|
||||
);
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiPtVisible (
|
||||
HDC hDC,
|
||||
int X,
|
||||
int Y
|
||||
);
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiRectVisible (
|
||||
HDC hDC,
|
||||
CONST PRECT rc
|
||||
);
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiSelectClipPath (
|
||||
HDC hDC,
|
||||
int Mode
|
||||
);
|
||||
int
|
||||
STDCALL
|
||||
NtGdiSelectClipRgn (
|
||||
HDC hDC,
|
||||
HRGN hrgn
|
||||
);
|
||||
int
|
||||
STDCALL
|
||||
NtGdiSetMetaRgn (
|
||||
HDC hDC
|
||||
);
|
||||
#endif
|
116
inc_w32k/color.h
Normal file
116
inc_w32k/color.h
Normal file
@@ -0,0 +1,116 @@
|
||||
#ifndef __WIN32K_COLOR_H
|
||||
#define __WIN32K_COLOR_H
|
||||
|
||||
#ifndef CLR_INVALID
|
||||
#define CLR_INVALID 0xffffffff
|
||||
#endif
|
||||
#define PC_SYS_USED 0x80 /* palentry is used (both system and logical) */
|
||||
#define PC_SYS_RESERVED 0x40 /* system palentry is not to be mapped to */
|
||||
#define PC_SYS_MAPPED 0x10 /* logical palentry is a direct alias for system palentry */
|
||||
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiAnimatePalette (
|
||||
HPALETTE hpal,
|
||||
UINT StartIndex,
|
||||
UINT Entries,
|
||||
CONST PPALETTEENTRY ppe
|
||||
);
|
||||
HPALETTE
|
||||
STDCALL
|
||||
NtGdiCreateHalftonePalette (
|
||||
HDC hDC
|
||||
);
|
||||
HPALETTE
|
||||
STDCALL
|
||||
NtGdiCreatePalette (
|
||||
CONST PLOGPALETTE lgpl
|
||||
);
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiGetColorAdjustment (
|
||||
HDC hDC,
|
||||
LPCOLORADJUSTMENT ca
|
||||
);
|
||||
COLORREF
|
||||
STDCALL
|
||||
NtGdiGetNearestColor (
|
||||
HDC hDC,
|
||||
COLORREF Color
|
||||
);
|
||||
UINT
|
||||
STDCALL
|
||||
NtGdiGetNearestPaletteIndex (
|
||||
HPALETTE hpal,
|
||||
COLORREF Color
|
||||
);
|
||||
UINT
|
||||
STDCALL
|
||||
NtGdiGetPaletteEntries (
|
||||
HPALETTE hpal,
|
||||
UINT StartIndex,
|
||||
UINT Entries,
|
||||
LPPALETTEENTRY pe
|
||||
);
|
||||
UINT
|
||||
STDCALL
|
||||
NtGdiGetSystemPaletteEntries (
|
||||
HDC hDC,
|
||||
UINT StartIndex,
|
||||
UINT Entries,
|
||||
LPPALETTEENTRY pe
|
||||
);
|
||||
UINT
|
||||
STDCALL
|
||||
NtGdiGetSystemPaletteUse (
|
||||
HDC hDC
|
||||
);
|
||||
UINT
|
||||
STDCALL
|
||||
NtGdiRealizePalette (
|
||||
HDC hDC
|
||||
);
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiResizePalette (
|
||||
HPALETTE hpal,
|
||||
UINT Entries
|
||||
);
|
||||
HPALETTE
|
||||
STDCALL
|
||||
NtGdiSelectPalette (
|
||||
HDC hDC,
|
||||
HPALETTE hpal,
|
||||
BOOL ForceBackground
|
||||
);
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiSetColorAdjustment (
|
||||
HDC hDC,
|
||||
CONST LPCOLORADJUSTMENT ca
|
||||
);
|
||||
UINT
|
||||
STDCALL
|
||||
NtGdiSetPaletteEntries (
|
||||
HPALETTE hpal,
|
||||
UINT Start,
|
||||
UINT Entries,
|
||||
CONST LPPALETTEENTRY pe
|
||||
);
|
||||
UINT
|
||||
STDCALL
|
||||
NtGdiSetSystemPaletteUse (
|
||||
HDC hDC,
|
||||
UINT Usage
|
||||
);
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiUnrealizeObject (
|
||||
HGDIOBJ hgdiobj
|
||||
);
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiUpdateColors (
|
||||
HDC hDC
|
||||
);
|
||||
#endif
|
151
inc_w32k/coord.h
Normal file
151
inc_w32k/coord.h
Normal file
@@ -0,0 +1,151 @@
|
||||
#ifndef __WIN32K_COORD_H
|
||||
#define __WIN32K_COORD_H
|
||||
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiCombineTransform (
|
||||
LPXFORM XformResult,
|
||||
CONST LPXFORM xform1,
|
||||
CONST LPXFORM xform2
|
||||
);
|
||||
|
||||
VOID
|
||||
FASTCALL
|
||||
IntDPtoLP ( PDC dc, LPPOINT Points, INT Count );
|
||||
|
||||
VOID
|
||||
FASTCALL
|
||||
CoordDPtoLP ( PDC Dc, LPPOINT Point );
|
||||
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiDPtoLP (
|
||||
HDC hDC,
|
||||
LPPOINT Points,
|
||||
int Count
|
||||
);
|
||||
|
||||
int
|
||||
FASTCALL
|
||||
IntGetGraphicsMode ( PDC dc );
|
||||
|
||||
int
|
||||
STDCALL
|
||||
NtGdiGetGraphicsMode ( HDC hDC );
|
||||
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiGetWorldTransform (
|
||||
HDC hDC,
|
||||
LPXFORM Xform
|
||||
);
|
||||
|
||||
VOID
|
||||
FASTCALL
|
||||
CoordLPtoDP ( PDC Dc, LPPOINT Point );
|
||||
|
||||
VOID
|
||||
FASTCALL
|
||||
IntLPtoDP ( PDC dc, LPPOINT Points, INT Count );
|
||||
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiLPtoDP (
|
||||
HDC hDC,
|
||||
LPPOINT Points,
|
||||
int Count
|
||||
);
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiModifyWorldTransform (
|
||||
HDC hDC,
|
||||
CONST LPXFORM Xform,
|
||||
DWORD Mode
|
||||
);
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiOffsetViewportOrgEx (
|
||||
HDC hDC,
|
||||
int XOffset,
|
||||
int YOffset,
|
||||
LPPOINT Point
|
||||
);
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiOffsetWindowOrgEx (
|
||||
HDC hDC,
|
||||
int XOffset,
|
||||
int YOffset,
|
||||
LPPOINT Point
|
||||
);
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiScaleViewportExtEx (
|
||||
HDC hDC,
|
||||
int Xnum,
|
||||
int Xdenom,
|
||||
int Ynum,
|
||||
int Ydenom,
|
||||
LPSIZE Size
|
||||
);
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiScaleWindowExtEx (
|
||||
HDC hDC,
|
||||
int Xnum,
|
||||
int Xdenom,
|
||||
int Ynum,
|
||||
int Ydenom,
|
||||
LPSIZE Size
|
||||
);
|
||||
int
|
||||
STDCALL
|
||||
NtGdiSetGraphicsMode (
|
||||
HDC hDC,
|
||||
int Mode
|
||||
);
|
||||
int
|
||||
STDCALL
|
||||
NtGdiSetMapMode (
|
||||
HDC hDC,
|
||||
int MapMode
|
||||
);
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiSetViewportExtEx (
|
||||
HDC hDC,
|
||||
int XExtent,
|
||||
int YExtent,
|
||||
LPSIZE Size
|
||||
);
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiSetViewportOrgEx (
|
||||
HDC hDC,
|
||||
int X,
|
||||
int Y,
|
||||
LPPOINT Point
|
||||
);
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiSetWindowExtEx (
|
||||
HDC hDC,
|
||||
int XExtent,
|
||||
int YExtent,
|
||||
LPSIZE Size
|
||||
);
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiSetWindowOrgEx (
|
||||
HDC hDC,
|
||||
int X,
|
||||
int Y,
|
||||
LPPOINT Point
|
||||
);
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiSetWorldTransform (
|
||||
HDC hDC,
|
||||
CONST LPXFORM Xform
|
||||
);
|
||||
#endif
|
95
inc_w32k/cursoricon.h
Normal file
95
inc_w32k/cursoricon.h
Normal file
@@ -0,0 +1,95 @@
|
||||
|
||||
#ifndef __WIN32K_CURSORICON_H
|
||||
#define __WIN32K_CURSORICON_H
|
||||
|
||||
#include <pshpack1.h>
|
||||
|
||||
/* Structures for reading icon/cursor files and resources */
|
||||
// Structures for reading icon files and resources
|
||||
typedef struct _ICONIMAGE
|
||||
{
|
||||
BITMAPINFOHEADER icHeader; // DIB header
|
||||
RGBQUAD icColors[1]; // Color table
|
||||
BYTE icXOR[1]; // DIB bits for XOR mask
|
||||
BYTE icAND[1]; // DIB bits for AND mask
|
||||
} ICONIMAGE, *LPICONIMAGE;
|
||||
|
||||
typedef struct _CURSORIMAGE
|
||||
{
|
||||
BITMAPINFOHEADER icHeader; // DIB header
|
||||
RGBQUAD icColors[1]; // Color table
|
||||
BYTE icXOR[1]; // DIB bits for XOR mask
|
||||
BYTE icAND[1]; // DIB bits for AND mask
|
||||
} CURSORIMAGE, *LPCURSORIMAGE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
BYTE bWidth;
|
||||
BYTE bHeight;
|
||||
BYTE bColorCount;
|
||||
BYTE bReserved;
|
||||
} ICONRESDIR;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
WORD wWidth;
|
||||
WORD wHeight;
|
||||
} CURSORRESDIR;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
WORD wPlanes; // Number of Color Planes in the XOR image
|
||||
WORD wBitCount; // Bits per pixel in the XOR image
|
||||
} ICONDIR;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
WORD wXHotspot; // Number of Color Planes in the XOR image
|
||||
WORD wYHotspot; // Bits per pixel in the XOR image
|
||||
} CURSORDIR;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
BYTE bWidth; // Width, in pixels, of the icon image
|
||||
BYTE bHeight; // Height, in pixels, of the icon image
|
||||
BYTE bColorCount; // Number of colors in image (0 if >=8bpp)
|
||||
BYTE bReserved; // Reserved ( must be 0)
|
||||
union
|
||||
{ ICONDIR icon;
|
||||
CURSORDIR cursor;
|
||||
} Info;
|
||||
DWORD dwBytesInRes; // How many bytes in this resource?
|
||||
DWORD dwImageOffset; // Where in the file is this image?
|
||||
} CURSORICONDIRENTRY;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
WORD idReserved; // Reserved (must be 0)
|
||||
WORD idType; // Resource Type (1 for icons, 0 for cursors)
|
||||
WORD idCount; // How many images?
|
||||
CURSORICONDIRENTRY idEntries[1]; // An entry for idCount number of images
|
||||
} CURSORICONDIR;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
union
|
||||
{ ICONRESDIR icon;
|
||||
CURSORRESDIR cursor;
|
||||
} ResInfo;
|
||||
WORD wPlanes; // Color Planes
|
||||
WORD wBitCount; // Bits per pixel
|
||||
DWORD dwBytesInRes; // how many bytes in this resource?
|
||||
WORD nID; // the ID
|
||||
} GRPCURSORICONDIRENTRY;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
WORD idReserved; // Reserved (must be 0)
|
||||
WORD idType; // Resource type (1 for icons)
|
||||
WORD idCount; // How many images?
|
||||
GRPCURSORICONDIRENTRY idEntries[1]; // The entries for each image
|
||||
} GRPCURSORICONDIR;
|
||||
|
||||
#include <poppack.h>
|
||||
|
||||
#endif
|
236
inc_w32k/dc.h
Normal file
236
inc_w32k/dc.h
Normal file
@@ -0,0 +1,236 @@
|
||||
|
||||
#ifndef __WIN32K_DC_H
|
||||
#define __WIN32K_DC_H
|
||||
|
||||
typedef struct _WIN_DC_INFO
|
||||
{
|
||||
int flags;
|
||||
HRGN hClipRgn; /* Clip region (may be 0) */
|
||||
HRGN hVisRgn; /* Visible region (must never be 0) */
|
||||
HRGN hGCClipRgn; /* GC clip region (ClipRgn AND VisRgn) */
|
||||
HPEN hPen;
|
||||
HBRUSH hBrush;
|
||||
HFONT hFont;
|
||||
HBITMAP hBitmap;
|
||||
HBITMAP hFirstBitmap; /* Bitmap selected at creation of the DC */
|
||||
|
||||
/* #if 0 */
|
||||
HANDLE hDevice;
|
||||
HPALETTE hPalette;
|
||||
|
||||
GdiPath path;
|
||||
/* #endif */
|
||||
|
||||
WORD ROPmode;
|
||||
WORD polyFillMode;
|
||||
WORD stretchBltMode;
|
||||
WORD relAbsMode;
|
||||
WORD backgroundMode;
|
||||
COLORREF backgroundColor;
|
||||
COLORREF textColor;
|
||||
|
||||
short brushOrgX;
|
||||
short brushOrgY;
|
||||
|
||||
WORD textAlign; /* Text alignment from SetTextAlign() */
|
||||
short charExtra; /* Spacing from SetTextCharacterExtra() */
|
||||
short breakTotalExtra; /* Total extra space for justification */
|
||||
short breakCount; /* Break char. count */
|
||||
short breakExtra; /* breakTotalExtra / breakCount */
|
||||
short breakRem; /* breakTotalExtra % breakCount */
|
||||
|
||||
RECT totalExtent;
|
||||
BYTE bitsPerPixel;
|
||||
|
||||
INT MapMode;
|
||||
INT GraphicsMode; /* Graphics mode */
|
||||
INT DCOrgX; /* DC origin */
|
||||
INT DCOrgY;
|
||||
|
||||
#if 0
|
||||
FARPROC lpfnPrint; /* AbortProc for Printing */
|
||||
#endif
|
||||
|
||||
INT CursPosX; /* Current position */
|
||||
INT CursPosY;
|
||||
INT ArcDirection;
|
||||
|
||||
XFORM xformWorld2Wnd; /* World-to-window transformation */
|
||||
XFORM xformWorld2Vport; /* World-to-viewport transformation */
|
||||
XFORM xformVport2World; /* Inverse of the above transformation */
|
||||
BOOL vport2WorldValid; /* Is xformVport2World valid? */
|
||||
} WIN_DC_INFO;
|
||||
|
||||
/* DC flags */
|
||||
#define DC_MEMORY 0x0001 /* It is a memory DC */
|
||||
#define DC_SAVED 0x0002 /* It is a saved DC */
|
||||
#define DC_DIRTY 0x0004 /* hVisRgn has to be updated */
|
||||
#define DC_THUNKHOOK 0x0008 /* DC hook is in the 16-bit code */
|
||||
|
||||
#define GDI_DC_TYPE (1)
|
||||
|
||||
typedef struct _DC
|
||||
{
|
||||
HDC hSelf;
|
||||
HDC hNext;
|
||||
DHPDEV PDev;
|
||||
HSURF FillPatternSurfaces[HS_DDI_MAX];
|
||||
PGDIINFO GDIInfo;
|
||||
PDEVINFO DevInfo;
|
||||
HDEV GDIDevice;
|
||||
|
||||
DRIVER_FUNCTIONS DriverFunctions;
|
||||
UNICODE_STRING DriverName;
|
||||
HANDLE DeviceDriver;
|
||||
|
||||
INT wndOrgX; /* Window origin */
|
||||
INT wndOrgY;
|
||||
INT wndExtX; /* Window extent */
|
||||
INT wndExtY;
|
||||
INT vportOrgX; /* Viewport origin */
|
||||
INT vportOrgY;
|
||||
INT vportExtX; /* Viewport extent */
|
||||
INT vportExtY;
|
||||
|
||||
CLIPOBJ *CombinedClip;
|
||||
|
||||
XLATEOBJ *XlateBrush;
|
||||
XLATEOBJ *XlatePen;
|
||||
|
||||
INT saveLevel;
|
||||
BOOL IsIC;
|
||||
|
||||
WIN_DC_INFO w;
|
||||
} DC, *PDC;
|
||||
|
||||
typedef struct _GDIPOINTER /* should stay private to ENG */
|
||||
{
|
||||
/* private GDI pointer handling information, required for software emulation */
|
||||
BOOL Enabled;
|
||||
POINTL Pos;
|
||||
SIZEL Size;
|
||||
POINTL HotSpot;
|
||||
XLATEOBJ *XlateObject;
|
||||
HSURF ColorSurface;
|
||||
HSURF MaskSurface;
|
||||
HSURF SaveSurface;
|
||||
|
||||
/* public pointer information */
|
||||
RECTL Exclude; /* required publicly for SPS_ACCEPT_EXCLUDE */
|
||||
PGD_MOVEPOINTER MovePointer;
|
||||
ULONG Status;
|
||||
} GDIPOINTER, *PGDIPOINTER;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE Handle;
|
||||
DHPDEV PDev;
|
||||
DEVMODEW DMW;
|
||||
HSURF FillPatterns[HS_DDI_MAX];
|
||||
GDIINFO GDIInfo;
|
||||
DEVINFO DevInfo;
|
||||
DRIVER_FUNCTIONS DriverFunctions;
|
||||
#ifdef NTOS_MODE_USER
|
||||
PVOID VideoFileObject;
|
||||
#else
|
||||
PFILE_OBJECT VideoFileObject;
|
||||
#endif
|
||||
BOOLEAN PreparedDriver;
|
||||
ULONG DisplayNumber;
|
||||
|
||||
GDIPOINTER Pointer;
|
||||
|
||||
/* Stuff to keep track of software cursors; win32k gdi part */
|
||||
UINT SafetyRemoveLevel; /* at what level was the cursor removed?
|
||||
0 for not removed */
|
||||
UINT SafetyRemoveCount;
|
||||
} GDIDEVICE;
|
||||
|
||||
/* Internal functions */
|
||||
|
||||
#ifndef NTOS_MODE_USER
|
||||
|
||||
#define DC_LockDc(hDC) \
|
||||
((PDC) GDIOBJ_LockObj ((HGDIOBJ) hDC, GDI_OBJECT_TYPE_DC))
|
||||
#define DC_UnlockDc(pDC) \
|
||||
GDIOBJ_UnlockObjByPtr (pDC)
|
||||
|
||||
HDC FASTCALL RetrieveDisplayHDC(VOID);
|
||||
HDC FASTCALL DC_AllocDC(PUNICODE_STRING Driver);
|
||||
VOID FASTCALL DC_InitDC(HDC DCToInit);
|
||||
HDC FASTCALL DC_FindOpenDC(PUNICODE_STRING Driver);
|
||||
VOID FASTCALL DC_FreeDC(HDC DCToFree);
|
||||
BOOL INTERNAL_CALL DC_Cleanup(PVOID ObjectBody);
|
||||
HDC FASTCALL DC_GetNextDC (PDC pDC);
|
||||
VOID FASTCALL DC_SetNextDC (PDC pDC, HDC hNextDC);
|
||||
VOID FASTCALL DC_SetOwnership(HDC DC, PEPROCESS Owner);
|
||||
|
||||
VOID FASTCALL DC_UpdateXforms(PDC dc);
|
||||
BOOL FASTCALL DC_InvertXform(const XFORM *xformSrc, XFORM *xformDest);
|
||||
|
||||
#endif
|
||||
|
||||
/* User entry points */
|
||||
|
||||
BOOL STDCALL NtGdiCancelDC(HDC hDC);
|
||||
HDC STDCALL NtGdiCreateCompatableDC(HDC hDC);
|
||||
HDC STDCALL NtGdiCreateDC(PUNICODE_STRING Driver,
|
||||
PUNICODE_STRING Device,
|
||||
PUNICODE_STRING Output,
|
||||
CONST PDEVMODEW InitData);
|
||||
HDC STDCALL NtGdiCreateIC(PUNICODE_STRING Driver,
|
||||
PUNICODE_STRING Device,
|
||||
PUNICODE_STRING Output,
|
||||
CONST PDEVMODEW DevMode);
|
||||
BOOL STDCALL NtGdiDeleteDC(HDC hDC);
|
||||
BOOL STDCALL NtGdiDeleteObject(HGDIOBJ hObject);
|
||||
INT STDCALL NtGdiDrawEscape(HDC hDC,
|
||||
INT nEscape,
|
||||
INT cbInput,
|
||||
LPCSTR lpszInData);
|
||||
|
||||
INT STDCALL NtGdiEnumObjects(HDC hDC,
|
||||
INT ObjectType,
|
||||
GOBJENUMPROC ObjectFunc,
|
||||
LPARAM lParam);
|
||||
|
||||
COLORREF STDCALL NtGdiGetBkColor(HDC hDC);
|
||||
INT STDCALL NtGdiGetBkMode(HDC hDC);
|
||||
BOOL STDCALL NtGdiGetBrushOrgEx(HDC hDC, LPPOINT brushOrg);
|
||||
HRGN STDCALL NtGdiGetClipRgn(HDC hDC);
|
||||
HGDIOBJ STDCALL NtGdiGetCurrentObject(HDC hDC, UINT ObjectType);
|
||||
VOID FASTCALL IntGetCurrentPositionEx (PDC dc, LPPOINT currentPosition);
|
||||
BOOL STDCALL NtGdiGetCurrentPositionEx(HDC hDC, LPPOINT currentPosition);
|
||||
BOOL STDCALL NtGdiGetDCOrgEx(HDC hDC, LPPOINT Point);
|
||||
HDC STDCALL NtGdiGetDCState(HDC hDC);
|
||||
INT STDCALL NtGdiGetDeviceCaps(HDC hDC, INT Index);
|
||||
INT STDCALL NtGdiGetMapMode(HDC hDC);
|
||||
INT STDCALL NtGdiGetObject(HGDIOBJ hGDIObj,
|
||||
INT BufSize,
|
||||
LPVOID Object);
|
||||
DWORD STDCALL NtGdiGetObjectType(HGDIOBJ hGDIObj);
|
||||
INT STDCALL NtGdiGetPolyFillMode(HDC hDC);
|
||||
INT STDCALL NtGdiGetRelAbs(HDC hDC);
|
||||
INT STDCALL NtGdiGetROP2(HDC hDC);
|
||||
HGDIOBJ STDCALL NtGdiGetStockObject(INT Object);
|
||||
INT STDCALL NtGdiGetStretchBltMode(HDC hDC);
|
||||
COLORREF STDCALL NtGdiGetTextColor(HDC hDC);
|
||||
UINT STDCALL NtGdiGetTextAlign(HDC hDC);
|
||||
BOOL STDCALL NtGdiGetViewportExtEx(HDC hDC, LPSIZE viewportExt);
|
||||
BOOL STDCALL NtGdiGetViewportOrgEx(HDC hDC, LPPOINT viewportOrg);
|
||||
BOOL STDCALL NtGdiGetWindowExtEx(HDC hDC, LPSIZE windowExt);
|
||||
BOOL STDCALL NtGdiGetWindowOrgEx(HDC hDC, LPPOINT windowOrg);
|
||||
HDC STDCALL NtGdiResetDC(HDC hDC, CONST DEVMODEW *InitData);
|
||||
BOOL STDCALL NtGdiRestoreDC(HDC hDC, INT SavedDC);
|
||||
INT STDCALL NtGdiSaveDC(HDC hDC);
|
||||
HGDIOBJ STDCALL NtGdiSelectObject(HDC hDC, HGDIOBJ hGDIObj);
|
||||
INT STDCALL NtGdiSetBkMode(HDC hDC, INT backgroundMode);
|
||||
VOID STDCALL NtGdiSetDCState ( HDC hDC, HDC hDCSave );
|
||||
WORD STDCALL NtGdiSetHookFlags(HDC hDC, WORD Flags);
|
||||
INT STDCALL NtGdiSetPolyFillMode(HDC hDC, INT polyFillMode);
|
||||
INT STDCALL NtGdiSetRelAbs(HDC hDC, INT relAbsMode);
|
||||
INT STDCALL NtGdiSetROP2(HDC hDC, INT ROPmode);
|
||||
INT STDCALL NtGdiSetStretchBltMode(HDC hDC, INT stretchBltMode);
|
||||
COLORREF STDCALL NtGdiSetTextColor(HDC hDC, COLORREF color);
|
||||
|
||||
#endif
|
192
inc_w32k/driver.h
Normal file
192
inc_w32k/driver.h
Normal file
@@ -0,0 +1,192 @@
|
||||
|
||||
#ifndef __WIN32K_DRIVER_H
|
||||
#define __WIN32K_DRIVER_H
|
||||
|
||||
#include <ddk/winddi.h>
|
||||
|
||||
typedef BOOL (STDCALL *PGD_ENABLEDRIVER)(ULONG, ULONG, PDRVENABLEDATA);
|
||||
typedef DHPDEV (STDCALL *PGD_ENABLEPDEV)(DEVMODEW *,
|
||||
LPWSTR,
|
||||
ULONG,
|
||||
HSURF *,
|
||||
ULONG,
|
||||
ULONG *,
|
||||
ULONG,
|
||||
DEVINFO *,
|
||||
LPWSTR,
|
||||
LPWSTR,
|
||||
HANDLE);
|
||||
typedef VOID (STDCALL *PGD_COMPLETEPDEV)(DHPDEV, HDEV);
|
||||
typedef VOID (STDCALL *PGD_DISABLEPDEV)(DHPDEV);
|
||||
typedef HSURF (STDCALL *PGD_ENABLESURFACE)(DHPDEV);
|
||||
typedef VOID (STDCALL *PGD_DISABLESURFACE)(DHPDEV);
|
||||
typedef BOOL (STDCALL *PGD_ASSERTMODE)(DHPDEV, BOOL);
|
||||
typedef BOOL (STDCALL *PGD_OFFSET)(SURFOBJ*, LONG, LONG, FLONG);
|
||||
typedef BOOL (STDCALL *PGD_RESETPDEV)(DHPDEV, DHPDEV);
|
||||
typedef VOID (STDCALL *PGD_DISABLEDRIVER)(VOID);
|
||||
typedef HBITMAP (STDCALL *PGD_CREATEDEVICEBITMAP)(DHPDEV, SIZEL, ULONG);
|
||||
typedef VOID (STDCALL *PGD_DELETEDEVICEBITMAP)(DHSURF);
|
||||
typedef BOOL (STDCALL *PGD_ALPHABLEND)(SURFOBJ*, SURFOBJ*, CLIPOBJ*, XLATEOBJ*, RECTL*, RECTL*, BLENDOBJ*);
|
||||
typedef BOOL (STDCALL *PGD_REALIZEBRUSH)(BRUSHOBJ*, SURFOBJ*, SURFOBJ*, SURFOBJ*,
|
||||
XLATEOBJ*, ULONG);
|
||||
typedef ULONG (STDCALL *PGD_DITHERCOLOR)(DHPDEV, ULONG, ULONG, PULONG);
|
||||
typedef BOOL (STDCALL *PGD_STROKEPATH)(SURFOBJ*, PATHOBJ*, CLIPOBJ*, XFORMOBJ*,
|
||||
BRUSHOBJ*, POINTL*, PLINEATTRS, MIX);
|
||||
typedef BOOL (STDCALL *PGD_FILLPATH)(SURFOBJ*, PATHOBJ*, CLIPOBJ*, BRUSHOBJ*,
|
||||
POINTL*, MIX, ULONG);
|
||||
typedef BOOL (STDCALL *PGD_STROKEANDFILLPATH)(SURFOBJ*, PATHOBJ*, CLIPOBJ*,
|
||||
XFORMOBJ*, BRUSHOBJ*, PLINEATTRS,
|
||||
BRUSHOBJ*, POINTL*, MIX, ULONG);
|
||||
typedef BOOL (STDCALL *PGD_PAINT)(SURFOBJ*, CLIPOBJ*, BRUSHOBJ*, POINTL*, MIX);
|
||||
typedef BOOL (STDCALL *PGD_BITBLT)(SURFOBJ*, SURFOBJ*, SURFOBJ*, CLIPOBJ*,
|
||||
XLATEOBJ*, RECTL*, POINTL*, POINTL*, BRUSHOBJ*,
|
||||
POINTL*, ROP4);
|
||||
typedef BOOL (STDCALL *PGD_TRANSPARENTBLT)(SURFOBJ*, SURFOBJ*, CLIPOBJ*, XLATEOBJ*,
|
||||
RECTL*, RECTL*, ULONG, ULONG);
|
||||
typedef BOOL (STDCALL *PGD_COPYBITS)(SURFOBJ*, SURFOBJ*, CLIPOBJ*, XLATEOBJ*,
|
||||
RECTL*, POINTL*);
|
||||
typedef BOOL (STDCALL *PGD_STRETCHBLT)(SURFOBJ*, SURFOBJ*, SURFOBJ*, CLIPOBJ*,
|
||||
XLATEOBJ*, COLORADJUSTMENT*, POINTL*,
|
||||
RECTL*, RECTL*, POINTL*, ULONG);
|
||||
typedef BOOL (STDCALL *PGD_STRETCHBLTROP)(SURFOBJ*, SURFOBJ*, SURFOBJ*, CLIPOBJ*,
|
||||
XLATEOBJ*, COLORADJUSTMENT*, POINTL*,
|
||||
RECTL*, RECTL*, POINTL*, ULONG,
|
||||
BRUSHOBJ*, DWORD);
|
||||
typedef BOOL (STDCALL *PGD_SETPALETTE)(DHPDEV, PALOBJ*, ULONG, ULONG, ULONG);
|
||||
typedef BOOL (STDCALL *PGD_TEXTOUT)(SURFOBJ*, STROBJ*, FONTOBJ*, CLIPOBJ*, RECTL*,
|
||||
RECTL*, BRUSHOBJ*, BRUSHOBJ*, POINTL*, MIX);
|
||||
typedef ULONG (STDCALL *PGD_ESCAPE)(SURFOBJ*, ULONG, ULONG, PVOID *, ULONG, PVOID *);
|
||||
typedef ULONG (STDCALL *PGD_DRAWESCAPE)(SURFOBJ*, ULONG, CLIPOBJ*, RECTL*, ULONG,
|
||||
PVOID *);
|
||||
typedef PIFIMETRICS (STDCALL *PGD_QUERYFONT)(DHPDEV, ULONG, ULONG, PULONG);
|
||||
typedef PVOID (STDCALL *PGD_QUERYFONTTREE)(DHPDEV, ULONG, ULONG, ULONG, PULONG);
|
||||
typedef LONG (STDCALL *PGD_QUERYFONTDATA)(DHPDEV, FONTOBJ*, ULONG, HGLYPH, GLYPHDATA*,
|
||||
PVOID, ULONG);
|
||||
typedef ULONG (STDCALL *PGD_SETPOINTERSHAPE)(SURFOBJ*, SURFOBJ*, SURFOBJ*, XLATEOBJ*,
|
||||
LONG, LONG, LONG, LONG, RECTL*, ULONG);
|
||||
typedef VOID (STDCALL *PGD_MOVEPOINTER)(SURFOBJ*, LONG, LONG, RECTL*);
|
||||
typedef BOOL (STDCALL *PGD_LINETO)(SURFOBJ*, CLIPOBJ*, BRUSHOBJ*, LONG, LONG, LONG,
|
||||
LONG, RECTL*, MIX);
|
||||
typedef BOOL (STDCALL *PGD_SENDPAGE)(SURFOBJ*);
|
||||
typedef BOOL (STDCALL *PGD_STARTPAGE)(SURFOBJ*);
|
||||
typedef BOOL (STDCALL *PGD_ENDDOC)(SURFOBJ*, ULONG);
|
||||
typedef BOOL (STDCALL *PGD_STARTDOC)(SURFOBJ*, PWSTR, DWORD);
|
||||
typedef ULONG (STDCALL *PGD_GETGLYPHMODE)(DHPDEV, FONTOBJ*);
|
||||
typedef VOID (STDCALL *PGD_SYNCHRONIZE)(DHPDEV, RECTL*);
|
||||
typedef ULONG (STDCALL *PGD_SAVESCREENBITS)(SURFOBJ*, ULONG, ULONG, RECTL*);
|
||||
typedef ULONG (STDCALL *PGD_GETMODES)(HANDLE, ULONG, PDEVMODEW);
|
||||
typedef VOID (STDCALL *PGD_FREE)(PVOID, ULONG);
|
||||
typedef VOID (STDCALL *PGD_DESTROYFONT)(FONTOBJ*);
|
||||
typedef LONG (STDCALL *PGD_QUERYFONTCAPS)(ULONG, PULONG);
|
||||
typedef ULONG (STDCALL *PGD_LOADFONTFILE)(ULONG, PVOID, ULONG, ULONG);
|
||||
typedef BOOL (STDCALL *PGD_UNLOADFONTFILE)(ULONG);
|
||||
typedef ULONG (STDCALL *PGD_FONTMANAGEMENT)(SURFOBJ*, FONTOBJ*, ULONG, ULONG, PVOID,
|
||||
ULONG, PVOID);
|
||||
typedef LONG (STDCALL *PGD_QUERYTRUETYPETABLE)(ULONG, ULONG, ULONG, PTRDIFF, ULONG,
|
||||
PBYTE);
|
||||
typedef LONG (STDCALL *PGD_QUERYTRUETYPEOUTLINE)(DHPDEV, FONTOBJ*, HGLYPH, BOOL,
|
||||
GLYPHDATA*, ULONG, TTPOLYGONHEADER*);
|
||||
typedef PVOID (STDCALL *PGD_GETTRUETYPEFILE)(ULONG, PULONG);
|
||||
typedef LONG (STDCALL *PGD_QUERYFONTFILE)(ULONG, ULONG, ULONG, PULONG);
|
||||
typedef BOOL (STDCALL *PGD_QUERYADVANCEWIDTHS)(DHPDEV, FONTOBJ*, ULONG, HGLYPH *,
|
||||
PVOID *, ULONG);
|
||||
typedef BOOL (STDCALL *PGD_SETPIXELFORMAT)(SURFOBJ*, LONG, ULONG);
|
||||
typedef LONG (STDCALL *PGD_DESCRIBEPIXELFORMAT)(DHPDEV, LONG, ULONG,
|
||||
PPIXELFORMATDESCRIPTOR);
|
||||
typedef BOOL (STDCALL *PGD_SWAPBUFFERS)(SURFOBJ*, PWNDOBJ);
|
||||
typedef BOOL (STDCALL *PGD_STARTBANDING)(SURFOBJ*, POINTL*);
|
||||
typedef BOOL (STDCALL *PGD_NEXTBAND)(SURFOBJ*, POINTL*);
|
||||
|
||||
typedef BOOL (STDCALL *PGD_GETDIRECTDRAWINFO)(DHPDEV, PDD_HALINFO, PDWORD, VIDEOMEMORY*, PDWORD, PDWORD);
|
||||
typedef BOOL (STDCALL *PGD_ENABLEDIRECTDRAW)(DHPDEV, PDD_CALLBACKS, PDD_SURFACECALLBACKS, PDD_PALETTECALLBACKS);
|
||||
typedef VOID (STDCALL *PGD_DISABLEDIRECTDRAW)(DHPDEV);
|
||||
|
||||
typedef LONG (STDCALL *PGD_QUERYSPOOLTYPE)(DHPDEV, LPWSTR);
|
||||
|
||||
typedef BOOL (STDCALL *PGD_GRADIENTFILL)(SURFOBJ*, CLIPOBJ*, XLATEOBJ*, TRIVERTEX*, ULONG, PVOID, ULONG, RECTL*, POINTL*, ULONG);
|
||||
|
||||
typedef VOID (STDCALL *PGD_SYNCHRONIZESURFACE)(SURFOBJ*, RECTL *, FLONG);
|
||||
|
||||
typedef struct _DRIVER_FUNCTIONS
|
||||
{
|
||||
PGD_ENABLEDRIVER EnableDriver;
|
||||
PGD_ENABLEPDEV EnablePDEV;
|
||||
PGD_COMPLETEPDEV CompletePDEV;
|
||||
PGD_DISABLEPDEV DisablePDEV;
|
||||
PGD_ENABLESURFACE EnableSurface;
|
||||
PGD_DISABLESURFACE DisableSurface;
|
||||
PGD_ASSERTMODE AssertMode;
|
||||
PGD_OFFSET Offset;
|
||||
PGD_RESETPDEV ResetPDEV;
|
||||
PGD_DISABLEDRIVER DisableDriver;
|
||||
PGD_CREATEDEVICEBITMAP CreateDeviceBitmap;
|
||||
PGD_DELETEDEVICEBITMAP DeleteDeviceBitmap;
|
||||
PGD_REALIZEBRUSH RealizeBrush;
|
||||
PGD_DITHERCOLOR DitherColor;
|
||||
PGD_STROKEPATH StrokePath;
|
||||
PGD_FILLPATH FillPath;
|
||||
PGD_STROKEANDFILLPATH StrokeAndFillPath;
|
||||
PGD_PAINT Paint;
|
||||
PGD_BITBLT BitBlt;
|
||||
PGD_TRANSPARENTBLT TransparentBlt;
|
||||
PGD_COPYBITS CopyBits;
|
||||
PGD_STRETCHBLT StretchBlt;
|
||||
PGD_STRETCHBLTROP StretchBltROP;
|
||||
PGD_SETPALETTE SetPalette;
|
||||
PGD_TEXTOUT TextOut;
|
||||
PGD_ESCAPE Escape;
|
||||
PGD_DRAWESCAPE DrawEscape;
|
||||
PGD_QUERYFONT QueryFont;
|
||||
PGD_QUERYFONTTREE QueryFontTree;
|
||||
PGD_QUERYFONTDATA QueryFontData;
|
||||
PGD_SETPOINTERSHAPE SetPointerShape;
|
||||
PGD_MOVEPOINTER MovePointer;
|
||||
PGD_LINETO LineTo;
|
||||
PGD_SENDPAGE SendPage;
|
||||
PGD_STARTPAGE StartPage;
|
||||
PGD_ENDDOC EndDoc;
|
||||
PGD_STARTDOC StartDoc;
|
||||
PGD_GETGLYPHMODE GetGlyphMode;
|
||||
PGD_SYNCHRONIZE Synchronize;
|
||||
PGD_SAVESCREENBITS SaveScreenBits;
|
||||
PGD_GETMODES GetModes;
|
||||
PGD_FREE Free;
|
||||
PGD_DESTROYFONT DestroyFont;
|
||||
PGD_QUERYFONTCAPS QueryFontCaps;
|
||||
PGD_LOADFONTFILE LoadFontFile;
|
||||
PGD_UNLOADFONTFILE UnloadFontFile;
|
||||
PGD_FONTMANAGEMENT FontManagement;
|
||||
PGD_QUERYTRUETYPETABLE QueryTrueTypeTable;
|
||||
PGD_QUERYTRUETYPEOUTLINE QueryTrueTypeOutline;
|
||||
PGD_GETTRUETYPEFILE GetTrueTypeFile;
|
||||
PGD_QUERYFONTFILE QueryFontFile;
|
||||
PGD_QUERYADVANCEWIDTHS QueryAdvanceWidths;
|
||||
PGD_SETPIXELFORMAT SetPixelFormat;
|
||||
PGD_DESCRIBEPIXELFORMAT DescribePixelFormat;
|
||||
PGD_SWAPBUFFERS SwapBuffers;
|
||||
PGD_STARTBANDING StartBanding;
|
||||
PGD_NEXTBAND NextBand;
|
||||
PGD_GETDIRECTDRAWINFO GetDirectDrawInfo;
|
||||
PGD_ENABLEDIRECTDRAW EnableDirectDraw;
|
||||
PGD_DISABLEDIRECTDRAW DisableDirectDraw;
|
||||
PGD_QUERYSPOOLTYPE QuerySpoolType;
|
||||
PGD_GRADIENTFILL GradientFill;
|
||||
PGD_SYNCHRONIZESURFACE SynchronizeSurface;
|
||||
PGD_ALPHABLEND AlphaBlend;
|
||||
} DRIVER_FUNCTIONS, *PDRIVER_FUNCTIONS;
|
||||
|
||||
#ifndef NTOS_MODE_USER
|
||||
|
||||
BOOL DRIVER_RegisterDriver(LPCWSTR Name, PGD_ENABLEDRIVER EnableDriver);
|
||||
PGD_ENABLEDRIVER DRIVER_FindDDIDriver(LPCWSTR Name);
|
||||
PFILE_OBJECT DRIVER_FindMPDriver(ULONG DisplayNumber);
|
||||
BOOL DRIVER_BuildDDIFunctions(PDRVENABLEDATA DED,
|
||||
PDRIVER_FUNCTIONS DF);
|
||||
BOOL DRIVER_UnregisterDriver(LPCWSTR Name);
|
||||
INT DRIVER_ReferenceDriver (LPCWSTR Name);
|
||||
INT DRIVER_UnreferenceDriver (LPCWSTR Name);
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
68
inc_w32k/fillshap.h
Normal file
68
inc_w32k/fillshap.h
Normal file
@@ -0,0 +1,68 @@
|
||||
#ifndef __WIN32K_FILLSHAP_H
|
||||
#define __WIN32K_FILLSHAP_H
|
||||
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiChord(HDC hDC,
|
||||
int LeftRect,
|
||||
int TopRect,
|
||||
int RightRect,
|
||||
int BottomRect,
|
||||
int XRadial1,
|
||||
int YRadial1,
|
||||
int XRadial2,
|
||||
int YRadial2);
|
||||
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiEllipse(HDC hDC,
|
||||
int LeftRect,
|
||||
int TopRect,
|
||||
int RightRect,
|
||||
int BottomRect);
|
||||
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiPie(HDC hDC,
|
||||
int LeftRect,
|
||||
int TopRect,
|
||||
int RightRect,
|
||||
int BottomRect,
|
||||
int XRadial1,
|
||||
int YRadial1,
|
||||
int XRadial2,
|
||||
int YRadial2);
|
||||
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiPolygon(HDC hDC,
|
||||
CONST PPOINT Points,
|
||||
int Count);
|
||||
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiPolyPolygon(HDC hDC,
|
||||
CONST LPPOINT Points,
|
||||
CONST LPINT PolyCounts,
|
||||
int Count);
|
||||
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiRectangle(HDC hDC,
|
||||
int LeftRect,
|
||||
int TopRect,
|
||||
int RightRect,
|
||||
int BottomRect);
|
||||
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiRoundRect(HDC hDC,
|
||||
int LeftRect,
|
||||
int TopRect,
|
||||
int RightRect,
|
||||
int BottomRect,
|
||||
int Width,
|
||||
int Height);
|
||||
|
||||
#endif
|
||||
|
103
inc_w32k/float.h
Normal file
103
inc_w32k/float.h
Normal file
@@ -0,0 +1,103 @@
|
||||
#ifndef __WIN32K_FLOAT_H
|
||||
#define __WIN32K_FLOAT_H
|
||||
|
||||
#include <win32k/math.h>
|
||||
#include <win32k/dc.h>
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
|
||||
typedef struct tagFLOAT_POINT
|
||||
{
|
||||
FLOAT x, y;
|
||||
} FLOAT_POINT;
|
||||
|
||||
/* Rounds a floating point number to integer. The world-to-viewport
|
||||
* transformation process is done in floating point internally. This function
|
||||
* is then used to round these coordinates to integer values.
|
||||
*/
|
||||
static inline INT GDI_ROUND(FLOAT val)
|
||||
{
|
||||
return (int)floor(val + 0.5);
|
||||
}
|
||||
|
||||
/* Performs a world-to-viewport transformation on the specified point (which
|
||||
* is in floating point format).
|
||||
*/
|
||||
static inline void INTERNAL_LPTODP_FLOAT(DC *dc, FLOAT_POINT *point)
|
||||
{
|
||||
FLOAT x, y;
|
||||
|
||||
/* Perform the transformation */
|
||||
x = point->x;
|
||||
y = point->y;
|
||||
point->x = x * dc->w.xformWorld2Vport.eM11 +
|
||||
y * dc->w.xformWorld2Vport.eM21 +
|
||||
dc->w.xformWorld2Vport.eDx;
|
||||
point->y = x * dc->w.xformWorld2Vport.eM12 +
|
||||
y * dc->w.xformWorld2Vport.eM22 +
|
||||
dc->w.xformWorld2Vport.eDy;
|
||||
}
|
||||
|
||||
/* Performs a viewport-to-world transformation on the specified point (which
|
||||
* is in integer format). Returns TRUE if successful, else FALSE.
|
||||
*/
|
||||
#if 0
|
||||
static inline BOOL INTERNAL_DPTOLP(DC *dc, LPPOINT point)
|
||||
{
|
||||
FLOAT_POINT floatPoint;
|
||||
|
||||
/* Perform operation with floating point */
|
||||
floatPoint.x=(FLOAT)point->x;
|
||||
floatPoint.y=(FLOAT)point->y;
|
||||
if (!INTERNAL_DPTOLP_FLOAT(dc, &floatPoint))
|
||||
return FALSE;
|
||||
|
||||
/* Round to integers */
|
||||
point->x = GDI_ROUND(floatPoint.x);
|
||||
point->y = GDI_ROUND(floatPoint.y);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* Performs a world-to-viewport transformation on the specified point (which
|
||||
* is in integer format).
|
||||
*/
|
||||
static inline void INTERNAL_LPTODP(DC *dc, LPPOINT point)
|
||||
{
|
||||
FLOAT_POINT floatPoint;
|
||||
|
||||
/* Perform operation with floating point */
|
||||
floatPoint.x=(FLOAT)point->x;
|
||||
floatPoint.y=(FLOAT)point->y;
|
||||
INTERNAL_LPTODP_FLOAT(dc, &floatPoint);
|
||||
|
||||
/* Round to integers */
|
||||
point->x = GDI_ROUND(floatPoint.x);
|
||||
point->y = GDI_ROUND(floatPoint.y);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#define MulDiv( x, y, z ) EngMulDiv( x, y, z )
|
||||
|
||||
#define XDPTOLP(dc,x) \
|
||||
(MulDiv(((x)-(dc)->vportOrgX), (dc)->wndExtX, (dc)->vportExtX) + (dc)->wndOrgX)
|
||||
#define YDPTOLP(dc,y) \
|
||||
(MulDiv(((y)-(dc)->vportOrgY), (dc)->wndExtY, (dc)->vportExtY) + (dc)->wndOrgY)
|
||||
#define XLPTODP(dc,x) \
|
||||
(MulDiv(((x)-(dc)->wndOrgX), (dc)->vportExtX, (dc)->wndExtX) + (dc)->vportOrgX)
|
||||
#define YLPTODP(dc,y) \
|
||||
(MulDiv(((y)-(dc)->wndOrgY), (dc)->vportExtY, (dc)->wndExtY) + (dc)->vportOrgY)
|
||||
|
||||
/* Device <-> logical size conversion */
|
||||
|
||||
#define XDSTOLS(dc,x) \
|
||||
MulDiv((x), (dc)->wndExtX, (dc)->vportExtX)
|
||||
#define YDSTOLS(dc,y) \
|
||||
MulDiv((y), (dc)->wndExtY, (dc)->vportExtY)
|
||||
#define XLSTODS(dc,x) \
|
||||
MulDiv((x), (dc)->vportExtX, (dc)->wndExtX)
|
||||
#define YLSTODS(dc,y) \
|
||||
MulDiv((y), (dc)->vportExtY, (dc)->wndExtY)
|
||||
|
||||
#endif
|
25
inc_w32k/font.h
Normal file
25
inc_w32k/font.h
Normal file
@@ -0,0 +1,25 @@
|
||||
/* $Id$
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS system libraries
|
||||
* FILE: include/win32k/font.h
|
||||
* PURPOSE: GDI32/Win32k font interface
|
||||
* PROGRAMMER:
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef WIN32K_FONT_H_INCLUDED
|
||||
#define WIN32K_FONT_H_INCLUDED
|
||||
|
||||
typedef struct tagFONTFAMILYINFO
|
||||
{
|
||||
ENUMLOGFONTEXW EnumLogFontEx;
|
||||
NEWTEXTMETRICEXW NewTextMetricEx;
|
||||
DWORD FontType;
|
||||
} FONTFAMILYINFO, *PFONTFAMILYINFO;
|
||||
|
||||
int STDCALL NtGdiGetFontFamilyInfo(HDC Dc, LPLOGFONTW LogFont, PFONTFAMILYINFO Info, DWORD Size);
|
||||
BOOL STDCALL NtGdiTranslateCharsetInfo(PDWORD Src, LPCHARSETINFO CSI, DWORD Flags);
|
||||
DWORD STDCALL NtGdiGetFontData(HDC,DWORD,DWORD,LPVOID,DWORD);
|
||||
|
||||
#endif /* WIN32K_FONT_H_INCLUDED */
|
125
inc_w32k/gdiobj.h
Normal file
125
inc_w32k/gdiobj.h
Normal file
@@ -0,0 +1,125 @@
|
||||
/*
|
||||
* GDI object common header definition
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __WIN32K_GDIOBJ_H
|
||||
#define __WIN32K_GDIOBJ_H
|
||||
|
||||
/* base address where the handle table is mapped to */
|
||||
#define GDI_HANDLE_TABLE_BASE_ADDRESS (0x400000)
|
||||
|
||||
/* gdi handle table can hold 0x4000 handles */
|
||||
#define GDI_HANDLE_COUNT 0x4000
|
||||
|
||||
#define GDI_GLOBAL_PROCESS (0x0)
|
||||
|
||||
#define GDI_HANDLE_INDEX_MASK (GDI_HANDLE_COUNT - 1)
|
||||
#define GDI_HANDLE_TYPE_MASK 0x007f0000
|
||||
#define GDI_HANDLE_STOCK_MASK 0x00800000
|
||||
#define GDI_HANDLE_REUSE_MASK 0xff000000
|
||||
|
||||
#define GDI_HANDLE_REUSECNT_SHIFT 24
|
||||
|
||||
#define GDI_HANDLE_CREATE(i, t) ((HANDLE)(((i) & GDI_HANDLE_INDEX_MASK) | ((t) & GDI_HANDLE_TYPE_MASK)))
|
||||
#define GDI_HANDLE_GET_INDEX(h) (((ULONG_PTR)(h)) & GDI_HANDLE_INDEX_MASK)
|
||||
#define GDI_HANDLE_GET_TYPE(h) (((ULONG_PTR)(h)) & GDI_HANDLE_TYPE_MASK)
|
||||
#define GDI_HANDLE_IS_TYPE(h, t) ((t) == (((ULONG_PTR)(h)) & GDI_HANDLE_TYPE_MASK))
|
||||
#define GDI_HANDLE_IS_STOCKOBJ(h) (0 != (((ULONG_PTR)(h)) & GDI_HANDLE_STOCK_MASK))
|
||||
#define GDI_HANDLE_SET_STOCKOBJ(h) ((h) = (HANDLE)(((ULONG_PTR)(h)) | GDI_HANDLE_STOCK_MASK))
|
||||
|
||||
|
||||
/*! \defgroup GDI object types
|
||||
*
|
||||
* GDI object types
|
||||
*
|
||||
*/
|
||||
/*@{*/
|
||||
#define GDI_OBJECT_TYPE_DC 0x00010000
|
||||
#define GDI_OBJECT_TYPE_REGION 0x00040000
|
||||
#define GDI_OBJECT_TYPE_BITMAP 0x00050000
|
||||
#define GDI_OBJECT_TYPE_PALETTE 0x00080000
|
||||
#define GDI_OBJECT_TYPE_FONT 0x000a0000
|
||||
#define GDI_OBJECT_TYPE_BRUSH 0x00100000
|
||||
#define GDI_OBJECT_TYPE_EMF 0x00210000
|
||||
#define GDI_OBJECT_TYPE_PEN 0x00300000
|
||||
#define GDI_OBJECT_TYPE_EXTPEN 0x00500000
|
||||
/* Following object types made up for ROS */
|
||||
#define GDI_OBJECT_TYPE_METADC 0x00710000
|
||||
#define GDI_OBJECT_TYPE_METAFILE 0x00720000
|
||||
#define GDI_OBJECT_TYPE_ENHMETAFILE 0x00730000
|
||||
#define GDI_OBJECT_TYPE_ENHMETADC 0x00740000
|
||||
#define GDI_OBJECT_TYPE_MEMDC 0x00750000
|
||||
#define GDI_OBJECT_TYPE_DCE 0x00770000
|
||||
#define GDI_OBJECT_TYPE_DONTCARE 0x007f0000
|
||||
/** Not really an object type. Forces GDI_FreeObj to be silent. */
|
||||
#define GDI_OBJECT_TYPE_SILENT 0x80000000
|
||||
/*@}*/
|
||||
|
||||
typedef PVOID PGDIOBJ;
|
||||
|
||||
#ifndef NTOS_MODE_USER
|
||||
typedef BOOL (INTERNAL_CALL *GDICLEANUPPROC)(PVOID ObjectBody);
|
||||
#endif
|
||||
|
||||
/*!
|
||||
* GDI object header. This is a part of any GDI object
|
||||
*/
|
||||
typedef struct _GDIOBJHDR
|
||||
{
|
||||
#ifdef NTOS_MODE_USER
|
||||
PVOID LockingThread;
|
||||
#else
|
||||
PETHREAD LockingThread; /* only assigned if a thread is holding the lock! */
|
||||
#endif
|
||||
ULONG Locks;
|
||||
#ifdef GDI_DEBUG
|
||||
const char* createdfile;
|
||||
int createdline;
|
||||
const char* lockfile;
|
||||
int lockline;
|
||||
#endif
|
||||
} GDIOBJHDR, *PGDIOBJHDR;
|
||||
|
||||
#ifndef NTOS_MODE_USER
|
||||
|
||||
BOOL INTERNAL_CALL GDIOBJ_OwnedByCurrentProcess(HGDIOBJ ObjectHandle);
|
||||
void INTERNAL_CALL GDIOBJ_SetOwnership(HGDIOBJ ObjectHandle, PEPROCESS Owner);
|
||||
void INTERNAL_CALL GDIOBJ_CopyOwnership(HGDIOBJ CopyFrom, HGDIOBJ CopyTo);
|
||||
BOOL INTERNAL_CALL GDIOBJ_ConvertToStockObj(HGDIOBJ *hObj);
|
||||
VOID INTERNAL_CALL GDIOBJ_UnlockObjByPtr(PGDIOBJ Object);
|
||||
|
||||
#define GDIOBJ_GetObjectType(Handle) \
|
||||
GDI_HANDLE_GET_TYPE(Handle)
|
||||
|
||||
#ifdef GDI_DEBUG
|
||||
|
||||
/* a couple macros for debugging GDIOBJ locking */
|
||||
#define GDIOBJ_AllocObj(ty) GDIOBJ_AllocObjDbg(__FILE__,__LINE__,ty)
|
||||
#define GDIOBJ_FreeObj(obj,ty) GDIOBJ_FreeObjDbg(__FILE__,__LINE__,obj,ty)
|
||||
#define GDIOBJ_LockObj(obj,ty) GDIOBJ_LockObjDbg(__FILE__,__LINE__,obj,ty)
|
||||
#define GDIOBJ_ShareLockObj(obj,ty) GDIOBJ_ShareLockObjDbg(__FILE__,__LINE__,obj,ty)
|
||||
|
||||
HGDIOBJ INTERNAL_CALL GDIOBJ_AllocObjDbg(const char* file, int line, ULONG ObjectType);
|
||||
BOOL INTERNAL_CALL GDIOBJ_FreeObjDbg (const char* file, int line, HGDIOBJ hObj, DWORD ObjectType);
|
||||
PGDIOBJ INTERNAL_CALL GDIOBJ_LockObjDbg (const char* file, int line, HGDIOBJ hObj, DWORD ObjectType);
|
||||
PGDIOBJ INTERNAL_CALL GDIOBJ_ShareLockObjDbg (const char* file, int line, HGDIOBJ hObj, DWORD ObjectType);
|
||||
|
||||
#else /* !GDI_DEBUG */
|
||||
|
||||
HGDIOBJ INTERNAL_CALL GDIOBJ_AllocObj(ULONG ObjectType);
|
||||
BOOL INTERNAL_CALL GDIOBJ_FreeObj (HGDIOBJ hObj, DWORD ObjectType);
|
||||
PGDIOBJ INTERNAL_CALL GDIOBJ_LockObj (HGDIOBJ hObj, DWORD ObjectType);
|
||||
PGDIOBJ INTERNAL_CALL GDIOBJ_ShareLockObj (HGDIOBJ hObj, DWORD ObjectType);
|
||||
|
||||
#endif /* GDI_DEBUG */
|
||||
|
||||
PVOID INTERNAL_CALL GDI_MapHandleTable(PEPROCESS Process);
|
||||
|
||||
#endif
|
||||
|
||||
#define GDIOBJFLAG_DEFAULT (0x0)
|
||||
#define GDIOBJFLAG_IGNOREPID (0x1)
|
||||
#define GDIOBJFLAG_IGNORELOCK (0x2)
|
||||
|
||||
#endif
|
81
inc_w32k/icm.h
Normal file
81
inc_w32k/icm.h
Normal file
@@ -0,0 +1,81 @@
|
||||
|
||||
#ifndef __WIN32K_ICM_H
|
||||
#define __WIN32K_ICM_H
|
||||
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiCheckColorsInGamut(HDC hDC,
|
||||
LPVOID RGBTriples,
|
||||
LPVOID Buffer,
|
||||
UINT Count);
|
||||
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiColorMatchToTarget(HDC hDC,
|
||||
HDC hDCTarget,
|
||||
DWORD Action);
|
||||
|
||||
HCOLORSPACE
|
||||
STDCALL
|
||||
NtGdiCreateColorSpace(LPLOGCOLORSPACEW LogColorSpace);
|
||||
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiDeleteColorSpace(HCOLORSPACE hColorSpace);
|
||||
|
||||
INT
|
||||
STDCALL
|
||||
NtGdiEnumICMProfiles(HDC hDC,
|
||||
LPWSTR lpstrBuffer,
|
||||
UINT cch );
|
||||
|
||||
HCOLORSPACE
|
||||
STDCALL
|
||||
NtGdiGetColorSpace(HDC hDC);
|
||||
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiGetDeviceGammaRamp(HDC hDC,
|
||||
LPVOID Ramp);
|
||||
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiGetICMProfile(HDC hDC,
|
||||
LPDWORD NameSize,
|
||||
LPWSTR Filename);
|
||||
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiGetLogColorSpace(HCOLORSPACE hColorSpace,
|
||||
LPLOGCOLORSPACEW Buffer,
|
||||
DWORD Size);
|
||||
|
||||
HCOLORSPACE
|
||||
STDCALL
|
||||
NtGdiSetColorSpace(HDC hDC,
|
||||
HCOLORSPACE hColorSpace);
|
||||
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiSetDeviceGammaRamp(HDC hDC,
|
||||
LPVOID Ramp);
|
||||
|
||||
INT
|
||||
STDCALL
|
||||
NtGdiSetICMMode(HDC hDC,
|
||||
INT EnableICM);
|
||||
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiSetICMProfile(HDC hDC,
|
||||
LPWSTR Filename);
|
||||
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiUpdateICMRegKey(DWORD Reserved,
|
||||
LPWSTR CMID,
|
||||
LPWSTR Filename,
|
||||
UINT Command);
|
||||
|
||||
#endif
|
||||
|
@@ -5,14 +5,18 @@
|
||||
#define INTERNAL_CALL STDCALL
|
||||
#endif
|
||||
|
||||
#include <win32k/bitmaps.h>
|
||||
#include <win32k/brush.h>
|
||||
#include <win32k/callback.h>
|
||||
#include <win32k/caret.h>
|
||||
#include <win32k/cliprgn.h>
|
||||
#include <win32k/color.h>
|
||||
#include <win32k/coord.h>
|
||||
#include <win32k/cursoricon.h>
|
||||
#include <win32k/path.h>
|
||||
#include <win32k/driver.h>
|
||||
#include <win32k/dc.h>
|
||||
#include <win32k/debug.h>
|
||||
#include <win32k/coord.h>
|
||||
#include <win32k/bitmaps.h>
|
||||
//#include <win32k/debug.h>
|
||||
#include <win32k/fillshap.h>
|
||||
#include <win32k/font.h>
|
||||
#include <win32k/icm.h>
|
||||
@@ -22,7 +26,6 @@
|
||||
#include <win32k/misc.h>
|
||||
#include <win32k/ntuser.h>
|
||||
#include <win32k/paint.h>
|
||||
#include <win32k/path.h>
|
||||
#include <win32k/pen.h>
|
||||
#include <win32k/print.h>
|
||||
#include <win32k/region.h>
|
@@ -22,6 +22,7 @@ typedef struct tagROSMENUINFO {
|
||||
WORD Height; /* Height of the whole menu */
|
||||
HWND WndOwner; /* window receiving the messages for ownerdraw */
|
||||
BOOL TimeToHide; /* Request hiding when receiving a second click in the top-level menu item */
|
||||
SIZE maxBmpSize; /* Maximum size of the bitmap items in MIIM_BITMAP state */
|
||||
} ROSMENUINFO, *PROSMENUINFO;
|
||||
|
||||
/* (other FocusedItem values give the position of the focused item) */
|
@@ -2,10 +2,6 @@
|
||||
#ifndef __WIN32K_NTDDRAW_H
|
||||
#define __WIN32K_NTDDRAW_H
|
||||
|
||||
#include <windows.h>
|
||||
#include <ddk/ddrawint.h>
|
||||
#include <ddk/d3dnthal.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
@@ -1,9 +1,7 @@
|
||||
#ifndef __WIN32K_NTUSER_H
|
||||
#define __WIN32K_NTUSER_H
|
||||
|
||||
#include <ddk/ntapi.h>
|
||||
|
||||
#define WM_SYSTIMER 280
|
||||
//#define WM_SYSTIMER 280
|
||||
|
||||
ULONG STDCALL
|
||||
NtUserGetSystemMetrics(ULONG Index);
|
||||
@@ -147,12 +145,12 @@ NtUserCallHwndParamLock(
|
||||
DWORD Unknown1,
|
||||
DWORD Unknown2);
|
||||
|
||||
DWORD
|
||||
BOOL
|
||||
STDCALL
|
||||
NtUserCallMsgFilter(
|
||||
DWORD Unknown0,
|
||||
DWORD Unknown1);
|
||||
|
||||
LPMSG msg,
|
||||
INT code);
|
||||
|
||||
LRESULT
|
||||
STDCALL
|
||||
NtUserCallNextHookEx(
|
||||
@@ -189,6 +187,8 @@ NtUserCallNoParam(
|
||||
#define ONEPARAM_ROUTINE_ENABLEPROCWNDGHSTING 0x0d
|
||||
#define ONEPARAM_ROUTINE_GETWINDOWINSTANCE 0x10
|
||||
#define ONEPARAM_ROUTINE_MSQSETWAKEMASK 0x27
|
||||
#define ONEPARAM_ROUTINE_GETKEYBOARDTYPE 0x28
|
||||
#define ONEPARAM_ROUTINE_GETKEYBOARDLAYOUT 0x29
|
||||
DWORD
|
||||
STDCALL
|
||||
NtUserCallOneParam(
|
||||
@@ -222,6 +222,7 @@ NtUserCallOneParam(
|
||||
#define TWOPARAM_ROUTINE_GETSYSCOLORPENS 0x64
|
||||
#define TWOPARAM_ROUTINE_GETSYSCOLORS 0x65
|
||||
#define TWOPARAM_ROUTINE_SETSYSCOLORS 0x66
|
||||
#define TWOPARAM_ROUTINE_ROS_SHOWWINDOW 0x1000
|
||||
DWORD
|
||||
STDCALL
|
||||
NtUserCallTwoParam(
|
||||
@@ -300,7 +301,7 @@ NtUserCreateCaret(
|
||||
int nWidth,
|
||||
int nHeight);
|
||||
|
||||
HANDLE
|
||||
HCURSOR
|
||||
STDCALL
|
||||
NtUserCreateCursorIconHandle(
|
||||
PICONINFO IconInfo,
|
||||
@@ -394,7 +395,7 @@ NtUserDestroyAcceleratorTable(
|
||||
BOOL
|
||||
STDCALL
|
||||
NtUserDestroyCursorIcon(
|
||||
HANDLE Handle,
|
||||
HCURSOR Handle,
|
||||
DWORD Unknown);
|
||||
|
||||
BOOLEAN STDCALL
|
||||
@@ -717,13 +718,13 @@ NtUserGetGUIThreadInfo(
|
||||
BOOL
|
||||
STDCALL
|
||||
NtUserGetCursorIconInfo(
|
||||
HANDLE Handle,
|
||||
HCURSOR Handle,
|
||||
PICONINFO IconInfo);
|
||||
|
||||
BOOL
|
||||
STDCALL
|
||||
NtUserGetCursorIconSize(
|
||||
HANDLE Handle,
|
||||
HCURSOR Handle,
|
||||
BOOL *fIcon,
|
||||
SIZE *Size);
|
||||
|
||||
@@ -742,6 +743,11 @@ NtUserGetInternalWindowPos(
|
||||
DWORD Unknown1,
|
||||
DWORD Unknown2);
|
||||
|
||||
HKL
|
||||
STDCALL
|
||||
NtUserGetKeyboardLayout(
|
||||
DWORD dwThreadid);
|
||||
|
||||
DWORD
|
||||
STDCALL
|
||||
NtUserGetKeyboardLayoutList(
|
||||
@@ -760,8 +766,13 @@ NtUserGetKeyboardState(
|
||||
|
||||
DWORD
|
||||
STDCALL
|
||||
NtUserGetKeyNameText( LONG lParam, LPWSTR lpString, int nSize );
|
||||
NtUserGetKeyboardType(
|
||||
DWORD TypeFlag);
|
||||
|
||||
DWORD
|
||||
STDCALL
|
||||
NtUserGetKeyNameText( LONG lParam, LPWSTR lpString, int nSize );
|
||||
|
||||
DWORD
|
||||
STDCALL
|
||||
NtUserGetKeyState(
|
||||
@@ -1328,7 +1339,7 @@ NtUserSetCursor(
|
||||
BOOL
|
||||
STDCALL
|
||||
NtUserSetCursorIconContents(
|
||||
HANDLE Handle,
|
||||
HCURSOR Handle,
|
||||
PICONINFO IconInfo);
|
||||
|
||||
BOOL
|
43
inc_w32k/paint.h
Normal file
43
inc_w32k/paint.h
Normal file
@@ -0,0 +1,43 @@
|
||||
#ifndef __WIN32K_PAINT_H
|
||||
#define __WIN32K_PAINT_H
|
||||
|
||||
typedef struct _PATRECT {
|
||||
RECT r;
|
||||
HBRUSH hBrush;
|
||||
} PATRECT, * PPATRECT;
|
||||
|
||||
BOOL STDCALL
|
||||
NtGdiPatBlt(
|
||||
HDC hDC,
|
||||
INT XLeft,
|
||||
INT YLeft,
|
||||
INT Width,
|
||||
INT Height,
|
||||
DWORD ROP);
|
||||
|
||||
BOOL STDCALL
|
||||
NtGdiPolyPatBlt(
|
||||
HDC hDC,
|
||||
DWORD dwRop,
|
||||
PPATRECT pRects,
|
||||
INT cRects,
|
||||
ULONG Reserved);
|
||||
|
||||
BOOL STDCALL
|
||||
NtGdiPatBlt(
|
||||
HDC hDC,
|
||||
INT XLeft,
|
||||
INT YLeft,
|
||||
INT Width,
|
||||
INT Height,
|
||||
DWORD ROP);
|
||||
|
||||
BOOL STDCALL NtGdiGdiFlush (VOID);
|
||||
DWORD STDCALL NtGdiGdiGetBatchLimit (VOID);
|
||||
DWORD STDCALL NtGdiGdiSetBatchLimit (DWORD Limit);
|
||||
UINT STDCALL NtGdiGetBoundsRect (HDC hDC, LPRECT Bounds, UINT Flags);
|
||||
COLORREF STDCALL NtGdiSetBkColor (HDC hDC, COLORREF Color);
|
||||
UINT STDCALL NtGdiSetBoundsRect (HDC hDC, CONST PRECT Bounds, UINT Flags);
|
||||
|
||||
#endif
|
||||
|
@@ -9,7 +9,7 @@
|
||||
#define PENOBJ_AllocPen() ((HPEN)GDIOBJ_AllocObj(GDI_OBJECT_TYPE_PEN))
|
||||
#define PENOBJ_FreePen(hBMObj) GDIOBJ_FreeObj((HGDIOBJ) hBMObj, GDI_OBJECT_TYPE_PEN)
|
||||
#define PENOBJ_LockPen(hBMObj) ((PGDIBRUSHOBJ)GDIOBJ_LockObj((HGDIOBJ) hBMObj, GDI_OBJECT_TYPE_PEN))
|
||||
#define PENOBJ_UnlockPen(hBMObj) GDIOBJ_UnlockObj((HGDIOBJ) hBMObj)
|
||||
#define PENOBJ_UnlockPen(pPenObj) GDIOBJ_UnlockObjByPtr(pPenObj)
|
||||
|
||||
HPEN STDCALL
|
||||
NtGdiCreatePen(
|
@@ -13,7 +13,7 @@ typedef struct _ROSRGNDATA {
|
||||
|
||||
#define RGNDATA_FreeRgn(hRgn) GDIOBJ_FreeObj((HGDIOBJ)hRgn, GDI_OBJECT_TYPE_REGION)
|
||||
#define RGNDATA_LockRgn(hRgn) ((PROSRGNDATA)GDIOBJ_LockObj((HGDIOBJ)hRgn, GDI_OBJECT_TYPE_REGION))
|
||||
#define RGNDATA_UnlockRgn(hRgn) GDIOBJ_UnlockObj((HGDIOBJ)hRgn)
|
||||
#define RGNDATA_UnlockRgn(pRgn) GDIOBJ_UnlockObjByPtr(pRgn)
|
||||
HRGN FASTCALL RGNDATA_AllocRgn(INT n);
|
||||
BOOL INTERNAL_CALL RGNDATA_Cleanup(PVOID ObjectBody);
|
||||
|
@@ -16,7 +16,7 @@ typedef struct
|
||||
((HFONT) GDIOBJ_AllocObj (GDI_OBJECT_TYPE_FONT))
|
||||
#define TEXTOBJ_FreeText(hBMObj) GDIOBJ_FreeObj((HGDIOBJ) hBMObj, GDI_OBJECT_TYPE_FONT)
|
||||
#define TEXTOBJ_LockText(hBMObj) ((PTEXTOBJ) GDIOBJ_LockObj ((HGDIOBJ) hBMObj, GDI_OBJECT_TYPE_FONT))
|
||||
#define TEXTOBJ_UnlockText(hBMObj) GDIOBJ_UnlockObj ((HGDIOBJ) hBMObj)
|
||||
#define TEXTOBJ_UnlockText(pBMObj) GDIOBJ_UnlockObjByPtr (pBMObj)
|
||||
|
||||
NTSTATUS FASTCALL TextIntRealizeFont(HFONT FontHandle);
|
||||
NTSTATUS FASTCALL TextIntCreateFontIndirect(CONST LPLOGFONTW lf, HFONT *NewFont);
|
34
kapi.h
Normal file
34
kapi.h
Normal file
@@ -0,0 +1,34 @@
|
||||
#ifndef _WIN32K_KAPI_H
|
||||
#define _WIN32K_KAPI_H
|
||||
|
||||
#ifndef INTERNAL_CALL
|
||||
#define INTERNAL_CALL STDCALL
|
||||
#endif
|
||||
|
||||
#include <win32k/brush.h>
|
||||
#include <win32k/callback.h>
|
||||
#include <win32k/caret.h>
|
||||
#include <win32k/cliprgn.h>
|
||||
#include <win32k/color.h>
|
||||
#include <win32k/cursoricon.h>
|
||||
#include <win32k/path.h>
|
||||
#include <win32k/driver.h>
|
||||
#include <win32k/dc.h>
|
||||
#include <win32k/coord.h>
|
||||
#include <win32k/bitmaps.h>
|
||||
//#include <win32k/debug.h>
|
||||
#include <win32k/fillshap.h>
|
||||
#include <win32k/font.h>
|
||||
#include <win32k/icm.h>
|
||||
#include <win32k/line.h>
|
||||
#include <win32k/metafile.h>
|
||||
#include <win32k/menu.h>
|
||||
#include <win32k/misc.h>
|
||||
#include <win32k/ntuser.h>
|
||||
#include <win32k/paint.h>
|
||||
#include <win32k/pen.h>
|
||||
#include <win32k/print.h>
|
||||
#include <win32k/region.h>
|
||||
#include <win32k/text.h>
|
||||
#include <win32k/wingl.h>
|
||||
#endif /* ndef _WIN32K_KAPI_H */
|
101
line.h
Normal file
101
line.h
Normal file
@@ -0,0 +1,101 @@
|
||||
#ifndef __WIN32K_LINE_H
|
||||
#define __WIN32K_LINE_H
|
||||
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiAngleArc(HDC hDC,
|
||||
int X,
|
||||
int Y,
|
||||
DWORD Radius,
|
||||
FLOAT StartAngle,
|
||||
FLOAT SweepAngle);
|
||||
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiArc(HDC hDC,
|
||||
int LeftRect,
|
||||
int TopRect,
|
||||
int RightRect,
|
||||
int BottomRect,
|
||||
int XStartArc,
|
||||
int YStartArc,
|
||||
int XEndArc,
|
||||
int YEndArc);
|
||||
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiArcTo(HDC hDC,
|
||||
int LeftRect,
|
||||
int TopRect,
|
||||
int RightRect,
|
||||
int BottomRect,
|
||||
int XRadial1,
|
||||
int YRadial1,
|
||||
int XRadial2,
|
||||
int YRadial2);
|
||||
|
||||
INT
|
||||
FASTCALL
|
||||
IntGetArcDirection ( PDC dc );
|
||||
|
||||
INT
|
||||
STDCALL
|
||||
NtGdiGetArcDirection ( HDC hDC );
|
||||
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiLineTo(HDC hDC,
|
||||
int XEnd,
|
||||
int YEnd );
|
||||
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiMoveToEx(HDC hDC,
|
||||
int X,
|
||||
int Y,
|
||||
LPPOINT Point);
|
||||
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiPolyBezier(HDC hDC,
|
||||
CONST LPPOINT pt,
|
||||
DWORD Count);
|
||||
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiPolyBezierTo(HDC hDC,
|
||||
CONST LPPOINT pt,
|
||||
DWORD Count);
|
||||
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiPolyDraw(HDC hDC,
|
||||
CONST LPPOINT pt,
|
||||
CONST LPBYTE Types,
|
||||
int Count);
|
||||
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiPolyline(HDC hDC,
|
||||
CONST LPPOINT pt,
|
||||
int Count);
|
||||
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiPolylineTo(HDC hDC,
|
||||
CONST LPPOINT pt,
|
||||
DWORD Count);
|
||||
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiPolyPolyline(HDC hDC,
|
||||
CONST LPPOINT pt,
|
||||
CONST LPDWORD PolyPoints,
|
||||
DWORD Count);
|
||||
|
||||
int
|
||||
STDCALL
|
||||
NtGdiSetArcDirection(HDC hDC,
|
||||
int ArcDirection);
|
||||
|
||||
#endif
|
168
math.h
Normal file
168
math.h
Normal file
@@ -0,0 +1,168 @@
|
||||
/*
|
||||
* math.h
|
||||
*
|
||||
* Mathematical functions.
|
||||
*
|
||||
* This file is part of the Mingw32 package.
|
||||
*
|
||||
* Contributors:
|
||||
* Created by Colin Peters <colin@bird.fu.is.saga-u.ac.jp>
|
||||
*
|
||||
* THIS SOFTWARE IS NOT COPYRIGHTED
|
||||
*
|
||||
* This source code is offered for use in the public domain. You may
|
||||
* use, modify or distribute it freely.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful but
|
||||
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
|
||||
* DISCLAMED. This includes but is not limited to warranties of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
* $Revision: 1.4 $
|
||||
* $Author$
|
||||
* $Date$
|
||||
*
|
||||
*/
|
||||
/* added modfl */
|
||||
|
||||
#ifndef _MATH_H_
|
||||
#define _MATH_H_
|
||||
|
||||
#include_next <math.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
* HUGE_VAL is returned by strtod when the value would overflow the
|
||||
* representation of 'double'. There are other uses as well.
|
||||
*
|
||||
* __imp__HUGE is a pointer to the actual variable _HUGE in
|
||||
* MSVCRT.DLL. If we used _HUGE directly we would get a pointer
|
||||
* to a thunk function.
|
||||
*
|
||||
* NOTE: The CRTDLL version uses _HUGE_dll instead.
|
||||
*/
|
||||
#ifdef __MSVCRT__
|
||||
extern double* __imp__HUGE;
|
||||
#define HUGE_VAL (*__imp__HUGE)
|
||||
#else
|
||||
/* CRTDLL */
|
||||
extern double* _HUGE_dll;
|
||||
#define HUGE_VAL (*_HUGE_dll)
|
||||
#endif
|
||||
|
||||
#define M_PI 22 / 7
|
||||
#define M_PI_2 M_PI * 2
|
||||
|
||||
struct _exception
|
||||
{
|
||||
int type;
|
||||
char *name;
|
||||
double arg1;
|
||||
double arg2;
|
||||
double retval;
|
||||
};
|
||||
|
||||
/*
|
||||
* Types for the above _exception structure.
|
||||
*/
|
||||
|
||||
#define _DOMAIN 1 /* domain error in argument */
|
||||
#define _SING 2 /* singularity */
|
||||
#define _OVERFLOW 3 /* range overflow */
|
||||
#define _UNDERFLOW 4 /* range underflow */
|
||||
#define _TLOSS 5 /* total loss of precision */
|
||||
#define _PLOSS 6 /* partial loss of precision */
|
||||
|
||||
/*
|
||||
* Exception types with non-ANSI names for compatibility.
|
||||
*/
|
||||
|
||||
#ifndef __STRICT_ANSI__
|
||||
#ifndef _NO_OLDNAMES
|
||||
|
||||
#define DOMAIN _DOMAIN
|
||||
#define SING _SING
|
||||
#define OVERFLOW _OVERFLOW
|
||||
#define UNDERFLOW _UNDERFLOW
|
||||
#define TLOSS _TLOSS
|
||||
#define PLOSS _PLOSS
|
||||
|
||||
#endif /* Not _NO_OLDNAMES */
|
||||
#endif /* Not __STRICT_ANSI__ */
|
||||
|
||||
|
||||
double sin (double x);
|
||||
double cos (double x);
|
||||
double tan (double x);
|
||||
double sinh (double x);
|
||||
double cosh (double x);
|
||||
double tanh (double x);
|
||||
double asin (double x);
|
||||
double acos (double x);
|
||||
double atan (double x);
|
||||
double atan2 (double y, double x);
|
||||
double exp (double x);
|
||||
double log (double x);
|
||||
double log10 (double x);
|
||||
double pow (double x, double y);
|
||||
long double powl (long double x,long double y);
|
||||
double sqrt (double x);
|
||||
double ceil (double x);
|
||||
double floor (double x);
|
||||
double fabs (double x);
|
||||
double ldexp (double x, int n);
|
||||
double frexp (double x, int* exp);
|
||||
double modf (double x, double* ip);
|
||||
long double modfl (long double x,long double* ip);
|
||||
double fmod (double x, double y);
|
||||
|
||||
|
||||
#ifndef __STRICT_ANSI__
|
||||
|
||||
/* Complex number (for cabs) */
|
||||
struct _complex
|
||||
{
|
||||
double x; /* Real part */
|
||||
double y; /* Imaginary part */
|
||||
};
|
||||
|
||||
double _cabs (struct _complex x);
|
||||
double _hypot (double x, double y);
|
||||
double _j0 (double x);
|
||||
double _j1 (double x);
|
||||
double _jn (int n, double x);
|
||||
double _y0 (double x);
|
||||
double _y1 (double x);
|
||||
double _yn (int n, double x);
|
||||
|
||||
#ifndef _NO_OLDNAMES
|
||||
|
||||
/*
|
||||
* Non-underscored versions of non-ANSI functions. These reside in
|
||||
* liboldnames.a. Provided for extra portability.
|
||||
*/
|
||||
#if 0
|
||||
/* GCC 3.4 warns that this is not equal to it's internal definition for cabs */
|
||||
double cabs (struct _complex x);
|
||||
#endif
|
||||
double hypot (double x, double y);
|
||||
double j0 (double x);
|
||||
double j1 (double x);
|
||||
double jn (int n, double x);
|
||||
double y0 (double x);
|
||||
double y1 (double x);
|
||||
double yn (int n, double x);
|
||||
|
||||
#endif /* Not _NO_OLDNAMES */
|
||||
|
||||
#endif /* Not __STRICT_ANSI__ */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* Not _MATH_H_ */
|
||||
|
250
menu.h
Normal file
250
menu.h
Normal file
@@ -0,0 +1,250 @@
|
||||
/* $Id$ */
|
||||
|
||||
#ifndef WIN32K_MENU_H_INCLUDED
|
||||
#define WIN32K_MENU_H_INCLUDED
|
||||
|
||||
typedef struct tagROSMENUINFO {
|
||||
/* ----------- MENUINFO ----------- */
|
||||
DWORD cbSize;
|
||||
DWORD fMask;
|
||||
DWORD dwStyle;
|
||||
UINT cyMax;
|
||||
HBRUSH hbrBack;
|
||||
DWORD dwContextHelpID;
|
||||
ULONG_PTR dwMenuData;
|
||||
/* ----------- Extra ----------- */
|
||||
HMENU Self; /* Handle of this menu */
|
||||
WORD Flags; /* Menu flags (MF_POPUP, MF_SYSMENU) */
|
||||
UINT FocusedItem; /* Currently focused item */
|
||||
UINT MenuItemCount; /* Number of items in the menu */
|
||||
HWND Wnd; /* Window containing the menu */
|
||||
WORD Width; /* Width of the whole menu */
|
||||
WORD Height; /* Height of the whole menu */
|
||||
HWND WndOwner; /* window receiving the messages for ownerdraw */
|
||||
BOOL TimeToHide; /* Request hiding when receiving a second click in the top-level menu item */
|
||||
SIZE maxBmpSize; /* Maximum size of the bitmap items in MIIM_BITMAP state */
|
||||
} ROSMENUINFO, *PROSMENUINFO;
|
||||
|
||||
/* (other FocusedItem values give the position of the focused item) */
|
||||
#define NO_SELECTED_ITEM 0xffff
|
||||
|
||||
typedef struct tagROSMENUITEMINFO
|
||||
{
|
||||
/* ----------- MENUITEMINFOW ----------- */
|
||||
UINT cbSize;
|
||||
UINT fMask;
|
||||
UINT fType;
|
||||
UINT fState;
|
||||
UINT wID;
|
||||
HMENU hSubMenu;
|
||||
HBITMAP hbmpChecked;
|
||||
HBITMAP hbmpUnchecked;
|
||||
DWORD dwItemData;
|
||||
LPWSTR dwTypeData;
|
||||
UINT cch;
|
||||
HBITMAP hbmpItem;
|
||||
/* ----------- Extra ----------- */
|
||||
RECT Rect; /* Item area (relative to menu window) */
|
||||
UINT XTab; /* X position of text after Tab */
|
||||
} ROSMENUITEMINFO, *PROSMENUITEMINFO;
|
||||
|
||||
typedef struct _SETMENUITEMRECT
|
||||
{
|
||||
UINT uItem;
|
||||
BOOL fByPosition;
|
||||
RECT rcRect;
|
||||
} SETMENUITEMRECT, *PSETMENUITEMRECT;
|
||||
|
||||
DWORD
|
||||
STDCALL
|
||||
NtUserBuildMenuItemList(
|
||||
HMENU hMenu,
|
||||
PVOID Buffer,
|
||||
ULONG nBufSize,
|
||||
DWORD Reserved);
|
||||
|
||||
DWORD
|
||||
STDCALL
|
||||
NtUserCheckMenuItem(
|
||||
HMENU hmenu,
|
||||
UINT uIDCheckItem,
|
||||
UINT uCheck);
|
||||
|
||||
HMENU
|
||||
STDCALL
|
||||
NtUserCreateMenu(BOOL PopupMenu);
|
||||
|
||||
BOOL
|
||||
STDCALL
|
||||
NtUserDeleteMenu(
|
||||
HMENU hMenu,
|
||||
UINT uPosition,
|
||||
UINT uFlags);
|
||||
|
||||
BOOL
|
||||
STDCALL
|
||||
NtUserDestroyMenu(
|
||||
HMENU hMenu);
|
||||
|
||||
DWORD
|
||||
STDCALL
|
||||
NtUserDrawMenuBarTemp(
|
||||
HWND hWnd,
|
||||
HDC hDC,
|
||||
PRECT hRect,
|
||||
HMENU hMenu,
|
||||
HFONT hFont);
|
||||
|
||||
UINT
|
||||
STDCALL
|
||||
NtUserEnableMenuItem(
|
||||
HMENU hMenu,
|
||||
UINT uIDEnableItem,
|
||||
UINT uEnable);
|
||||
|
||||
DWORD
|
||||
STDCALL
|
||||
NtUserInsertMenuItem(
|
||||
HMENU hMenu,
|
||||
UINT uItem,
|
||||
BOOL fByPosition,
|
||||
LPCMENUITEMINFOW lpmii);
|
||||
|
||||
BOOL
|
||||
STDCALL
|
||||
NtUserEndMenu(VOID);
|
||||
|
||||
UINT STDCALL
|
||||
NtUserGetMenuDefaultItem(
|
||||
HMENU hMenu,
|
||||
UINT fByPos,
|
||||
UINT gmdiFlags);
|
||||
|
||||
BOOL
|
||||
STDCALL
|
||||
NtUserGetMenuBarInfo(
|
||||
HWND hwnd,
|
||||
LONG idObject,
|
||||
LONG idItem,
|
||||
PMENUBARINFO pmbi);
|
||||
|
||||
UINT
|
||||
STDCALL
|
||||
NtUserGetMenuIndex(
|
||||
HMENU hMenu,
|
||||
UINT wID);
|
||||
|
||||
BOOL
|
||||
STDCALL
|
||||
NtUserGetMenuItemRect(
|
||||
HWND hWnd,
|
||||
HMENU hMenu,
|
||||
UINT uItem,
|
||||
LPRECT lprcItem);
|
||||
|
||||
HMENU
|
||||
STDCALL
|
||||
NtUserGetSystemMenu(
|
||||
HWND hWnd,
|
||||
BOOL bRevert);
|
||||
|
||||
BOOL
|
||||
STDCALL
|
||||
NtUserHiliteMenuItem(
|
||||
HWND hwnd,
|
||||
HMENU hmenu,
|
||||
UINT uItemHilite,
|
||||
UINT uHilite);
|
||||
|
||||
BOOL
|
||||
STDCALL
|
||||
NtUserMenuInfo(
|
||||
HMENU hmenu,
|
||||
PROSMENUINFO lpmi,
|
||||
BOOL fsog
|
||||
);
|
||||
|
||||
int
|
||||
STDCALL
|
||||
NtUserMenuItemFromPoint(
|
||||
HWND hWnd,
|
||||
HMENU hMenu,
|
||||
DWORD X,
|
||||
DWORD Y);
|
||||
|
||||
BOOL
|
||||
STDCALL
|
||||
NtUserMenuItemInfo(
|
||||
HMENU hMenu,
|
||||
UINT uItem,
|
||||
BOOL fByPosition,
|
||||
PROSMENUITEMINFO lpmii,
|
||||
BOOL fsog
|
||||
);
|
||||
|
||||
BOOL
|
||||
STDCALL
|
||||
NtUserRemoveMenu(
|
||||
HMENU hMenu,
|
||||
UINT uPosition,
|
||||
UINT uFlags);
|
||||
|
||||
BOOL
|
||||
STDCALL
|
||||
NtUserSetMenu(
|
||||
HWND hWnd,
|
||||
HMENU hMenu,
|
||||
BOOL bRepaint);
|
||||
|
||||
BOOL
|
||||
STDCALL
|
||||
NtUserSetMenuContextHelpId(
|
||||
HMENU hmenu,
|
||||
DWORD dwContextHelpId);
|
||||
|
||||
BOOL
|
||||
STDCALL
|
||||
NtUserSetMenuDefaultItem(
|
||||
HMENU hMenu,
|
||||
UINT uItem,
|
||||
UINT fByPos);
|
||||
|
||||
BOOL
|
||||
STDCALL
|
||||
NtUserSetMenuFlagRtoL(
|
||||
HMENU hMenu);
|
||||
|
||||
BOOL
|
||||
STDCALL
|
||||
NtUserSetSystemMenu(
|
||||
HWND hWnd,
|
||||
HMENU hMenu);
|
||||
|
||||
DWORD
|
||||
STDCALL
|
||||
NtUserThunkedMenuInfo(
|
||||
HMENU hMenu,
|
||||
LPCMENUINFO lpcmi);
|
||||
|
||||
DWORD
|
||||
STDCALL
|
||||
NtUserThunkedMenuItemInfo(
|
||||
HMENU hMenu,
|
||||
UINT uItem,
|
||||
BOOL fByPosition,
|
||||
BOOL bInsert,
|
||||
LPMENUITEMINFOW lpmii,
|
||||
PUNICODE_STRING lpszCaption);
|
||||
|
||||
BOOL
|
||||
STDCALL
|
||||
NtUserTrackPopupMenuEx(
|
||||
HMENU hmenu,
|
||||
UINT fuFlags,
|
||||
int x,
|
||||
int y,
|
||||
HWND hwnd,
|
||||
LPTPMPARAMS lptpm);
|
||||
|
||||
#endif /* WIN32K_MENU_H_INCLUDED */
|
||||
|
180
metafile.h
Normal file
180
metafile.h
Normal file
@@ -0,0 +1,180 @@
|
||||
#ifndef __WIN32K_METAFILE_H
|
||||
#define __WIN32K_METAFILE_H
|
||||
|
||||
HENHMETAFILE
|
||||
STDCALL
|
||||
NtGdiCloseEnhMetaFile (
|
||||
HDC hDC
|
||||
);
|
||||
HMETAFILE
|
||||
STDCALL
|
||||
NtGdiCloseMetaFile (
|
||||
HDC hDC
|
||||
);
|
||||
HENHMETAFILE
|
||||
STDCALL
|
||||
NtGdiCopyEnhMetaFile (
|
||||
HENHMETAFILE Src,
|
||||
LPCWSTR File
|
||||
);
|
||||
HMETAFILE
|
||||
STDCALL
|
||||
NtGdiCopyMetaFile (
|
||||
HMETAFILE Src,
|
||||
LPCWSTR File
|
||||
);
|
||||
HDC
|
||||
STDCALL
|
||||
NtGdiCreateEnhMetaFile (
|
||||
HDC hDCRef,
|
||||
LPCWSTR File,
|
||||
CONST LPRECT Rect,
|
||||
LPCWSTR Description
|
||||
);
|
||||
HDC
|
||||
STDCALL
|
||||
NtGdiCreateMetaFile (
|
||||
LPCWSTR File
|
||||
);
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiDeleteEnhMetaFile (
|
||||
HENHMETAFILE emf
|
||||
);
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiDeleteMetaFile (
|
||||
HMETAFILE mf
|
||||
);
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiEnumEnhMetaFile (
|
||||
HDC hDC,
|
||||
HENHMETAFILE emf,
|
||||
ENHMFENUMPROC EnhMetaFunc,
|
||||
LPVOID Data,
|
||||
CONST LPRECT Rect
|
||||
);
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiEnumMetaFile (
|
||||
HDC hDC,
|
||||
HMETAFILE mf,
|
||||
MFENUMPROC MetaFunc,
|
||||
LPARAM lParam
|
||||
);
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiGdiComment (
|
||||
HDC hDC,
|
||||
UINT Size,
|
||||
CONST LPBYTE Data
|
||||
);
|
||||
HENHMETAFILE
|
||||
STDCALL
|
||||
NtGdiGetEnhMetaFile (
|
||||
LPCWSTR MetaFile
|
||||
);
|
||||
UINT
|
||||
STDCALL
|
||||
NtGdiGetEnhMetaFileBits (
|
||||
HENHMETAFILE hemf,
|
||||
UINT BufSize,
|
||||
LPBYTE Buffer
|
||||
);
|
||||
UINT
|
||||
STDCALL
|
||||
NtGdiGetEnhMetaFileDescription (
|
||||
HENHMETAFILE hemf,
|
||||
UINT BufSize,
|
||||
LPWSTR Description
|
||||
);
|
||||
UINT
|
||||
STDCALL
|
||||
NtGdiGetEnhMetaFileHeader (
|
||||
HENHMETAFILE hemf,
|
||||
UINT BufSize,
|
||||
LPENHMETAHEADER emh
|
||||
);
|
||||
UINT
|
||||
STDCALL
|
||||
NtGdiGetEnhMetaFilePaletteEntries (
|
||||
HENHMETAFILE hemf,
|
||||
UINT Entries,
|
||||
LPPALETTEENTRY pe
|
||||
);
|
||||
HMETAFILE
|
||||
STDCALL
|
||||
NtGdiGetMetaFile (
|
||||
LPCWSTR MetaFile
|
||||
);
|
||||
UINT
|
||||
STDCALL
|
||||
NtGdiGetMetaFileBitsEx (
|
||||
HMETAFILE hmf,
|
||||
UINT Size,
|
||||
LPVOID Data
|
||||
);
|
||||
UINT
|
||||
STDCALL
|
||||
NtGdiGetWinMetaFileBits (
|
||||
HENHMETAFILE hemf,
|
||||
UINT BufSize,
|
||||
LPBYTE Buffer,
|
||||
INT MapMode,
|
||||
HDC Ref
|
||||
);
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiPlayEnhMetaFile (
|
||||
HDC hDC,
|
||||
HENHMETAFILE hemf,
|
||||
CONST PRECT Rect
|
||||
);
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiPlayEnhMetaFileRecord (
|
||||
HDC hDC,
|
||||
LPHANDLETABLE Handletable,
|
||||
CONST ENHMETARECORD * EnhMetaRecord,
|
||||
UINT Handles
|
||||
);
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiPlayMetaFile (
|
||||
HDC hDC,
|
||||
HMETAFILE hmf
|
||||
);
|
||||
BOOL
|
||||
STDCALL
|
||||
NtGdiPlayMetaFileRecord (
|
||||
HDC hDC,
|
||||
LPHANDLETABLE Handletable,
|
||||
LPMETARECORD MetaRecord,
|
||||
UINT Handles
|
||||
);
|
||||
HENHMETAFILE
|
||||
STDCALL
|
||||
NtGdiSetEnhMetaFileBits (
|
||||
UINT BufSize,
|
||||
CONST PBYTE Data
|
||||
);
|
||||
HMETAFILE
|
||||
STDCALL
|
||||
NtGdiSetMetaFileBitsEx (
|
||||
UINT Size,
|
||||
CONST PBYTE Data
|
||||
);
|
||||
#if 0
|
||||
HENHMETAFILE
|
||||
STDCALL
|
||||
NtGdiSetWinMetaFileBits (
|
||||
UINT BufSize,
|
||||
CONST PBYTE Buffer,
|
||||
HDC Ref,
|
||||
CONST METAFILEPICT * mfp
|
||||
);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
13
misc.h
Normal file
13
misc.h
Normal file
@@ -0,0 +1,13 @@
|
||||
#ifndef __WIN32K_MISC_H
|
||||
#define __WIN32K_MISC_H
|
||||
|
||||
/* W32PROCESS flags */
|
||||
#define W32PF_NOWINDOWGHOSTING (0x0001)
|
||||
#define W32PF_MANUALGUICHECK (0x0002)
|
||||
#define W32PF_CREATEDWINORDC (0x0004)
|
||||
|
||||
VOID
|
||||
FASTCALL
|
||||
DestroyThreadWindows(struct _ETHREAD *Thread);
|
||||
|
||||
#endif /* __WIN32K_MISC_H */
|
@@ -1,60 +1,23 @@
|
||||
/*
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
* PURPOSE: Native DirectDraw stubs
|
||||
* FILE: subsys/win32k/ntddraw/stubs.c
|
||||
* PROGRAMER: Peter Bajusz (hyp-x@stormregion.com)
|
||||
* REVISION HISTORY:
|
||||
* 25-10-2003 PB Created
|
||||
*/
|
||||
#include <ddk/ntddk.h>
|
||||
#include <win32k/ntddraw.h>
|
||||
#include <win32k/win32k.h>
|
||||
|
||||
#define NDEBUG
|
||||
#include <debug.h>
|
||||
#ifndef __WIN32K_NTDDRAW_H
|
||||
#define __WIN32K_NTDDRAW_H
|
||||
|
||||
|
||||
DWORD STDCALL NtGdiDdGetAvailDriverMemory(
|
||||
HANDLE hDirectDrawLocal,
|
||||
PDD_GETAVAILDRIVERMEMORYDATA puGetAvailDriverMemoryData
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
BOOL STDCALL NtGdiD3dContextCreate(
|
||||
HANDLE hDirectDrawLocal,
|
||||
HANDLE hSurfColor,
|
||||
HANDLE hSurfZ,
|
||||
PD3DNTHAL_CONTEXTCREATEDATA pdcci
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
);
|
||||
|
||||
DWORD STDCALL NtGdiD3dContextDestroy(
|
||||
PD3DNTHAL_CONTEXTDESTROYDATA pContextDestroyData
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
DWORD STDCALL NtGdiD3dContextDestroyAll(VOID)
|
||||
{
|
||||
/* This entry point is not supported on NT5 and ROS */
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
DWORD STDCALL NtGdiD3dContextDestroyAll(VOID);
|
||||
|
||||
DWORD STDCALL NtGdiD3dDrawPrimitives2(
|
||||
HANDLE hCmdBuf,
|
||||
@@ -64,100 +27,50 @@ DWORD STDCALL NtGdiD3dDrawPrimitives2(
|
||||
DWORD *pdwSizeCmd,
|
||||
FLATPTR *pfpVidMemVtx,
|
||||
DWORD *pdwSizeVtx
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
);
|
||||
|
||||
DWORD STDCALL NtGdiD3dValidateTextureStageState(
|
||||
PD3DNTHAL_VALIDATETEXTURESTAGESTATEDATA pData
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
);
|
||||
|
||||
DWORD STDCALL NtGdiDdAddAttachedSurface(
|
||||
HANDLE hSurface,
|
||||
HANDLE hSurfaceAttached,
|
||||
PDD_ADDATTACHEDSURFACEDATA puAddAttachedSurfaceData
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
DWORD STDCALL NtGdiDdAlphaBlt(VOID)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
DWORD STDCALL NtGdiDdAlphaBlt(VOID);
|
||||
|
||||
BOOL STDCALL NtGdiDdAttachSurface(
|
||||
HANDLE hSurfaceFrom,
|
||||
HANDLE hSurfaceTo
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
);
|
||||
|
||||
DWORD STDCALL NtGdiDdBeginMoCompFrame(
|
||||
HANDLE hMoComp,
|
||||
PDD_BEGINMOCOMPFRAMEDATA puBeginFrameData
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
);
|
||||
|
||||
DWORD STDCALL NtGdiDdBlt(
|
||||
HANDLE hSurfaceDest,
|
||||
HANDLE hSurfaceSrc,
|
||||
PDD_BLTDATA puBltData
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
);
|
||||
|
||||
DWORD STDCALL NtGdiDdCanCreateD3DBuffer(
|
||||
HANDLE hDirectDraw,
|
||||
PDD_CANCREATESURFACEDATA puCanCreateSurfaceData
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
);
|
||||
|
||||
DWORD STDCALL NtGdiDdCanCreateSurface(
|
||||
HANDLE hDirectDraw,
|
||||
PDD_CANCREATESURFACEDATA puCanCreateSurfaceData
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
);
|
||||
|
||||
DWORD STDCALL NtGdiDdColorControl(
|
||||
HANDLE hSurface,
|
||||
PDD_COLORCONTROLDATA puColorControlData
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
);
|
||||
|
||||
DWORD STDCALL NtGdiDdCreateD3DBuffer(
|
||||
HANDLE hDirectDraw,
|
||||
@@ -168,33 +81,16 @@ DWORD STDCALL NtGdiDdCreateD3DBuffer(
|
||||
DD_SURFACE_MORE *puSurfaceMoreData,
|
||||
PDD_CREATESURFACEDATA puCreateSurfaceData,
|
||||
HANDLE *puhSurface
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
HANDLE STDCALL NtGdiDdCreateDirectDrawObject(
|
||||
HDC hdc
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
*/
|
||||
);
|
||||
|
||||
HANDLE STDCALL NtGdiDdCreateMoComp(
|
||||
HANDLE hDirectDraw,
|
||||
PDD_CREATEMOCOMPDATA puCreateMoCompData
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
);
|
||||
|
||||
DWORD STDCALL NtGdiDdCreateSurface(
|
||||
HANDLE hDirectDraw,
|
||||
@@ -205,25 +101,14 @@ DWORD STDCALL NtGdiDdCreateSurface(
|
||||
DD_SURFACE_MORE *puSurfaceMoreData,
|
||||
PDD_CREATESURFACEDATA puCreateSurfaceData,
|
||||
HANDLE *puhSurface
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
);
|
||||
|
||||
DWORD STDCALL NtGdiDdCreateSurfaceEx(
|
||||
HANDLE hDirectDraw,
|
||||
HANDLE hSurface,
|
||||
DWORD dwSurfaceHandle
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
HANDLE STDCALL NtGdiDdCreateSurfaceObject(
|
||||
HANDLE hDirectDrawLocal,
|
||||
HANDLE hSurface,
|
||||
@@ -231,70 +116,34 @@ HANDLE STDCALL NtGdiDdCreateSurfaceObject(
|
||||
PDD_SURFACE_MORE puSurfaceMore,
|
||||
PDD_SURFACE_GLOBAL puSurfaceGlobal,
|
||||
BOOL bComplete
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
);
|
||||
|
||||
BOOL STDCALL NtGdiDdDeleteDirectDrawObject(
|
||||
HANDLE hDirectDrawLocal
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
);
|
||||
|
||||
BOOL STDCALL NtGdiDdDeleteSurfaceObject(
|
||||
HANDLE hSurface
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
*/
|
||||
);
|
||||
|
||||
DWORD STDCALL NtGdiDdDestroyD3DBuffer(
|
||||
HANDLE hSurface
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
);
|
||||
|
||||
DWORD STDCALL NtGdiDdDestroyMoComp(
|
||||
HANDLE hMoComp,
|
||||
PDD_DESTROYMOCOMPDATA puBeginFrameData
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
);
|
||||
|
||||
DWORD STDCALL NtGdiDdDestroySurface(
|
||||
HANDLE hSurface,
|
||||
BOOL bRealDestroy
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
);
|
||||
|
||||
DWORD STDCALL NtGdiDdEndMoCompFrame(
|
||||
HANDLE hMoComp,
|
||||
PDD_ENDMOCOMPFRAMEDATA puEndFrameData
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
);
|
||||
|
||||
DWORD STDCALL NtGdiDdFlip(
|
||||
HANDLE hSurfaceCurrent,
|
||||
@@ -302,148 +151,84 @@ DWORD STDCALL NtGdiDdFlip(
|
||||
HANDLE hSurfaceCurrentLeft,
|
||||
HANDLE hSurfaceTargetLeft,
|
||||
PDD_FLIPDATA puFlipData
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
);
|
||||
|
||||
DWORD STDCALL NtGdiDdFlipToGDISurface(
|
||||
HANDLE hDirectDraw,
|
||||
PDD_FLIPTOGDISURFACEDATA puFlipToGDISurfaceData
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
);
|
||||
|
||||
DWORD STDCALL NtGdiDdGetAvailDriverMemory(
|
||||
HANDLE hDirectDraw,
|
||||
PDD_GETAVAILDRIVERMEMORYDATA puGetAvailDriverMemoryData
|
||||
);
|
||||
|
||||
DWORD STDCALL NtGdiDdGetBltStatus(
|
||||
HANDLE hSurface,
|
||||
PDD_GETBLTSTATUSDATA puGetBltStatusData
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
);
|
||||
|
||||
HDC STDCALL NtGdiDdGetDC(
|
||||
HANDLE hSurface,
|
||||
PALETTEENTRY *puColorTable
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
);
|
||||
|
||||
DWORD STDCALL NtGdiDdGetDriverInfo(
|
||||
HANDLE hDirectDraw,
|
||||
PDD_GETDRIVERINFODATA puGetDriverInfoData
|
||||
);
|
||||
|
||||
DWORD STDCALL NtGdiDdGetDriverState(
|
||||
PDD_GETDRIVERSTATEDATA pdata
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
);
|
||||
|
||||
DWORD STDCALL NtGdiDdGetDxHandle(
|
||||
HANDLE hDirectDraw,
|
||||
HANDLE hSurface,
|
||||
BOOL bRelease
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
);
|
||||
|
||||
DWORD STDCALL NtGdiDdGetFlipStatus(
|
||||
HANDLE hSurface,
|
||||
PDD_GETFLIPSTATUSDATA puGetFlipStatusData
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
);
|
||||
|
||||
DWORD STDCALL NtGdiDdGetInternalMoCompInfo(
|
||||
HANDLE hDirectDraw,
|
||||
PDD_GETINTERNALMOCOMPDATA puGetInternalData
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
);
|
||||
|
||||
DWORD STDCALL NtGdiDdGetMoCompBuffInfo(
|
||||
HANDLE hDirectDraw,
|
||||
PDD_GETMOCOMPCOMPBUFFDATA puGetBuffData
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
);
|
||||
|
||||
DWORD STDCALL NtGdiDdGetMoCompFormats(
|
||||
HANDLE hDirectDraw,
|
||||
PDD_GETMOCOMPFORMATSDATA puGetMoCompFormatsData
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
);
|
||||
|
||||
DWORD STDCALL NtGdiDdGetMoCompGuids(
|
||||
HANDLE hDirectDraw,
|
||||
PDD_GETMOCOMPGUIDSDATA puGetMoCompGuidsData
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
);
|
||||
|
||||
DWORD STDCALL NtGdiDdGetScanLine(
|
||||
HANDLE hDirectDraw,
|
||||
PDD_GETSCANLINEDATA puGetScanLineData
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
);
|
||||
|
||||
DWORD STDCALL NtGdiDdLock(
|
||||
HANDLE hSurface,
|
||||
PDD_LOCKDATA puLockData,
|
||||
HDC hdcClip
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
);
|
||||
|
||||
DWORD STDCALL NtGdiDdLockD3D(
|
||||
HANDLE hSurface,
|
||||
PDD_LOCKDATA puLockData
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
BOOL STDCALL NtGdiDdQueryDirectDrawObject(
|
||||
HANDLE hDirectDrawLocal,
|
||||
DD_HALINFO *pHalInfo,
|
||||
@@ -456,143 +241,82 @@ BOOL STDCALL NtGdiDdQueryDirectDrawObject(
|
||||
VIDEOMEMORY *puvmList,
|
||||
DWORD *puNumFourCC,
|
||||
DWORD *puFourCC
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
*/
|
||||
);
|
||||
|
||||
DWORD STDCALL NtGdiDdQueryMoCompStatus(
|
||||
HANDLE hMoComp,
|
||||
PDD_QUERYMOCOMPSTATUSDATA puQueryMoCompStatusData
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
);
|
||||
|
||||
BOOL STDCALL NtGdiDdReenableDirectDrawObject(
|
||||
HANDLE hDirectDrawLocal,
|
||||
BOOL *pubNewMode
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
);
|
||||
|
||||
BOOL STDCALL NtGdiDdReleaseDC(
|
||||
HANDLE hSurface
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
);
|
||||
|
||||
DWORD STDCALL NtGdiDdRenderMoComp(
|
||||
HANDLE hMoComp,
|
||||
PDD_RENDERMOCOMPDATA puRenderMoCompData
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
);
|
||||
|
||||
BOOL STDCALL NtGdiDdResetVisrgn(
|
||||
HANDLE hSurface,
|
||||
HWND hwnd
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
);
|
||||
|
||||
DWORD STDCALL NtGdiDdSetColorKey(
|
||||
HANDLE hSurface,
|
||||
PDD_SETCOLORKEYDATA puSetColorKeyData
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
);
|
||||
|
||||
DWORD STDCALL NtGdiDdSetExclusiveMode(
|
||||
HANDLE hDirectDraw,
|
||||
PDD_SETEXCLUSIVEMODEDATA puSetExclusiveModeData
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
);
|
||||
|
||||
BOOL STDCALL NtGdiDdSetGammaRamp(
|
||||
HANDLE hDirectDraw,
|
||||
HDC hdc,
|
||||
LPVOID lpGammaRamp
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
);
|
||||
|
||||
DWORD STDCALL NtGdiDdSetOverlayPosition(
|
||||
HANDLE hSurfaceSource,
|
||||
HANDLE hSurfaceDestination,
|
||||
PDD_SETOVERLAYPOSITIONDATA puSetOverlayPositionData
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
);
|
||||
|
||||
VOID STDCALL NtGdiDdUnattachSurface(
|
||||
HANDLE hSurface,
|
||||
HANDLE hSurfaceAttached
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
}
|
||||
);
|
||||
|
||||
DWORD STDCALL NtGdiDdUnlock(
|
||||
HANDLE hSurface,
|
||||
PDD_UNLOCKDATA puUnlockData
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
);
|
||||
|
||||
DWORD STDCALL NtGdiDdUnlockD3D(
|
||||
HANDLE hSurface,
|
||||
PDD_UNLOCKDATA puUnlockData
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
);
|
||||
|
||||
DWORD STDCALL NtGdiDdUpdateOverlay(
|
||||
HANDLE hSurfaceDestination,
|
||||
HANDLE hSurfaceSource,
|
||||
PDD_UPDATEOVERLAYDATA puUpdateOverlayData
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
);
|
||||
|
||||
return 0;
|
||||
}
|
||||
DWORD STDCALL NtGdiDdWaitForVerticalBlank(
|
||||
HANDLE hDirectDraw,
|
||||
PDD_WAITFORVERTICALBLANKDATA puWaitForVerticalBlankData
|
||||
);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
|
||||
/* EOF */
|
||||
#endif
|
43
paint.h
Normal file
43
paint.h
Normal file
@@ -0,0 +1,43 @@
|
||||
#ifndef __WIN32K_PAINT_H
|
||||
#define __WIN32K_PAINT_H
|
||||
|
||||
typedef struct _PATRECT {
|
||||
RECT r;
|
||||
HBRUSH hBrush;
|
||||
} PATRECT, * PPATRECT;
|
||||
|
||||
BOOL STDCALL
|
||||
NtGdiPatBlt(
|
||||
HDC hDC,
|
||||
INT XLeft,
|
||||
INT YLeft,
|
||||
INT Width,
|
||||
INT Height,
|
||||
DWORD ROP);
|
||||
|
||||
BOOL STDCALL
|
||||
NtGdiPolyPatBlt(
|
||||
HDC hDC,
|
||||
DWORD dwRop,
|
||||
PPATRECT pRects,
|
||||
INT cRects,
|
||||
ULONG Reserved);
|
||||
|
||||
BOOL STDCALL
|
||||
NtGdiPatBlt(
|
||||
HDC hDC,
|
||||
INT XLeft,
|
||||
INT YLeft,
|
||||
INT Width,
|
||||
INT Height,
|
||||
DWORD ROP);
|
||||
|
||||
BOOL STDCALL NtGdiGdiFlush (VOID);
|
||||
DWORD STDCALL NtGdiGdiGetBatchLimit (VOID);
|
||||
DWORD STDCALL NtGdiGdiSetBatchLimit (DWORD Limit);
|
||||
UINT STDCALL NtGdiGetBoundsRect (HDC hDC, LPRECT Bounds, UINT Flags);
|
||||
COLORREF STDCALL NtGdiSetBkColor (HDC hDC, COLORREF Color);
|
||||
UINT STDCALL NtGdiSetBoundsRect (HDC hDC, CONST PRECT Bounds, UINT Flags);
|
||||
|
||||
#endif
|
||||
|
54
path.h
Normal file
54
path.h
Normal file
@@ -0,0 +1,54 @@
|
||||
#ifndef __WIN32K_PATH_H
|
||||
#define __WIN32K_PATH_H
|
||||
|
||||
typedef enum tagGdiPathState
|
||||
{
|
||||
PATH_Null,
|
||||
PATH_Open,
|
||||
PATH_Closed
|
||||
} GdiPathState;
|
||||
|
||||
typedef struct tagGdiPath
|
||||
{
|
||||
GdiPathState state;
|
||||
POINT *pPoints;
|
||||
BYTE *pFlags;
|
||||
int numEntriesUsed, numEntriesAllocated;
|
||||
BOOL newStroke;
|
||||
} GdiPath;
|
||||
|
||||
#define PATH_IsPathOpen(path) ((path).state==PATH_Open)
|
||||
|
||||
BOOL STDCALL NtGdiAbortPath(HDC hDC);
|
||||
|
||||
BOOL STDCALL NtGdiBeginPath(HDC hDC);
|
||||
|
||||
BOOL STDCALL NtGdiCloseFigure(HDC hDC);
|
||||
|
||||
BOOL STDCALL NtGdiEndPath(HDC hDC);
|
||||
|
||||
BOOL STDCALL NtGdiFillPath(HDC hDC);
|
||||
|
||||
BOOL STDCALL NtGdiFlattenPath(HDC hDC);
|
||||
|
||||
BOOL STDCALL NtGdiGetMiterLimit(HDC hDC,
|
||||
PFLOAT Limit);
|
||||
|
||||
INT STDCALL NtGdiGetPath(HDC hDC,
|
||||
LPPOINT Points,
|
||||
LPBYTE Types,
|
||||
INT nSize);
|
||||
|
||||
HRGN STDCALL NtGdiPathToRegion(HDC hDC);
|
||||
|
||||
BOOL STDCALL NtGdiSetMiterLimit(HDC hDC,
|
||||
FLOAT NewLimit,
|
||||
PFLOAT OldLimit);
|
||||
|
||||
BOOL STDCALL NtGdiStrokeAndFillPath(HDC hDC);
|
||||
|
||||
BOOL STDCALL NtGdiStrokePath(HDC hDC);
|
||||
|
||||
BOOL STDCALL NtGdiWidenPath(HDC hDC);
|
||||
|
||||
#endif
|
32
pen.h
Normal file
32
pen.h
Normal file
@@ -0,0 +1,32 @@
|
||||
#ifndef __WIN32K_PEN_H
|
||||
#define __WIN32K_PEN_H
|
||||
|
||||
#include <win32k/gdiobj.h>
|
||||
#include <win32k/brush.h>
|
||||
|
||||
/* Internal interface */
|
||||
|
||||
#define PENOBJ_AllocPen() ((HPEN)GDIOBJ_AllocObj(GDI_OBJECT_TYPE_PEN))
|
||||
#define PENOBJ_FreePen(hBMObj) GDIOBJ_FreeObj((HGDIOBJ) hBMObj, GDI_OBJECT_TYPE_PEN)
|
||||
#define PENOBJ_LockPen(hBMObj) ((PGDIBRUSHOBJ)GDIOBJ_LockObj((HGDIOBJ) hBMObj, GDI_OBJECT_TYPE_PEN))
|
||||
#define PENOBJ_UnlockPen(pPenObj) GDIOBJ_UnlockObjByPtr(pPenObj)
|
||||
|
||||
HPEN STDCALL
|
||||
NtGdiCreatePen(
|
||||
INT PenStyle,
|
||||
INT Width,
|
||||
COLORREF Color);
|
||||
|
||||
HPEN STDCALL
|
||||
NtGdiCreatePenIndirect(
|
||||
CONST PLOGPEN LogBrush);
|
||||
|
||||
HPEN STDCALL
|
||||
NtGdiExtCreatePen(
|
||||
DWORD PenStyle,
|
||||
DWORD Width,
|
||||
CONST LOGBRUSH *LogBrush,
|
||||
DWORD StyleCount,
|
||||
CONST DWORD *Style);
|
||||
|
||||
#endif
|
48
print.h
Normal file
48
print.h
Normal file
@@ -0,0 +1,48 @@
|
||||
|
||||
#ifndef __WIN32K_PRINT_H
|
||||
#define __WIN32K_PRINT_H
|
||||
|
||||
INT
|
||||
STDCALL
|
||||
NtGdiAbortDoc(HDC hDC);
|
||||
|
||||
INT
|
||||
STDCALL
|
||||
NtGdiEndDoc(HDC hDC);
|
||||
|
||||
INT
|
||||
STDCALL
|
||||
NtGdiEndPage(HDC hDC);
|
||||
|
||||
INT
|
||||
STDCALL
|
||||
NtGdiEscape(HDC hDC,
|
||||
INT Escape,
|
||||
INT InSize,
|
||||
LPCSTR InData,
|
||||
LPVOID OutData);
|
||||
|
||||
INT
|
||||
STDCALL
|
||||
NtGdiExtEscape(HDC hDC,
|
||||
INT Escape,
|
||||
INT InSize,
|
||||
LPCSTR InData,
|
||||
INT OutSize,
|
||||
LPSTR OutData);
|
||||
|
||||
INT
|
||||
STDCALL
|
||||
NtGdiSetAbortProc(HDC hDC,
|
||||
ABORTPROC AbortProc);
|
||||
|
||||
INT
|
||||
STDCALL
|
||||
NtGdiStartDoc(HDC hDC,
|
||||
CONST LPDOCINFOW di);
|
||||
|
||||
INT
|
||||
STDCALL
|
||||
NtGdiStartPage(HDC hDC);
|
||||
|
||||
#endif
|
340
reactos/COPYING
340
reactos/COPYING
@@ -1,340 +0,0 @@
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
675 Mass Ave, Cambridge, MA 02139, USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Library General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
Appendix: How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) 19yy <name of author>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) 19yy name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Library General
|
||||
Public License instead of this License.
|
@@ -1,78 +0,0 @@
|
||||
ReactOS is available thanks to the work of
|
||||
|
||||
Emanuele Aliberti <ea@iol.it>
|
||||
Robert Bergkvist <fragdance@hotmail.com>
|
||||
Hartmut Birr <hartmut.birr@gmx.de>
|
||||
Aleksey Bragin <aleksey@studiocerebral.com>
|
||||
Richard Campbell <eek2121@comcast.net>
|
||||
Gunnar Andre' Dalsnes <hardon@online.no>
|
||||
Arindam Das
|
||||
Boudewijn Dekker <ariadne@xs4all.nl>
|
||||
Robert Dickenson <robd@reactos.org>
|
||||
Marty Dill <mdill@uvic.ca>
|
||||
Jason Eager
|
||||
Steven Edwards <steven_ed4153@yahoo.com>
|
||||
Iwan Fatahi <i_fatahi@hotmail.com>
|
||||
Jason Filby <jasonfilby@yahoo.com>
|
||||
Martin Fuchs <martin-fuchs@gmx.net>
|
||||
Jurgen van Gael <jurgen.vangael@student.kuleuven.ac.be>
|
||||
Ge van Geldorp <ge@gse.nl>
|
||||
Andrew Greenwood <lists@silverblade.co.uk>
|
||||
Casper S. Hornstrup <chorns@users.sourceforge.net>
|
||||
KJK::Hyperion <noog@libero.it>
|
||||
Eugene Ingerman <geneing@myrealbox.com>
|
||||
Rex Jolliff <rex@lvcablemodem.com>
|
||||
Guido de Jong
|
||||
Victor Kirhenshtein <sauros@iname.com>
|
||||
Eric Kohl <ekohl@rz-online.de>
|
||||
Hans Kremer
|
||||
Frederik Leemans
|
||||
Jean Michault
|
||||
Royce Mitchell III <royce3@ev1.net>
|
||||
Filip Navara <xnavara@volny.cz>
|
||||
Jim Noeth
|
||||
Mike Nordell ("tamlin")
|
||||
Hernan Ochoa
|
||||
Brian Palmer <brianp@sginet.com>
|
||||
Paolo Pantaleo <paolopan@freemail.it>
|
||||
Matt Pyne
|
||||
Phillip Susi <phreak@iag.net>
|
||||
James B. Tabor <jimtabor@adsl-64-217-116-74.dsl.hstntx.swbell.net>
|
||||
Mark Tempel <mtempel@visi.com>
|
||||
Vizzini <vizzini@plasmic.com>
|
||||
Mark Weaver <mark@npsl.co.uk>
|
||||
Thomas Weidenmueller <w3seek@users.sourceforge.net>
|
||||
Jason Weiler
|
||||
David Welch <welch@cwcom.net>
|
||||
Jonathan Wilson <jonwil@tpgi.com.au>
|
||||
Art Yerkes <ayerkes@speakeasy.net>
|
||||
|
||||
Graphic Design from
|
||||
|
||||
Everaldo (http://everaldo.com) for Explorer icons
|
||||
|
||||
Source and inspiration from
|
||||
|
||||
WINE (http://www.winehq.com)
|
||||
WinFree (http://www.stack.nl/~onno/win32/)
|
||||
Linux (http://www.kernel.org)
|
||||
XFree86 (http://www.xfree86.org/)
|
||||
|
||||
References (Rex's at least)
|
||||
|
||||
Baker, Art. The Windows NT Device Driver Book. Prentice Hall, 1997.
|
||||
Borate, Dabak & Phadke. Undocumented Windows NT. M&T Books, 1999.
|
||||
Brain, Marshall. Win32 System Services. Prentice Hall, 1996.
|
||||
Cant, Chris. Writing Windows WDM Device Drivers. R&D Books, 1999.
|
||||
Canton & Sanchez. IBM Microcomputers: A Programmer's Handbook. McGraw Hill, 1990.
|
||||
Davis & Wallace. Windows Undocumented File Formats. R&D Books, 1997.
|
||||
Mason & Viscarola. Windows NT Device Driver Development. Macmillan, 1999.
|
||||
Mitchell, Stan. Inside the Windows 95 File System. O'Reilly, 1997.
|
||||
Murray, James D. Windows NT Event Logging. O'Reilly, 1998.
|
||||
Nagar, Rajeev. Windows NT File System Internals. O'Reilly, 1997.
|
||||
Osbourne, Sandra. Windows NT Registry: A Settings Reference. New Riders, 1998.
|
||||
Pietrek, Matt. Windows 95 System Programming Secrets. IDG, 1995.
|
||||
Richter, Jeffery. Advanced Windows, 3rd ed. Microsoft, 1997.
|
||||
Simon, Richard J. Windows NT Win32 API Superbible. Waite Group, 1996.
|
||||
Solomon, David A. Inside Windows NT, 2nd Ed. Microsoft, 1998.
|
||||
"The NT Insider." Open Systems Resources, 1999-2000.
|
211
reactos/Doxyfile
211
reactos/Doxyfile
@@ -1,211 +0,0 @@
|
||||
# Doxyfile 1.3.5
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# Project related configuration options
|
||||
#---------------------------------------------------------------------------
|
||||
PROJECT_NAME = ReactOS
|
||||
PROJECT_NUMBER =
|
||||
OUTPUT_DIRECTORY = doxy-doc
|
||||
OUTPUT_LANGUAGE = English
|
||||
USE_WINDOWS_ENCODING = YES
|
||||
BRIEF_MEMBER_DESC = YES
|
||||
REPEAT_BRIEF = YES
|
||||
ALWAYS_DETAILED_SEC = NO
|
||||
INLINE_INHERITED_MEMB = NO
|
||||
FULL_PATH_NAMES = YES
|
||||
STRIP_FROM_PATH = .
|
||||
SHORT_NAMES = NO
|
||||
JAVADOC_AUTOBRIEF = YES
|
||||
MULTILINE_CPP_IS_BRIEF = NO
|
||||
DETAILS_AT_TOP = NO
|
||||
INHERIT_DOCS = NO
|
||||
DISTRIBUTE_GROUP_DOC = NO
|
||||
TAB_SIZE = 8
|
||||
ALIASES =
|
||||
OPTIMIZE_OUTPUT_FOR_C = YES
|
||||
OPTIMIZE_OUTPUT_JAVA = NO
|
||||
SUBGROUPING = YES
|
||||
#---------------------------------------------------------------------------
|
||||
# Build related configuration options
|
||||
#---------------------------------------------------------------------------
|
||||
EXTRACT_ALL = YES
|
||||
EXTRACT_PRIVATE = YES
|
||||
EXTRACT_STATIC = YES
|
||||
EXTRACT_LOCAL_CLASSES = YES
|
||||
HIDE_UNDOC_MEMBERS = NO
|
||||
HIDE_UNDOC_CLASSES = NO
|
||||
HIDE_FRIEND_COMPOUNDS = NO
|
||||
HIDE_IN_BODY_DOCS = NO
|
||||
INTERNAL_DOCS = YES
|
||||
CASE_SENSE_NAMES = YES
|
||||
HIDE_SCOPE_NAMES = NO
|
||||
SHOW_INCLUDE_FILES = YES
|
||||
INLINE_INFO = YES
|
||||
SORT_MEMBER_DOCS = YES
|
||||
GENERATE_TODOLIST = YES
|
||||
GENERATE_TESTLIST = YES
|
||||
GENERATE_BUGLIST = YES
|
||||
GENERATE_DEPRECATEDLIST= YES
|
||||
ENABLED_SECTIONS =
|
||||
MAX_INITIALIZER_LINES = 30
|
||||
SHOW_USED_FILES = YES
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to warning and progress messages
|
||||
#---------------------------------------------------------------------------
|
||||
QUIET = NO
|
||||
WARNINGS = NO
|
||||
WARN_IF_UNDOCUMENTED = NO
|
||||
WARN_IF_DOC_ERROR = YES
|
||||
WARN_FORMAT = "$file:$line: $text"
|
||||
WARN_LOGFILE =
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the input files
|
||||
#---------------------------------------------------------------------------
|
||||
INPUT = hal \
|
||||
subsys \
|
||||
services \
|
||||
regtests \
|
||||
iface
|
||||
FILE_PATTERNS = *.c \
|
||||
*.h
|
||||
RECURSIVE = YES
|
||||
EXCLUDE = subsys/win32k \
|
||||
subsys/system/explorer
|
||||
EXCLUDE_SYMLINKS = NO
|
||||
EXCLUDE_PATTERNS =
|
||||
EXAMPLE_PATH =
|
||||
EXAMPLE_PATTERNS =
|
||||
EXAMPLE_RECURSIVE = YES
|
||||
IMAGE_PATH =
|
||||
INPUT_FILTER =
|
||||
FILTER_SOURCE_FILES = NO
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to source browsing
|
||||
#---------------------------------------------------------------------------
|
||||
SOURCE_BROWSER = YES
|
||||
INLINE_SOURCES = YES
|
||||
STRIP_CODE_COMMENTS = YES
|
||||
REFERENCED_BY_RELATION = YES
|
||||
REFERENCES_RELATION = YES
|
||||
VERBATIM_HEADERS = NO
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the alphabetical class index
|
||||
#---------------------------------------------------------------------------
|
||||
ALPHABETICAL_INDEX = YES
|
||||
COLS_IN_ALPHA_INDEX = 5
|
||||
IGNORE_PREFIX =
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the HTML output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_HTML = YES
|
||||
HTML_OUTPUT = html
|
||||
HTML_FILE_EXTENSION = .html
|
||||
HTML_HEADER =
|
||||
HTML_FOOTER =
|
||||
HTML_STYLESHEET =
|
||||
HTML_ALIGN_MEMBERS = YES
|
||||
GENERATE_HTMLHELP = NO
|
||||
CHM_FILE =
|
||||
HHC_LOCATION =
|
||||
GENERATE_CHI = NO
|
||||
BINARY_TOC = NO
|
||||
TOC_EXPAND = NO
|
||||
DISABLE_INDEX = NO
|
||||
ENUM_VALUES_PER_LINE = 4
|
||||
GENERATE_TREEVIEW = YES
|
||||
TREEVIEW_WIDTH = 250
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the LaTeX output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_LATEX = NO
|
||||
LATEX_OUTPUT = latex
|
||||
LATEX_CMD_NAME = latex
|
||||
MAKEINDEX_CMD_NAME = makeindex
|
||||
COMPACT_LATEX = NO
|
||||
PAPER_TYPE = a4wide
|
||||
EXTRA_PACKAGES =
|
||||
LATEX_HEADER =
|
||||
PDF_HYPERLINKS = NO
|
||||
USE_PDFLATEX = NO
|
||||
LATEX_BATCHMODE = NO
|
||||
LATEX_HIDE_INDICES = NO
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the RTF output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_RTF = NO
|
||||
RTF_OUTPUT = rtf
|
||||
COMPACT_RTF = YES
|
||||
RTF_HYPERLINKS = YES
|
||||
RTF_STYLESHEET_FILE =
|
||||
RTF_EXTENSIONS_FILE =
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the man page output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_MAN = NO
|
||||
MAN_OUTPUT = man
|
||||
MAN_EXTENSION = .3
|
||||
MAN_LINKS = NO
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the XML output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_XML = NO
|
||||
XML_OUTPUT = xml
|
||||
XML_SCHEMA =
|
||||
XML_DTD =
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options for the AutoGen Definitions output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_AUTOGEN_DEF = NO
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the Perl module output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_PERLMOD = NO
|
||||
PERLMOD_LATEX = NO
|
||||
PERLMOD_PRETTY = YES
|
||||
PERLMOD_MAKEVAR_PREFIX =
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the preprocessor
|
||||
#---------------------------------------------------------------------------
|
||||
ENABLE_PREPROCESSING = NO
|
||||
MACRO_EXPANSION = NO
|
||||
EXPAND_ONLY_PREDEF = NO
|
||||
SEARCH_INCLUDES = YES
|
||||
INCLUDE_PATH = include
|
||||
INCLUDE_FILE_PATTERNS = *.h
|
||||
PREDEFINED =
|
||||
EXPAND_AS_DEFINED =
|
||||
SKIP_FUNCTION_MACROS = YES
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration::addtions related to external references
|
||||
#---------------------------------------------------------------------------
|
||||
TAGFILES =
|
||||
GENERATE_TAGFILE =
|
||||
ALLEXTERNALS = NO
|
||||
EXTERNAL_GROUPS = YES
|
||||
PERL_PATH = /usr/bin/perl
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the dot tool
|
||||
#---------------------------------------------------------------------------
|
||||
CLASS_DIAGRAMS = YES
|
||||
HIDE_UNDOC_RELATIONS = NO
|
||||
HAVE_DOT = YES
|
||||
CLASS_GRAPH = YES
|
||||
COLLABORATION_GRAPH = YES
|
||||
UML_LOOK = NO
|
||||
TEMPLATE_RELATIONS = NO
|
||||
INCLUDE_GRAPH = YES
|
||||
INCLUDED_BY_GRAPH = YES
|
||||
CALL_GRAPH = YES
|
||||
GRAPHICAL_HIERARCHY = YES
|
||||
DOT_IMAGE_FORMAT = png
|
||||
DOT_PATH =
|
||||
DOTFILE_DIRS =
|
||||
MAX_DOT_GRAPH_WIDTH = 1024
|
||||
MAX_DOT_GRAPH_HEIGHT = 1024
|
||||
MAX_DOT_GRAPH_DEPTH = 0
|
||||
GENERATE_LEGEND = YES
|
||||
DOT_CLEANUP = YES
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration::addtions related to the search engine
|
||||
#---------------------------------------------------------------------------
|
||||
SEARCHENGINE = YES
|
@@ -1,73 +0,0 @@
|
||||
1. Build environment
|
||||
|
||||
To build the system you need either mingw32 installed on Windows or a mingw32
|
||||
cross compiler running on unix. You may obtain MinGW binaries that build
|
||||
ReactOS from http://www.reactos.com.
|
||||
|
||||
|
||||
2. Building ReactOS
|
||||
|
||||
To build from Windows run 'make' (wihout the quotes) from the top directory.
|
||||
To build from unix, edit rules.mak and change the PREFIX variable to the
|
||||
correct value for your cross-compiler. Run 'export HOST=mingw32-linux' to
|
||||
tell the ReactOS build system that it is building ReactOS on a linux machine.
|
||||
Now run 'make'.
|
||||
|
||||
|
||||
3. Installation
|
||||
|
||||
The system can only be installed on the first partition on the first harddisk.
|
||||
The partition must be formatted as FAT16 or FAT32. The system can only be
|
||||
started from DOS and not from a Windows DOS-prompt.
|
||||
|
||||
ReactOS can be installed from the source distribution or from the binary
|
||||
distribution. The two ways to install ReactOS are explained below.
|
||||
|
||||
|
||||
3.1 Installation from sources
|
||||
|
||||
To install ReactOS after building it, type 'make install'. This will create
|
||||
the directory 'reactos' in the top directory. Copy this directory to the root
|
||||
of your first partition on your first harddisk. This is usually c:\ on a
|
||||
Windows machine.
|
||||
|
||||
If you don't want to copy the files manually every time you run a 'make install',
|
||||
you can specify the directory where the files are to be copied to during
|
||||
installation.
|
||||
|
||||
In rules.mak find the variable INSTALL_DIR and change the assigned value to the
|
||||
name of the directory where the files are to be copied to. If you are using
|
||||
Windows this could be:
|
||||
|
||||
INSTALL_DIR = c:\reactos
|
||||
|
||||
If you are on linux this could be:
|
||||
|
||||
INSTALL_DIR = /mnt/windows/reactos
|
||||
|
||||
Save the changes to rules.mak and run 'make install' to install the files to
|
||||
the new location. If you don't want to change rules.mak, you can specify the
|
||||
installtion directory when invoking make. Run
|
||||
'make INSTALL_DIR=c:\reactos install' to install to c:\reactos.
|
||||
|
||||
|
||||
3.2 Installation from binany distribution
|
||||
|
||||
To install ReactOS from the binary distribution, extract the archive contents
|
||||
to c:\reactos. Remember to extract the files with full paths.
|
||||
|
||||
|
||||
4. Booting ReactOS
|
||||
|
||||
Startup in DOS mode. 'cd' to c:\reactos and type 'boot' and press <enter>.
|
||||
A simple shell is started where you can use simple commands like 'cd' and 'dir'.
|
||||
|
||||
|
||||
5. Help
|
||||
|
||||
If you run into problems or have suggestions for making ReactOS better, please
|
||||
surf to the address below and subscribe to one or more of the mailing lists.
|
||||
|
||||
http://www.reactos.com/index.php?tab=discussion§ion=lists
|
||||
|
||||
ReactOS Development Team
|
@@ -1,5 +0,0 @@
|
||||
# Main jamfile for ReactOS
|
||||
|
||||
SubDir ROS_TOP ;
|
||||
|
||||
SubInclude ROS_TOP Lib ;
|
@@ -1,54 +0,0 @@
|
||||
# customization for ReactOS goes here
|
||||
|
||||
# The SharedLibrary and SharedLibraryFromObjects rules were
|
||||
# borrowed from here:
|
||||
# http://www.differentpla.net/~roger/devel/jam/tutorial/shared_lib/index.html
|
||||
|
||||
SUFSHR = .dll ;
|
||||
RM = rm ; # rm comes with MinGW, and the default del doesn't work in some cases
|
||||
|
||||
rule SharedLibrary
|
||||
{
|
||||
SharedLibraryFromObjects $(<) : $(>:S=$(SUFOBJ)) ;
|
||||
Objects $(>) ;
|
||||
}
|
||||
|
||||
rule SharedLibraryFromObjects
|
||||
{
|
||||
local _s _t ;
|
||||
|
||||
# Add grist to file names
|
||||
# Add suffix to dll
|
||||
|
||||
_s = [ FGristFiles $(>) ] ;
|
||||
_t = [ FAppendSuffix $(<) : $(SUFSHR) ] ;
|
||||
|
||||
if $(_t) != $(<)
|
||||
{
|
||||
DEPENDS $(<) : $(_t) ;
|
||||
NOTFILE $(<) ;
|
||||
}
|
||||
|
||||
# make compiled sources a dependency of target
|
||||
|
||||
DEPENDS exe : $(_t) ;
|
||||
DEPENDS $(_t) : $(_s) ;
|
||||
MakeLocate $(_t) : $(LOCATE_TARGET) ;
|
||||
|
||||
Clean clean : $(_t) ;
|
||||
|
||||
Link $(_t) : $(_s) ;
|
||||
}
|
||||
|
||||
# nasm needs to know the output file first, or it doesn't
|
||||
# recognize -I :(
|
||||
actions As
|
||||
{
|
||||
$(AS) -o $(<) $(ASFLAGS) -I$(HDRS) $(>)
|
||||
}
|
||||
|
||||
AS = nasm ;
|
||||
|
||||
# why isn't DEFINES working? :(
|
||||
#DEFINES += _M_IX86 ;
|
||||
CCFLAGS += -D_M_IX86 ;
|
504
reactos/LGPL.txt
504
reactos/LGPL.txt
@@ -1,504 +0,0 @@
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
Version 2.1, February 1999
|
||||
|
||||
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
|
||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
[This is the first released version of the Lesser GPL. It also counts
|
||||
as the successor of the GNU Library Public License, version 2, hence
|
||||
the version number 2.1.]
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
Licenses are intended to guarantee your freedom to share and change
|
||||
free software--to make sure the software is free for all its users.
|
||||
|
||||
This license, the Lesser General Public License, applies to some
|
||||
specially designated software packages--typically libraries--of the
|
||||
Free Software Foundation and other authors who decide to use it. You
|
||||
can use it too, but we suggest you first think carefully about whether
|
||||
this license or the ordinary General Public License is the better
|
||||
strategy to use in any particular case, based on the explanations below.
|
||||
|
||||
When we speak of free software, we are referring to freedom of use,
|
||||
not price. Our General Public Licenses are designed to make sure that
|
||||
you have the freedom to distribute copies of free software (and charge
|
||||
for this service if you wish); that you receive source code or can get
|
||||
it if you want it; that you can change the software and use pieces of
|
||||
it in new free programs; and that you are informed that you can do
|
||||
these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
distributors to deny you these rights or to ask you to surrender these
|
||||
rights. These restrictions translate to certain responsibilities for
|
||||
you if you distribute copies of the library or if you modify it.
|
||||
|
||||
For example, if you distribute copies of the library, whether gratis
|
||||
or for a fee, you must give the recipients all the rights that we gave
|
||||
you. You must make sure that they, too, receive or can get the source
|
||||
code. If you link other code with the library, you must provide
|
||||
complete object files to the recipients, so that they can relink them
|
||||
with the library after making changes to the library and recompiling
|
||||
it. And you must show them these terms so they know their rights.
|
||||
|
||||
We protect your rights with a two-step method: (1) we copyright the
|
||||
library, and (2) we offer you this license, which gives you legal
|
||||
permission to copy, distribute and/or modify the library.
|
||||
|
||||
To protect each distributor, we want to make it very clear that
|
||||
there is no warranty for the free library. Also, if the library is
|
||||
modified by someone else and passed on, the recipients should know
|
||||
that what they have is not the original version, so that the original
|
||||
author's reputation will not be affected by problems that might be
|
||||
introduced by others.
|
||||
|
||||
Finally, software patents pose a constant threat to the existence of
|
||||
any free program. We wish to make sure that a company cannot
|
||||
effectively restrict the users of a free program by obtaining a
|
||||
restrictive license from a patent holder. Therefore, we insist that
|
||||
any patent license obtained for a version of the library must be
|
||||
consistent with the full freedom of use specified in this license.
|
||||
|
||||
Most GNU software, including some libraries, is covered by the
|
||||
ordinary GNU General Public License. This license, the GNU Lesser
|
||||
General Public License, applies to certain designated libraries, and
|
||||
is quite different from the ordinary General Public License. We use
|
||||
this license for certain libraries in order to permit linking those
|
||||
libraries into non-free programs.
|
||||
|
||||
When a program is linked with a library, whether statically or using
|
||||
a shared library, the combination of the two is legally speaking a
|
||||
combined work, a derivative of the original library. The ordinary
|
||||
General Public License therefore permits such linking only if the
|
||||
entire combination fits its criteria of freedom. The Lesser General
|
||||
Public License permits more lax criteria for linking other code with
|
||||
the library.
|
||||
|
||||
We call this license the "Lesser" General Public License because it
|
||||
does Less to protect the user's freedom than the ordinary General
|
||||
Public License. It also provides other free software developers Less
|
||||
of an advantage over competing non-free programs. These disadvantages
|
||||
are the reason we use the ordinary General Public License for many
|
||||
libraries. However, the Lesser license provides advantages in certain
|
||||
special circumstances.
|
||||
|
||||
For example, on rare occasions, there may be a special need to
|
||||
encourage the widest possible use of a certain library, so that it becomes
|
||||
a de-facto standard. To achieve this, non-free programs must be
|
||||
allowed to use the library. A more frequent case is that a free
|
||||
library does the same job as widely used non-free libraries. In this
|
||||
case, there is little to gain by limiting the free library to free
|
||||
software only, so we use the Lesser General Public License.
|
||||
|
||||
In other cases, permission to use a particular library in non-free
|
||||
programs enables a greater number of people to use a large body of
|
||||
free software. For example, permission to use the GNU C Library in
|
||||
non-free programs enables many more people to use the whole GNU
|
||||
operating system, as well as its variant, the GNU/Linux operating
|
||||
system.
|
||||
|
||||
Although the Lesser General Public License is Less protective of the
|
||||
users' freedom, it does ensure that the user of a program that is
|
||||
linked with the Library has the freedom and the wherewithal to run
|
||||
that program using a modified version of the Library.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow. Pay close attention to the difference between a
|
||||
"work based on the library" and a "work that uses the library". The
|
||||
former contains code derived from the library, whereas the latter must
|
||||
be combined with the library in order to run.
|
||||
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License Agreement applies to any software library or other
|
||||
program which contains a notice placed by the copyright holder or
|
||||
other authorized party saying it may be distributed under the terms of
|
||||
this Lesser General Public License (also called "this License").
|
||||
Each licensee is addressed as "you".
|
||||
|
||||
A "library" means a collection of software functions and/or data
|
||||
prepared so as to be conveniently linked with application programs
|
||||
(which use some of those functions and data) to form executables.
|
||||
|
||||
The "Library", below, refers to any such software library or work
|
||||
which has been distributed under these terms. A "work based on the
|
||||
Library" means either the Library or any derivative work under
|
||||
copyright law: that is to say, a work containing the Library or a
|
||||
portion of it, either verbatim or with modifications and/or translated
|
||||
straightforwardly into another language. (Hereinafter, translation is
|
||||
included without limitation in the term "modification".)
|
||||
|
||||
"Source code" for a work means the preferred form of the work for
|
||||
making modifications to it. For a library, complete source code means
|
||||
all the source code for all modules it contains, plus any associated
|
||||
interface definition files, plus the scripts used to control compilation
|
||||
and installation of the library.
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running a program using the Library is not restricted, and output from
|
||||
such a program is covered only if its contents constitute a work based
|
||||
on the Library (independent of the use of the Library in a tool for
|
||||
writing it). Whether that is true depends on what the Library does
|
||||
and what the program that uses the Library does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Library's
|
||||
complete source code as you receive it, in any medium, provided that
|
||||
you conspicuously and appropriately publish on each copy an
|
||||
appropriate copyright notice and disclaimer of warranty; keep intact
|
||||
all the notices that refer to this License and to the absence of any
|
||||
warranty; and distribute a copy of this License along with the
|
||||
Library.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy,
|
||||
and you may at your option offer warranty protection in exchange for a
|
||||
fee.
|
||||
|
||||
2. You may modify your copy or copies of the Library or any portion
|
||||
of it, thus forming a work based on the Library, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) The modified work must itself be a software library.
|
||||
|
||||
b) You must cause the files modified to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
c) You must cause the whole of the work to be licensed at no
|
||||
charge to all third parties under the terms of this License.
|
||||
|
||||
d) If a facility in the modified Library refers to a function or a
|
||||
table of data to be supplied by an application program that uses
|
||||
the facility, other than as an argument passed when the facility
|
||||
is invoked, then you must make a good faith effort to ensure that,
|
||||
in the event an application does not supply such function or
|
||||
table, the facility still operates, and performs whatever part of
|
||||
its purpose remains meaningful.
|
||||
|
||||
(For example, a function in a library to compute square roots has
|
||||
a purpose that is entirely well-defined independent of the
|
||||
application. Therefore, Subsection 2d requires that any
|
||||
application-supplied function or table used by this function must
|
||||
be optional: if the application does not supply it, the square
|
||||
root function must still compute square roots.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Library,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Library, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote
|
||||
it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Library.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Library
|
||||
with the Library (or with a work based on the Library) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may opt to apply the terms of the ordinary GNU General Public
|
||||
License instead of this License to a given copy of the Library. To do
|
||||
this, you must alter all the notices that refer to this License, so
|
||||
that they refer to the ordinary GNU General Public License, version 2,
|
||||
instead of to this License. (If a newer version than version 2 of the
|
||||
ordinary GNU General Public License has appeared, then you can specify
|
||||
that version instead if you wish.) Do not make any other change in
|
||||
these notices.
|
||||
|
||||
Once this change is made in a given copy, it is irreversible for
|
||||
that copy, so the ordinary GNU General Public License applies to all
|
||||
subsequent copies and derivative works made from that copy.
|
||||
|
||||
This option is useful when you wish to copy part of the code of
|
||||
the Library into a program that is not a library.
|
||||
|
||||
4. You may copy and distribute the Library (or a portion or
|
||||
derivative of it, under Section 2) in object code or executable form
|
||||
under the terms of Sections 1 and 2 above provided that you accompany
|
||||
it with the complete corresponding machine-readable source code, which
|
||||
must be distributed under the terms of Sections 1 and 2 above on a
|
||||
medium customarily used for software interchange.
|
||||
|
||||
If distribution of object code is made by offering access to copy
|
||||
from a designated place, then offering equivalent access to copy the
|
||||
source code from the same place satisfies the requirement to
|
||||
distribute the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
5. A program that contains no derivative of any portion of the
|
||||
Library, but is designed to work with the Library by being compiled or
|
||||
linked with it, is called a "work that uses the Library". Such a
|
||||
work, in isolation, is not a derivative work of the Library, and
|
||||
therefore falls outside the scope of this License.
|
||||
|
||||
However, linking a "work that uses the Library" with the Library
|
||||
creates an executable that is a derivative of the Library (because it
|
||||
contains portions of the Library), rather than a "work that uses the
|
||||
library". The executable is therefore covered by this License.
|
||||
Section 6 states terms for distribution of such executables.
|
||||
|
||||
When a "work that uses the Library" uses material from a header file
|
||||
that is part of the Library, the object code for the work may be a
|
||||
derivative work of the Library even though the source code is not.
|
||||
Whether this is true is especially significant if the work can be
|
||||
linked without the Library, or if the work is itself a library. The
|
||||
threshold for this to be true is not precisely defined by law.
|
||||
|
||||
If such an object file uses only numerical parameters, data
|
||||
structure layouts and accessors, and small macros and small inline
|
||||
functions (ten lines or less in length), then the use of the object
|
||||
file is unrestricted, regardless of whether it is legally a derivative
|
||||
work. (Executables containing this object code plus portions of the
|
||||
Library will still fall under Section 6.)
|
||||
|
||||
Otherwise, if the work is a derivative of the Library, you may
|
||||
distribute the object code for the work under the terms of Section 6.
|
||||
Any executables containing that work also fall under Section 6,
|
||||
whether or not they are linked directly with the Library itself.
|
||||
|
||||
6. As an exception to the Sections above, you may also combine or
|
||||
link a "work that uses the Library" with the Library to produce a
|
||||
work containing portions of the Library, and distribute that work
|
||||
under terms of your choice, provided that the terms permit
|
||||
modification of the work for the customer's own use and reverse
|
||||
engineering for debugging such modifications.
|
||||
|
||||
You must give prominent notice with each copy of the work that the
|
||||
Library is used in it and that the Library and its use are covered by
|
||||
this License. You must supply a copy of this License. If the work
|
||||
during execution displays copyright notices, you must include the
|
||||
copyright notice for the Library among them, as well as a reference
|
||||
directing the user to the copy of this License. Also, you must do one
|
||||
of these things:
|
||||
|
||||
a) Accompany the work with the complete corresponding
|
||||
machine-readable source code for the Library including whatever
|
||||
changes were used in the work (which must be distributed under
|
||||
Sections 1 and 2 above); and, if the work is an executable linked
|
||||
with the Library, with the complete machine-readable "work that
|
||||
uses the Library", as object code and/or source code, so that the
|
||||
user can modify the Library and then relink to produce a modified
|
||||
executable containing the modified Library. (It is understood
|
||||
that the user who changes the contents of definitions files in the
|
||||
Library will not necessarily be able to recompile the application
|
||||
to use the modified definitions.)
|
||||
|
||||
b) Use a suitable shared library mechanism for linking with the
|
||||
Library. A suitable mechanism is one that (1) uses at run time a
|
||||
copy of the library already present on the user's computer system,
|
||||
rather than copying library functions into the executable, and (2)
|
||||
will operate properly with a modified version of the library, if
|
||||
the user installs one, as long as the modified version is
|
||||
interface-compatible with the version that the work was made with.
|
||||
|
||||
c) Accompany the work with a written offer, valid for at
|
||||
least three years, to give the same user the materials
|
||||
specified in Subsection 6a, above, for a charge no more
|
||||
than the cost of performing this distribution.
|
||||
|
||||
d) If distribution of the work is made by offering access to copy
|
||||
from a designated place, offer equivalent access to copy the above
|
||||
specified materials from the same place.
|
||||
|
||||
e) Verify that the user has already received a copy of these
|
||||
materials or that you have already sent this user a copy.
|
||||
|
||||
For an executable, the required form of the "work that uses the
|
||||
Library" must include any data and utility programs needed for
|
||||
reproducing the executable from it. However, as a special exception,
|
||||
the materials to be distributed need not include anything that is
|
||||
normally distributed (in either source or binary form) with the major
|
||||
components (compiler, kernel, and so on) of the operating system on
|
||||
which the executable runs, unless that component itself accompanies
|
||||
the executable.
|
||||
|
||||
It may happen that this requirement contradicts the license
|
||||
restrictions of other proprietary libraries that do not normally
|
||||
accompany the operating system. Such a contradiction means you cannot
|
||||
use both them and the Library together in an executable that you
|
||||
distribute.
|
||||
|
||||
7. You may place library facilities that are a work based on the
|
||||
Library side-by-side in a single library together with other library
|
||||
facilities not covered by this License, and distribute such a combined
|
||||
library, provided that the separate distribution of the work based on
|
||||
the Library and of the other library facilities is otherwise
|
||||
permitted, and provided that you do these two things:
|
||||
|
||||
a) Accompany the combined library with a copy of the same work
|
||||
based on the Library, uncombined with any other library
|
||||
facilities. This must be distributed under the terms of the
|
||||
Sections above.
|
||||
|
||||
b) Give prominent notice with the combined library of the fact
|
||||
that part of it is a work based on the Library, and explaining
|
||||
where to find the accompanying uncombined form of the same work.
|
||||
|
||||
8. You may not copy, modify, sublicense, link with, or distribute
|
||||
the Library except as expressly provided under this License. Any
|
||||
attempt otherwise to copy, modify, sublicense, link with, or
|
||||
distribute the Library is void, and will automatically terminate your
|
||||
rights under this License. However, parties who have received copies,
|
||||
or rights, from you under this License will not have their licenses
|
||||
terminated so long as such parties remain in full compliance.
|
||||
|
||||
9. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Library or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Library (or any work based on the
|
||||
Library), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Library or works based on it.
|
||||
|
||||
10. Each time you redistribute the Library (or any work based on the
|
||||
Library), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute, link with or modify the Library
|
||||
subject to these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties with
|
||||
this License.
|
||||
|
||||
11. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Library at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Library by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Library.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under any
|
||||
particular circumstance, the balance of the section is intended to apply,
|
||||
and the section as a whole is intended to apply in other circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
12. If the distribution and/or use of the Library is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Library under this License may add
|
||||
an explicit geographical distribution limitation excluding those countries,
|
||||
so that distribution is permitted only in or among countries not thus
|
||||
excluded. In such case, this License incorporates the limitation as if
|
||||
written in the body of this License.
|
||||
|
||||
13. The Free Software Foundation may publish revised and/or new
|
||||
versions of the Lesser General Public License from time to time.
|
||||
Such new versions will be similar in spirit to the present version,
|
||||
but may differ in detail to address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Library
|
||||
specifies a version number of this License which applies to it and
|
||||
"any later version", you have the option of following the terms and
|
||||
conditions either of that version or of any later version published by
|
||||
the Free Software Foundation. If the Library does not specify a
|
||||
license version number, you may choose any version ever published by
|
||||
the Free Software Foundation.
|
||||
|
||||
14. If you wish to incorporate parts of the Library into other free
|
||||
programs whose distribution conditions are incompatible with these,
|
||||
write to the author to ask for permission. For software which is
|
||||
copyrighted by the Free Software Foundation, write to the Free
|
||||
Software Foundation; we sometimes make exceptions for this. Our
|
||||
decision will be guided by the two goals of preserving the free status
|
||||
of all derivatives of our free software and of promoting the sharing
|
||||
and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
|
||||
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
|
||||
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
|
||||
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
|
||||
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
|
||||
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
|
||||
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
|
||||
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
|
||||
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
|
||||
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
|
||||
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
|
||||
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
|
||||
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
|
||||
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
|
||||
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
||||
DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Libraries
|
||||
|
||||
If you develop a new library, and you want it to be of the greatest
|
||||
possible use to the public, we recommend making it free software that
|
||||
everyone can redistribute and change. You can do so by permitting
|
||||
redistribution under these terms (or, alternatively, under the terms of the
|
||||
ordinary General Public License).
|
||||
|
||||
To apply these terms, attach the following notices to the library. It is
|
||||
safest to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least the
|
||||
"copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the library's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with this library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the library, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the
|
||||
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1990
|
||||
Ty Coon, President of Vice
|
||||
|
||||
That's all there is to it!
|
||||
|
||||
|
1088
reactos/Makefile
1088
reactos/Makefile
File diff suppressed because it is too large
Load Diff
@@ -1,28 +0,0 @@
|
||||
========================
|
||||
ReactOS Version 0.2.x
|
||||
Updated June 23rd, 2004
|
||||
========================
|
||||
|
||||
1. What is ReactOS?
|
||||
|
||||
ReactOS is an Open Source effort to develop a quality operating system
|
||||
that is compatible with Windows NT applications and drivers.
|
||||
|
||||
The ReactOS project, although currently focused on Windows NT 4.0
|
||||
compatibility, is always keeping an eye towards compatibility with
|
||||
future Windows NT releases, that is, Windows 2000 (NT 5.0) and
|
||||
Windows XP (NT 5.1).
|
||||
|
||||
More information is available at http://www.reactos.com.
|
||||
|
||||
2. Building ReactOS
|
||||
|
||||
See the INSTALL file for more details.
|
||||
|
||||
3. More information
|
||||
|
||||
See the doc subdirectory for some sparse notes
|
||||
|
||||
4. Who is responsible
|
||||
|
||||
See the CREDITS file
|
@@ -1,33 +0,0 @@
|
||||
; Format:
|
||||
; COMPONENT_NAME PATH_TO_COMPONENT_SOURCES
|
||||
; COMPONENT_NAME - Name of the component. Eg. kernel32.dll.
|
||||
; PATH_TO_COMPONENT_SOURCES - Relative path to sources (relative to
|
||||
; where rgenstat is run from).
|
||||
advapi32.dll reactos/lib/advapi32
|
||||
crtdll.dll reactos/lib/crtdll
|
||||
gdi32.dll reactos/lib/gdi32
|
||||
gdiplus.dll reactos/lib/gdiplus
|
||||
iphlpapi.dll reactos/lib/iphlpapi
|
||||
kernel32.dll reactos/lib/kernel32
|
||||
lz32.dll reactos/lib/lzexpand
|
||||
msvcrt.dll reactos/lib/msvcrt
|
||||
ole32.dll reactos/lib/ole32
|
||||
oleaut32.dll reactos/lib/oleaut32
|
||||
rpcrt4.dll reactos/lib/rpcrt4
|
||||
secur32.dll reactos/lib/secur32
|
||||
shell32.dll reactos/lib/shell32
|
||||
snmpapi.dll reactos/lib/snmpapi
|
||||
user32.dll reactos/lib/user32
|
||||
version.dll reactos/lib/version
|
||||
winmm.dll reactos/lib/winmm
|
||||
winspool.dll reactos/lib/winspool
|
||||
ws2_32.dll reactos/lib/ws2_32
|
||||
wsock32.dll reactos/lib/wsock32
|
||||
videoprt.dll reactos/drivers/video/videoprt
|
||||
ndis.sys reactos/drivers/net/ndis
|
||||
tdi.sys reactos/drivers/net/tdi
|
||||
class2.sys reactos/drivers/storage/class2
|
||||
scsiport.sys reactos/drivers/storage/scsiport
|
||||
ntoskrnl.exe reactos/ntoskrnl
|
||||
ntoskrnl.exe reactos/lib/rtl
|
||||
win32k.sys reactos/subsys/win32k
|
@@ -1,207 +0,0 @@
|
||||
# Doxyfile 1.3.5
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# Project related configuration options
|
||||
#---------------------------------------------------------------------------
|
||||
PROJECT_NAME = "ReactOS Apps & Tools"
|
||||
PROJECT_NUMBER =
|
||||
OUTPUT_DIRECTORY = doxy-doc
|
||||
OUTPUT_LANGUAGE = English
|
||||
USE_WINDOWS_ENCODING = YES
|
||||
BRIEF_MEMBER_DESC = YES
|
||||
REPEAT_BRIEF = YES
|
||||
ALWAYS_DETAILED_SEC = NO
|
||||
INLINE_INHERITED_MEMB = NO
|
||||
FULL_PATH_NAMES = YES
|
||||
STRIP_FROM_PATH = ..
|
||||
SHORT_NAMES = NO
|
||||
JAVADOC_AUTOBRIEF = YES
|
||||
MULTILINE_CPP_IS_BRIEF = NO
|
||||
DETAILS_AT_TOP = NO
|
||||
INHERIT_DOCS = NO
|
||||
DISTRIBUTE_GROUP_DOC = NO
|
||||
TAB_SIZE = 8
|
||||
ALIASES =
|
||||
OPTIMIZE_OUTPUT_FOR_C = YES
|
||||
OPTIMIZE_OUTPUT_JAVA = NO
|
||||
SUBGROUPING = YES
|
||||
#---------------------------------------------------------------------------
|
||||
# Build related configuration options
|
||||
#---------------------------------------------------------------------------
|
||||
EXTRACT_ALL = YES
|
||||
EXTRACT_PRIVATE = NO
|
||||
EXTRACT_STATIC = NO
|
||||
EXTRACT_LOCAL_CLASSES = NO
|
||||
HIDE_UNDOC_MEMBERS = NO
|
||||
HIDE_UNDOC_CLASSES = NO
|
||||
HIDE_FRIEND_COMPOUNDS = NO
|
||||
HIDE_IN_BODY_DOCS = NO
|
||||
INTERNAL_DOCS = YES
|
||||
CASE_SENSE_NAMES = YES
|
||||
HIDE_SCOPE_NAMES = NO
|
||||
SHOW_INCLUDE_FILES = YES
|
||||
INLINE_INFO = YES
|
||||
SORT_MEMBER_DOCS = YES
|
||||
GENERATE_TODOLIST = YES
|
||||
GENERATE_TESTLIST = YES
|
||||
GENERATE_BUGLIST = YES
|
||||
GENERATE_DEPRECATEDLIST= YES
|
||||
ENABLED_SECTIONS =
|
||||
MAX_INITIALIZER_LINES = 30
|
||||
SHOW_USED_FILES = YES
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to warning and progress messages
|
||||
#---------------------------------------------------------------------------
|
||||
QUIET = NO
|
||||
WARNINGS = NO
|
||||
WARN_IF_UNDOCUMENTED = NO
|
||||
WARN_IF_DOC_ERROR = YES
|
||||
WARN_FORMAT = "$file:$line: $text"
|
||||
WARN_LOGFILE =
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the input files
|
||||
#---------------------------------------------------------------------------
|
||||
INPUT = . \
|
||||
../tools
|
||||
FILE_PATTERNS = *.c \
|
||||
*.h
|
||||
RECURSIVE = YES
|
||||
EXCLUDE =
|
||||
EXCLUDE_SYMLINKS = NO
|
||||
EXCLUDE_PATTERNS =
|
||||
EXAMPLE_PATH =
|
||||
EXAMPLE_PATTERNS =
|
||||
EXAMPLE_RECURSIVE = YES
|
||||
IMAGE_PATH =
|
||||
INPUT_FILTER =
|
||||
FILTER_SOURCE_FILES = NO
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to source browsing
|
||||
#---------------------------------------------------------------------------
|
||||
SOURCE_BROWSER = YES
|
||||
INLINE_SOURCES = YES
|
||||
STRIP_CODE_COMMENTS = YES
|
||||
REFERENCED_BY_RELATION = YES
|
||||
REFERENCES_RELATION = YES
|
||||
VERBATIM_HEADERS = NO
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the alphabetical class index
|
||||
#---------------------------------------------------------------------------
|
||||
ALPHABETICAL_INDEX = YES
|
||||
COLS_IN_ALPHA_INDEX = 5
|
||||
IGNORE_PREFIX =
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the HTML output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_HTML = YES
|
||||
HTML_OUTPUT = html
|
||||
HTML_FILE_EXTENSION = .html
|
||||
HTML_HEADER =
|
||||
HTML_FOOTER =
|
||||
HTML_STYLESHEET =
|
||||
HTML_ALIGN_MEMBERS = YES
|
||||
GENERATE_HTMLHELP = NO
|
||||
CHM_FILE =
|
||||
HHC_LOCATION =
|
||||
GENERATE_CHI = NO
|
||||
BINARY_TOC = NO
|
||||
TOC_EXPAND = NO
|
||||
DISABLE_INDEX = NO
|
||||
ENUM_VALUES_PER_LINE = 4
|
||||
GENERATE_TREEVIEW = YES
|
||||
TREEVIEW_WIDTH = 200
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the LaTeX output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_LATEX = NO
|
||||
LATEX_OUTPUT = latex
|
||||
LATEX_CMD_NAME = latex
|
||||
MAKEINDEX_CMD_NAME = makeindex
|
||||
COMPACT_LATEX = NO
|
||||
PAPER_TYPE = a4wide
|
||||
EXTRA_PACKAGES =
|
||||
LATEX_HEADER =
|
||||
PDF_HYPERLINKS = NO
|
||||
USE_PDFLATEX = NO
|
||||
LATEX_BATCHMODE = NO
|
||||
LATEX_HIDE_INDICES = NO
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the RTF output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_RTF = NO
|
||||
RTF_OUTPUT = rtf
|
||||
COMPACT_RTF = YES
|
||||
RTF_HYPERLINKS = YES
|
||||
RTF_STYLESHEET_FILE =
|
||||
RTF_EXTENSIONS_FILE =
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the man page output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_MAN = NO
|
||||
MAN_OUTPUT = man
|
||||
MAN_EXTENSION = .3
|
||||
MAN_LINKS = NO
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the XML output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_XML = NO
|
||||
XML_OUTPUT = xml
|
||||
XML_SCHEMA =
|
||||
XML_DTD =
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options for the AutoGen Definitions output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_AUTOGEN_DEF = NO
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the Perl module output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_PERLMOD = NO
|
||||
PERLMOD_LATEX = NO
|
||||
PERLMOD_PRETTY = YES
|
||||
PERLMOD_MAKEVAR_PREFIX =
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the preprocessor
|
||||
#---------------------------------------------------------------------------
|
||||
ENABLE_PREPROCESSING = NO
|
||||
MACRO_EXPANSION = NO
|
||||
EXPAND_ONLY_PREDEF = NO
|
||||
SEARCH_INCLUDES = YES
|
||||
INCLUDE_PATH = ../include
|
||||
INCLUDE_FILE_PATTERNS = *.h
|
||||
PREDEFINED =
|
||||
EXPAND_AS_DEFINED =
|
||||
SKIP_FUNCTION_MACROS = YES
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration::addtions related to external references
|
||||
#---------------------------------------------------------------------------
|
||||
TAGFILES =
|
||||
GENERATE_TAGFILE =
|
||||
ALLEXTERNALS = NO
|
||||
EXTERNAL_GROUPS = YES
|
||||
PERL_PATH = /usr/bin/perl
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the dot tool
|
||||
#---------------------------------------------------------------------------
|
||||
CLASS_DIAGRAMS = YES
|
||||
HIDE_UNDOC_RELATIONS = NO
|
||||
HAVE_DOT = YES
|
||||
CLASS_GRAPH = YES
|
||||
COLLABORATION_GRAPH = YES
|
||||
UML_LOOK = NO
|
||||
TEMPLATE_RELATIONS = NO
|
||||
INCLUDE_GRAPH = YES
|
||||
INCLUDED_BY_GRAPH = YES
|
||||
CALL_GRAPH = YES
|
||||
GRAPHICAL_HIERARCHY = YES
|
||||
DOT_IMAGE_FORMAT = png
|
||||
DOT_PATH =
|
||||
DOTFILE_DIRS =
|
||||
MAX_DOT_GRAPH_WIDTH = 1024
|
||||
MAX_DOT_GRAPH_HEIGHT = 1024
|
||||
MAX_DOT_GRAPH_DEPTH = 0
|
||||
GENERATE_LEGEND = YES
|
||||
DOT_CLEANUP = YES
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration::addtions related to the search engine
|
||||
#---------------------------------------------------------------------------
|
||||
SEARCHENGINE = YES
|
@@ -1,13 +0,0 @@
|
||||
# $Id$
|
||||
#
|
||||
# ReactOS apps and tools makefile to generate Doxygen documentation
|
||||
#
|
||||
|
||||
|
||||
docu:
|
||||
doxygen Doxyfile
|
||||
|
||||
.PHONY: docu
|
||||
|
||||
|
||||
# EOF
|
@@ -1,162 +0,0 @@
|
||||
#
|
||||
# ReactOS system testsets makefile
|
||||
#
|
||||
|
||||
PATH_TO_TOP = ../..
|
||||
|
||||
include $(PATH_TO_TOP)/rules.mak
|
||||
|
||||
|
||||
# Testset applications
|
||||
TEST_SETS = loadlib
|
||||
|
||||
TEST_KERNEL32 =
|
||||
|
||||
TEST_MSVCRT =
|
||||
|
||||
TEST_COM =
|
||||
|
||||
TEST_SEH =
|
||||
|
||||
TEST_REGRESSIONS =
|
||||
|
||||
all: $(TEST_SETS) $(TEST_KERNEL32) $(TEST_MSVCRT) $(TEST_COM) $(TEST_SEH) $(TEST_REGRESSIONS)
|
||||
|
||||
depends:
|
||||
|
||||
implib: $(TEST_SETS:%=%_implib) \
|
||||
$(TEST_KERNEL32:%=%_implib) \
|
||||
$(TEST_MSVCRT:%=%_implib) \
|
||||
$(TEST_COM:%=%_implib) \
|
||||
$(TEST_SEH:%=%_implib) \
|
||||
$(TEST_REGRESSIONS:%=%_implib)
|
||||
|
||||
clean: $(TEST_SETS:%=%_clean) \
|
||||
$(TEST_KERNEL32:%=%_clean) \
|
||||
$(TEST_MSVCRT:%=%_clean) \
|
||||
$(TEST_COM:%=%_clean) \
|
||||
$(TEST_SEH:%=%_clean) \
|
||||
$(TEST_REGRESSIONS:%=%_clean)
|
||||
|
||||
install: $(TEST_SETS:%=%_install) \
|
||||
$(TEST_KERNEL32:%=%_install) \
|
||||
$(TEST_MSVCRT:%=%_install) \
|
||||
$(TEST_COM:%=%_install) \
|
||||
$(TEST_SEH:%=%_install) \
|
||||
$(TEST_REGRESSIONS:%=%_install)
|
||||
|
||||
.PHONY: all depends implib clean install
|
||||
|
||||
|
||||
#
|
||||
# Testset Applications
|
||||
#
|
||||
$(TEST_SETS): %:
|
||||
$(MAKE) -C $*
|
||||
|
||||
$(TEST_SETS:%=%_implib): %_implib:
|
||||
$(MAKE) -C $* implib
|
||||
|
||||
$(TEST_SETS:%=%_clean): %_clean:
|
||||
$(MAKE) -C $* clean
|
||||
|
||||
$(TEST_SETS:%=%_install): %_install:
|
||||
$(MAKE) -C $* install
|
||||
|
||||
.PHONY: $(TEST_SETS) $(TEST_SETS:%=%_implib) $(TEST_SETS:%=%_clean) $(TEST_SETS:%=%_install)
|
||||
|
||||
|
||||
#
|
||||
# Kernel32 Test Applications
|
||||
#
|
||||
$(TEST_KERNEL32): %:
|
||||
$(MAKE) -C kernel32/$*
|
||||
|
||||
$(TEST_KERNEL32:%=%_implib): %_implib:
|
||||
$(MAKE) -C kernel32/$* implib
|
||||
|
||||
$(TEST_KERNEL32:%=%_clean): %_clean:
|
||||
$(MAKE) -C kernel32/$* clean
|
||||
|
||||
$(TEST_KERNEL32:%=%_install): %_install:
|
||||
$(MAKE) -C kernel32/$* install
|
||||
|
||||
.PHONY: $(TEST_KERNEL32) $(TEST_KERNEL32:%=%_implib) $(TEST_KERNEL32:%=%_clean) $(TEST_KERNEL32:%=%_install)
|
||||
|
||||
|
||||
#
|
||||
# msvcrt Test Applications
|
||||
#
|
||||
$(TEST_MSVCRT): %:
|
||||
$(MAKE) -C msvcrt/$*
|
||||
|
||||
$(TEST_MSVCRT:%=%_implib): %_implib:
|
||||
$(MAKE) -C msvcrt/$* implib
|
||||
|
||||
$(TEST_MSVCRT:%=%_clean): %_clean:
|
||||
$(MAKE) -C msvcrt/$* clean
|
||||
|
||||
$(TEST_MSVCRT:%=%_install): %_install:
|
||||
$(MAKE) -C msvcrt/$* install
|
||||
|
||||
.PHONY: $(TEST_MSVCRT) $(TEST_MSVCRT:%=%_implib) $(TEST_MSVCRT:%=%_clean) $(TEST_MSVCRT:%=%_install)
|
||||
|
||||
|
||||
#
|
||||
# COM Test Applications
|
||||
#
|
||||
$(TEST_COM): %:
|
||||
$(MAKE) -C com/$*
|
||||
|
||||
$(TEST_COM:%=%_implib): %_implib:
|
||||
$(MAKE) -C com/$* implib
|
||||
|
||||
$(TEST_COM:%=%_clean): %_clean:
|
||||
$(MAKE) -C com/$* clean
|
||||
|
||||
$(TEST_COM:%=%_install): %_install:
|
||||
$(MAKE) -C com/$* install
|
||||
|
||||
.PHONY: $(TEST_COM) $(TEST_COM:%=%_implib) $(TEST_COM:%=%_clean) $(TEST_COM:%=%_install)
|
||||
|
||||
|
||||
#
|
||||
# SEH Test Applications
|
||||
#
|
||||
$(TEST_SEH): %:
|
||||
$(MAKE) -C seh/$*
|
||||
|
||||
$(TEST_SEH:%=%_implib): %_implib:
|
||||
$(MAKE) -C seh/$* implib
|
||||
|
||||
$(TEST_SEH:%=%_clean): %_clean:
|
||||
$(MAKE) -C seh/$* clean
|
||||
|
||||
$(TEST_SEH:%=%_install): %_install:
|
||||
$(MAKE) -C seh/$* install
|
||||
|
||||
.PHONY: $(TEST_SEH) $(TEST_SEH:%=%_implib) $(TEST_SEH:%=%_clean) $(TEST_SEH:%=%_install)
|
||||
|
||||
|
||||
#
|
||||
# Regression Test Applications
|
||||
#
|
||||
$(TEST_REGRESSIONS): %:
|
||||
$(MAKE) -C regres/$*
|
||||
|
||||
$(TEST_REGRESSIONS:%=%_implib): %_implib:
|
||||
$(MAKE) -C regres/$* implib
|
||||
|
||||
$(TEST_REGRESSIONS:%=%_clean): %_clean:
|
||||
$(MAKE) -C regres/$* clean
|
||||
|
||||
$(TEST_REGRESSIONS:%=%_install): %_install:
|
||||
$(MAKE) -C regres/$* install
|
||||
|
||||
.PHONY: $(TEST_REGRESSIONS) $(TEST_REGRESSIONS:%=%_implib) $(TEST_REGRESSIONS:%=%_clean) $(TEST_REGRESSIONS:%=%_install)
|
||||
|
||||
|
||||
etags:
|
||||
find . -name "*.[ch]" -print | etags --language=c -
|
||||
|
||||
# EOF
|
@@ -1,223 +0,0 @@
|
||||
/*
|
||||
* ReactOS test program -
|
||||
*
|
||||
* loadlib.c
|
||||
*
|
||||
* Copyright (C) 2002 Robert Dickenson <robd@reactos.org>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
#include <windows.h>
|
||||
#include "loadlib.h"
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <wchar.h>
|
||||
|
||||
#define APP_VERSION 1
|
||||
#define MAX_LIBS 25
|
||||
|
||||
#ifdef UNICODE
|
||||
#define TARGET "UNICODE"
|
||||
BOOL bUseAnsi = FALSE;
|
||||
#else
|
||||
#define TARGET "MBCS"
|
||||
BOOL bUseAnsi = TRUE;
|
||||
#endif
|
||||
BOOL verbose_flagged = FALSE;
|
||||
BOOL debug_flagged = FALSE;
|
||||
BOOL loop_flagged = FALSE;
|
||||
BOOL recursive_flagged = FALSE;
|
||||
|
||||
HANDLE OutputHandle;
|
||||
HANDLE InputHandle;
|
||||
|
||||
|
||||
void dprintf(char* fmt, ...)
|
||||
{
|
||||
va_list args;
|
||||
char buffer[255];
|
||||
|
||||
va_start(args, fmt);
|
||||
wvsprintfA(buffer, fmt, args);
|
||||
WriteConsoleA(OutputHandle, buffer, lstrlenA(buffer), NULL, NULL);
|
||||
va_end(args);
|
||||
}
|
||||
|
||||
long getinput(char* buf, int buflen)
|
||||
{
|
||||
DWORD result;
|
||||
|
||||
ReadConsoleA(InputHandle, buf, buflen, &result, NULL);
|
||||
return (long)result;
|
||||
}
|
||||
|
||||
DWORD ReportLastError(void)
|
||||
{
|
||||
DWORD dwError = GetLastError();
|
||||
if (dwError != ERROR_SUCCESS) {
|
||||
PSTR msg = NULL;
|
||||
if (FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM,
|
||||
0, dwError, MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT), (PSTR)&msg, 0, NULL)) {
|
||||
if (msg != NULL) {
|
||||
dprintf("ReportLastError() %d - %s\n", dwError, msg);
|
||||
} else {
|
||||
dprintf("ERROR: ReportLastError() %d - returned TRUE but with no msg string!\n", dwError);
|
||||
}
|
||||
} else {
|
||||
dprintf("ReportLastError() %d - unknown error\n", dwError);
|
||||
}
|
||||
if (msg != NULL) {
|
||||
LocalFree(msg);
|
||||
}
|
||||
}
|
||||
return dwError;
|
||||
}
|
||||
|
||||
const char* appName(const char* argv0)
|
||||
{
|
||||
const char* name;
|
||||
|
||||
name = (const char*)strrchr(argv0, '\\');
|
||||
if (name != NULL)
|
||||
return name + 1;
|
||||
return argv0;
|
||||
}
|
||||
|
||||
int usage(const char* appName)
|
||||
{
|
||||
dprintf("USAGE: %s libname [libname ...] [unicode]|[ansi] [loop][recurse]\n", appName);
|
||||
dprintf("\tWhere libname(s) is one or more libraries to load.\n");
|
||||
dprintf("\t[unicode] - perform tests using UNICODE api calls\n");
|
||||
dprintf("\t[ansi] - perform tests using ANSI api calls\n");
|
||||
dprintf("\t default is %s\n", TARGET);
|
||||
dprintf("\t[loop] - run test process in continuous loop\n");
|
||||
dprintf("\t[recurse] - load libraries recursively rather than sequentually\n");
|
||||
dprintf("\t[debug] - enable debug mode (unused)\n");
|
||||
dprintf("\t[verbose] - enable verbose output (unused)\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
DWORD LoadLibraryList(char** libnames, int counter, BOOL bUseAnsi)
|
||||
{
|
||||
HMODULE hModule;
|
||||
|
||||
dprintf("Attempting to LoadLibrary");
|
||||
if (bUseAnsi) {
|
||||
dprintf("A(%s) - ", *libnames);
|
||||
hModule = LoadLibraryA(*libnames);
|
||||
} else {
|
||||
int len;
|
||||
wchar_t libnameW[500];
|
||||
len = mbstowcs(libnameW, *libnames, strlen(*libnames));
|
||||
if (len) {
|
||||
libnameW[len] = L'\0';
|
||||
dprintf("W(%S) - ", libnameW);
|
||||
hModule = LoadLibraryW(libnameW);
|
||||
} else {
|
||||
return ERROR_INVALID_PARAMETER;
|
||||
}
|
||||
}
|
||||
if (hModule == NULL) {
|
||||
dprintf("\nERROR: failed to obtain handle to module %s - %x\n", *libnames, hModule);
|
||||
return ReportLastError();
|
||||
}
|
||||
dprintf("%x\n", hModule);
|
||||
|
||||
if (counter--) {
|
||||
LoadLibraryList(++libnames, counter, bUseAnsi);
|
||||
}
|
||||
|
||||
if (!FreeLibrary(hModule)) {
|
||||
dprintf("ERROR: failed to free module %s - %x\n", *libnames, hModule);
|
||||
return ReportLastError();
|
||||
} else {
|
||||
dprintf("FreeLibrary(%x) - successfull.\n", hModule);
|
||||
}
|
||||
return 0L;
|
||||
}
|
||||
|
||||
int __cdecl main(int argc, char* argv[])
|
||||
{
|
||||
char* libs[MAX_LIBS];
|
||||
int lib_count = 0;
|
||||
int result = 0;
|
||||
int i = 0;
|
||||
|
||||
AllocConsole();
|
||||
InputHandle = GetStdHandle(STD_INPUT_HANDLE);
|
||||
OutputHandle = GetStdHandle(STD_OUTPUT_HANDLE);
|
||||
|
||||
dprintf("%s application - build %03d (default: %s)\n", appName(argv[0]), APP_VERSION, TARGET);
|
||||
if (argc < 2) {
|
||||
/*return */usage(appName(argv[0]));
|
||||
}
|
||||
memset(libs, 0, sizeof(libs));
|
||||
for (i = 1; i < argc; i++) {
|
||||
if (lstrcmpiA(argv[i], "ansi") == 0) {
|
||||
bUseAnsi = TRUE;
|
||||
} else if (lstrcmpiA(argv[i], "unicode") == 0) {
|
||||
bUseAnsi = FALSE;
|
||||
} else if (lstrcmpiA(argv[i], "loop") == 0) {
|
||||
loop_flagged = 1;
|
||||
} else if (lstrcmpiA(argv[i], "recurse") == 0) {
|
||||
recursive_flagged = 1;
|
||||
} else if (lstrcmpiA(argv[i], "verbose") == 0) {
|
||||
verbose_flagged = 1;
|
||||
} else if (lstrcmpiA(argv[i], "debug") == 0) {
|
||||
debug_flagged = 1;
|
||||
} else {
|
||||
if (lib_count < MAX_LIBS) {
|
||||
libs[lib_count] = argv[i];
|
||||
++lib_count;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (lib_count) {
|
||||
do {
|
||||
if (recursive_flagged) {
|
||||
result = LoadLibraryList(libs, lib_count - 1, bUseAnsi);
|
||||
} else {
|
||||
for (i = 0; i < lib_count; i++) {
|
||||
result = LoadLibraryList(&libs[i], 0, bUseAnsi);
|
||||
//if (result != 0) break;
|
||||
}
|
||||
}
|
||||
} while (loop_flagged);
|
||||
} else {
|
||||
int len;
|
||||
char buffer[500];
|
||||
do {
|
||||
dprintf("\nEnter library name to attempt loading: ");
|
||||
len = getinput(buffer, sizeof(buffer) - 1);
|
||||
if (len > 2) {
|
||||
char* buf = buffer;
|
||||
buffer[len-2] = '\0';
|
||||
result = LoadLibraryList(&buf, 0, bUseAnsi);
|
||||
} else break;
|
||||
} while (!result && len);
|
||||
}
|
||||
dprintf("finished\n");
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
#ifdef _NOCRT
|
||||
char* args[] = { "loadlib.exe", "advapi32.dll", "user32.dll", "recurse"};
|
||||
int __cdecl mainCRTStartup(void)
|
||||
{
|
||||
return main(3, args);
|
||||
}
|
||||
#endif /*__GNUC__*/
|
@@ -1,45 +0,0 @@
|
||||
/*
|
||||
* ReactOS test program -
|
||||
*
|
||||
* loadlib.h
|
||||
*
|
||||
* Copyright (C) 2002 Robert Dickenson <robd@reactos.org>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
#ifndef __LOADLIB_H__
|
||||
#define __LOADLIB_H__
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
extern BOOL verbose_flagged;
|
||||
extern BOOL debug_flagged;
|
||||
extern BOOL loop_flagged;
|
||||
extern BOOL recursive_flagged;
|
||||
|
||||
DWORD ReportLastError(void);
|
||||
long getinput(char* Buffer, int buflen);
|
||||
void dprintf(char* fmt, ...);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
};
|
||||
#endif
|
||||
|
||||
#endif // __LOADLIB_H__
|
@@ -1,24 +0,0 @@
|
||||
#
|
||||
# $Id: makefile,v 1.0
|
||||
|
||||
PATH_TO_TOP = ../../..
|
||||
|
||||
TARGET_NORC = yes
|
||||
|
||||
TARGET_TYPE = program
|
||||
|
||||
TARGET_APPTYPE = console
|
||||
|
||||
TARGET_NAME = loadlib
|
||||
|
||||
TARGET_CFLAGS = -Wall -Werror -D_USE_W32API -DUNICODE -D_UNICODE
|
||||
|
||||
TARGET_SDKLIBS = kernel32.a ntdll.a
|
||||
|
||||
TARGET_OBJECTS = $(TARGET_NAME).o
|
||||
|
||||
include $(PATH_TO_TOP)/rules.mak
|
||||
|
||||
include $(TOOLS_PATH)/helper.mk
|
||||
|
||||
# EOF
|
@@ -1,421 +0,0 @@
|
||||
/*
|
||||
* ReactOS test program -
|
||||
*
|
||||
* _tfileio.c
|
||||
*
|
||||
* Copyright (C) 2002 Robert Dickenson <robd@reactos.org>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#include <windows.h>
|
||||
#include <tchar.h>
|
||||
#include <wchar.h>
|
||||
#include <stdio.h>
|
||||
|
||||
|
||||
#ifdef UNICODE
|
||||
#define _tfopen _wfopen
|
||||
#define _tunlink _wunlink
|
||||
#define _TEOF WEOF
|
||||
#define _gettchar getwchar
|
||||
#define _puttchar putwchar
|
||||
#define _THEX_FORMAT _T("0x%04x ")
|
||||
#else /*UNICODE*/
|
||||
#define _tfopen fopen
|
||||
#define _tunlink _unlink
|
||||
#define _TEOF EOF
|
||||
#define _gettchar getchar
|
||||
#define _puttchar putchar
|
||||
#define _THEX_FORMAT "0x%02x "
|
||||
#endif /*UNICODE*/
|
||||
|
||||
|
||||
#define TEST_BUFFER_SIZE 200
|
||||
#define TEST_FILE_LINES 4
|
||||
|
||||
extern BOOL verbose_flagged;
|
||||
extern BOOL status_flagged;
|
||||
|
||||
static TCHAR test_buffer[TEST_BUFFER_SIZE];
|
||||
|
||||
static TCHAR dos_data[] = _T("line1: this is a bunch of readable text.\r\n")\
|
||||
_T("line2: some more printable text and punctuation !@#$%^&*()\r\n")\
|
||||
_T("line3: followed up with some numerals 1234567890\r\n")\
|
||||
_T("line4: done.\r\n");
|
||||
|
||||
static TCHAR nix_data[] = _T("line1: this is a bunch of readable text.\n")\
|
||||
_T("line2: some more printable text and punctuation !@#$%^&*()\n")\
|
||||
_T("line3: followed up with some numerals 1234567890\n")\
|
||||
_T("line4: done.\n");
|
||||
|
||||
#ifdef UNICODE
|
||||
#define TEST_B1_FILE_SIZE ((((sizeof(dos_data)/2)-1)+TEST_FILE_LINES)/2) // (166+4)/2=85
|
||||
#define TEST_B2_FILE_SIZE (((sizeof(dos_data)/2)-1)*2) // (166*2) =332
|
||||
#define TEST_B3_FILE_SIZE ((((sizeof(nix_data)/2)-1)+TEST_FILE_LINES)/2) // (162+4)/2=83
|
||||
#define TEST_B4_FILE_SIZE (((sizeof(nix_data)/2)-1)*2) // (162*2) =324
|
||||
#else /*UNICODE*/
|
||||
#define TEST_B1_FILE_SIZE (sizeof(dos_data)-1+TEST_FILE_LINES) // (166+4)=170
|
||||
#define TEST_B2_FILE_SIZE (sizeof(dos_data)-1-TEST_FILE_LINES) // (166-4)=162
|
||||
#define TEST_B3_FILE_SIZE (sizeof(nix_data)-1+TEST_FILE_LINES) // (162+4)=166
|
||||
#define TEST_B4_FILE_SIZE (sizeof(nix_data)-1) // (162) =162
|
||||
#endif /*UNICODE*/
|
||||
|
||||
|
||||
// result = create_test_file(file_name, _T("wb"), _T("rb"), file_data);
|
||||
|
||||
static BOOL test_file_truncate(TCHAR* file_name)
|
||||
{
|
||||
BOOL result = FALSE;
|
||||
int count = -1;
|
||||
int error_code;
|
||||
TCHAR ch;
|
||||
TCHAR* file_data = _T("this file should have been truncated to zero bytes...");
|
||||
FILE *file = _tfopen(file_name, _T("wb"));
|
||||
|
||||
if (verbose_flagged) {
|
||||
_tprintf(_T("test_file_truncate(\"%s\")\n"), file_name);
|
||||
}
|
||||
|
||||
if (file != NULL) {
|
||||
if (_fputts(file_data, file) != _TEOF) {
|
||||
} else {
|
||||
_tprintf(_T("ERROR: failed to write data to file \"%s\"\n"), file_name);
|
||||
_tprintf(_T("ERROR: ferror returned %d\n"), ferror(file));
|
||||
}
|
||||
fclose(file);
|
||||
} else {
|
||||
_tprintf(_T("ERROR: failed to open/create file \"%s\" for output\n"), file_name);
|
||||
_tprintf(_T("ERROR: ferror returned %d\n"), ferror(file));
|
||||
}
|
||||
|
||||
file = _tfopen(file_name, _T("wb"));
|
||||
if (file != NULL) {
|
||||
error_code = ferror(file);
|
||||
if (error_code) {
|
||||
_tprintf(_T("ERROR: (%s) ferror returned %d\n"), file_name, error_code);
|
||||
}
|
||||
fclose(file);
|
||||
} else {
|
||||
_tprintf(_T("ERROR: (%s) failed to open file for truncating\n"), file_name);
|
||||
}
|
||||
|
||||
file = _tfopen(file_name, _T("rb"));
|
||||
if (file != NULL) {
|
||||
count = 0;
|
||||
while ((ch = _fgettc(file)) != _TEOF) {
|
||||
if (verbose_flagged) {
|
||||
_tprintf(_THEX_FORMAT, ch);
|
||||
}
|
||||
++count;
|
||||
}
|
||||
error_code = ferror(file);
|
||||
if (error_code) {
|
||||
_tprintf(_T("ERROR: (%s) ferror returned %d after reading\n"), file_name, error_code);
|
||||
perror("Read error");
|
||||
}
|
||||
fclose(file);
|
||||
} else {
|
||||
_tprintf(_T("ERROR: (%s) failed to open file for reading\n"), file_name);
|
||||
}
|
||||
if (count) {
|
||||
result = TRUE;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
static BOOL create_output_file(TCHAR* file_name, TCHAR* file_mode, TCHAR* file_data)
|
||||
{
|
||||
BOOL result = FALSE;
|
||||
FILE *file = _tfopen(file_name, file_mode);
|
||||
if (file != NULL) {
|
||||
if (_fputts(file_data, file) != _TEOF) {
|
||||
result = TRUE;
|
||||
} else {
|
||||
_tprintf(_T("ERROR: failed to write data to file \"%s\"\n"), file_name);
|
||||
_tprintf(_T("ERROR: ferror returned %d\n"), ferror(file));
|
||||
}
|
||||
fclose(file);
|
||||
} else {
|
||||
_tprintf(_T("ERROR: failed to open/create file \"%s\" for output\n"), file_name);
|
||||
_tprintf(_T("ERROR: ferror returned %d\n"), ferror(file));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
static BOOL verify_output_file(TCHAR* file_name, TCHAR* file_mode, TCHAR* file_data)
|
||||
{
|
||||
int error_code;
|
||||
int offset = 0;
|
||||
int line_num = 0;
|
||||
BOOL result = FALSE;
|
||||
BOOL error_flagged = FALSE;
|
||||
FILE* file = _tfopen(file_name, file_mode);
|
||||
if (file == NULL) {
|
||||
_tprintf(_T("ERROR: (%s) Can't open file for reading\n"), file_name);
|
||||
_tprintf(_T("ERROR: ferror returned %d\n"), ferror(file));
|
||||
return FALSE;
|
||||
} else if (status_flagged) {
|
||||
_tprintf(_T("STATUS: (%s) opened file for reading\n"), file_name);
|
||||
}
|
||||
while (_fgetts(test_buffer, TEST_BUFFER_SIZE, file)) {
|
||||
int length = _tcslen(test_buffer);
|
||||
int req_len = _tcschr(file_data+offset, _T('\n')) - (file_data+offset) + 1;
|
||||
|
||||
++line_num;
|
||||
if (length > req_len) {
|
||||
_tprintf(_T("ERROR: read excess bytes from line %d, length %d, but expected %d\n"), line_num, length, req_len);
|
||||
error_flagged = TRUE;
|
||||
break;
|
||||
}
|
||||
if (length < req_len) {
|
||||
_tprintf(_T("ERROR: read to few bytes from line %d, length %d, but expected %d\n"), line_num, length, req_len);
|
||||
error_flagged = TRUE;
|
||||
break;
|
||||
}
|
||||
if (status_flagged) {
|
||||
_tprintf(_T("STATUS: Verifying %d bytes read from line %d\n"), length, line_num);
|
||||
}
|
||||
if (_tcsncmp(test_buffer, file_data+offset, length - 1) == 0) {
|
||||
result = TRUE;
|
||||
} else {
|
||||
if (status_flagged) {
|
||||
int i;
|
||||
_tprintf(_T("WARNING: (%s) failed to verify file\n"), file_name);
|
||||
for (i = 0; i < length; i++) {
|
||||
if (file_data[offset+i] != test_buffer[i]) {
|
||||
_tprintf(_T("line %d, offset %d expected: 0x%04x found: 0x%04x\n"), line_num, i, (int)file_data[offset+i], (int)test_buffer[i]);
|
||||
}
|
||||
}
|
||||
_tprintf(_T("\n"));
|
||||
} else {
|
||||
error_flagged = TRUE;
|
||||
}
|
||||
}
|
||||
offset += length;
|
||||
}
|
||||
error_code = ferror(file);
|
||||
if (error_code) {
|
||||
_tprintf(_T("ERROR: (%s) ferror returned %d after reading\n"), file_name, error_code);
|
||||
perror("Read error");
|
||||
}
|
||||
if (!line_num) {
|
||||
_tprintf(_T("ERROR: (%s) failed to read from file\n"), file_name);
|
||||
}
|
||||
if (error_flagged == TRUE) {
|
||||
_tprintf(_T("ERROR: (%s) failed to verify file\n"), file_name);
|
||||
result = FALSE;
|
||||
}
|
||||
fclose(file);
|
||||
return result;
|
||||
}
|
||||
|
||||
static int create_test_file(TCHAR* file_name, TCHAR* write_mode, TCHAR* read_mode, TCHAR* file_data)
|
||||
{
|
||||
if (status_flagged) {
|
||||
_tprintf(_T("STATUS: Attempting to create output file %s\n"), file_name);
|
||||
}
|
||||
if (create_output_file(file_name, write_mode, file_data)) {
|
||||
if (status_flagged) {
|
||||
_tprintf(_T("STATUS: Attempting to verify output file %s\n"), file_name);
|
||||
}
|
||||
if (verify_output_file(file_name, read_mode, file_data)) {
|
||||
if (status_flagged) {
|
||||
_tprintf(_T("SUCCESS: %s verified ok\n"), file_name);
|
||||
}
|
||||
} else {
|
||||
//_tprintf(_T("ERROR: failed to verify file %s\n"), file_name);
|
||||
return 2;
|
||||
}
|
||||
} else {
|
||||
_tprintf(_T("ERROR: failed to create file %s\n"), file_name);
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int check_file_size(TCHAR* file_name, TCHAR* file_mode, int expected)
|
||||
{
|
||||
int count = 0;
|
||||
FILE* file;
|
||||
TCHAR ch;
|
||||
int error_code;
|
||||
|
||||
if (status_flagged) {
|
||||
//_tprintf(_T("STATUS: (%s) checking for %d bytes in %s mode\n"), file_name, expected, _tcschr(file_mode, _T('b')) ? _T("binary") : _T("text"));
|
||||
_tprintf(_T("STATUS: (%s) checking for %d bytes with mode %s\n"), file_name, expected, file_mode);
|
||||
}
|
||||
file = _tfopen(file_name, file_mode);
|
||||
if (file == NULL) {
|
||||
_tprintf(_T("ERROR: (%s) failed to open file for reading\n"), file_name);
|
||||
return 1;
|
||||
}
|
||||
while ((ch = _fgettc(file)) != _TEOF) {
|
||||
if (verbose_flagged) {
|
||||
_tprintf(_THEX_FORMAT, ch);
|
||||
}
|
||||
++count;
|
||||
}
|
||||
error_code = ferror(file);
|
||||
if (error_code) {
|
||||
_tprintf(_T("ERROR: (%s) ferror returned %d after reading\n"), file_name, error_code);
|
||||
perror("Read error");
|
||||
}
|
||||
|
||||
if (verbose_flagged) {
|
||||
// _puttc(_T('\n'), stdout);
|
||||
}
|
||||
fclose(file);
|
||||
if (count == expected) {
|
||||
if (status_flagged) {
|
||||
_tprintf(_T("PASSED: (%s) read %d bytes\n"), file_name, count);
|
||||
}
|
||||
} else {
|
||||
_tprintf(_T("FAILED: (%s) read %d bytes but expected %d using mode \"%s\"\n"), file_name, count, expected, file_mode);
|
||||
}
|
||||
return (count == expected) ? 0 : -1;
|
||||
}
|
||||
|
||||
static int test_console_io(void)
|
||||
{
|
||||
TCHAR buffer[81];
|
||||
TCHAR ch;
|
||||
int i, j;
|
||||
|
||||
_tprintf(_T("Enter a line for echoing:\n"));
|
||||
|
||||
//for (i = 0; (i < 80) && ((ch = _gettchar()) != _TEOF) && (ch != _T('\n')); i++) {
|
||||
for (i = 0; (i < 80) && ((ch = _gettc(stdin)) != _TEOF) && (ch != _T('\n')); i++) {
|
||||
buffer[i] = (TCHAR)ch;
|
||||
}
|
||||
buffer[i] = _T('\0');
|
||||
for (j = 0; j < i; j++) {
|
||||
_puttc(buffer[j], stdout);
|
||||
}
|
||||
_puttc(_T('\n'), stdout);
|
||||
_tprintf(_T("%s\n"), buffer);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int test_console_getchar(void)
|
||||
{
|
||||
int result = 0;
|
||||
TCHAR ch;
|
||||
|
||||
_tprintf(_T("Enter lines for dumping or <ctrl-z><nl> to finish:\n"));
|
||||
|
||||
//while ((ch = _gettchar()) != _TEOF) {
|
||||
while ((ch = _gettc(stdin)) != _TEOF) {
|
||||
_tprintf(_THEX_FORMAT, ch);
|
||||
//printf("0x%04x ", ch);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
static int test_console_putch(void)
|
||||
{
|
||||
int result = 0;
|
||||
|
||||
_putch('1');
|
||||
_putch('@');
|
||||
_putch('3');
|
||||
_putch(':');
|
||||
_putch('\n');
|
||||
_putch('a');
|
||||
_putch('B');
|
||||
_putch('c');
|
||||
_putch(':');
|
||||
_putch('\n');
|
||||
return result;
|
||||
}
|
||||
|
||||
static int test_unlink_files(void)
|
||||
{
|
||||
int result = 0;
|
||||
|
||||
//printf("sizeof dos_data: %d\n", sizeof(dos_data));
|
||||
//printf("sizeof nix_data: %d\n", sizeof(nix_data));
|
||||
|
||||
result |= _tunlink(_T("binary.dos"));
|
||||
result |= _tunlink(_T("binary.nix"));
|
||||
result |= _tunlink(_T("text.dos"));
|
||||
result |= _tunlink(_T("text.nix"));
|
||||
return result;
|
||||
}
|
||||
|
||||
static int test_text_fileio(TCHAR* file_name, TCHAR* file_data, int tsize, int bsize)
|
||||
{
|
||||
int result = 0;
|
||||
|
||||
result = create_test_file(file_name, _T("w"), _T("r"), file_data);
|
||||
result = check_file_size(file_name, _T("r"), tsize);
|
||||
result = check_file_size(file_name, _T("rb"), bsize);
|
||||
return result;
|
||||
}
|
||||
|
||||
static int test_binary_fileio(TCHAR* file_name, TCHAR* file_data, int tsize, int bsize)
|
||||
{
|
||||
int result = 0;
|
||||
|
||||
result = create_test_file(file_name, _T("wb"), _T("rb"), file_data);
|
||||
result = check_file_size(file_name, _T("r"), tsize);
|
||||
result = check_file_size(file_name, _T("rb"), bsize);
|
||||
return result;
|
||||
}
|
||||
|
||||
static int test_files(int test_num, char* type)
|
||||
{
|
||||
int result = 0;
|
||||
|
||||
printf("performing test: %d (%s)\n", test_num, type);
|
||||
|
||||
|
||||
if (test_file_truncate(_T("zerosize.foo"))) {
|
||||
printf("System unable to truncate files yet, unlinking:\n");
|
||||
test_unlink_files();
|
||||
}
|
||||
|
||||
switch (test_num) {
|
||||
case 1:
|
||||
result = test_text_fileio(_T("text.dos"), dos_data, 166, TEST_B1_FILE_SIZE);
|
||||
break;
|
||||
case 2:
|
||||
result = test_binary_fileio(_T("binary.dos"), dos_data, TEST_B2_FILE_SIZE, 166);
|
||||
break;
|
||||
case 3:
|
||||
result = test_text_fileio(_T("text.nix"), nix_data, 162, TEST_B3_FILE_SIZE);
|
||||
break;
|
||||
case 4:
|
||||
result = test_binary_fileio(_T("binary.nix"), nix_data, TEST_B4_FILE_SIZE, 162);
|
||||
break;
|
||||
case 5:
|
||||
result = test_console_io();
|
||||
break;
|
||||
case 6:
|
||||
result = test_console_getchar();
|
||||
break;
|
||||
case 7:
|
||||
result = test_console_putch();
|
||||
break;
|
||||
case -1:
|
||||
result = test_unlink_files();
|
||||
break;
|
||||
default:
|
||||
_tprintf(_T("no test number selected\n"));
|
||||
break;
|
||||
}
|
||||
return result;
|
||||
}
|
@@ -1,31 +0,0 @@
|
||||
/*
|
||||
* ReactOS test program -
|
||||
*
|
||||
* _fileio.c
|
||||
*
|
||||
* Copyright (C) 2002 Robert Dickenson <robd@reactos.org>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
#undef UNICODE
|
||||
#undef _UNICODE
|
||||
#include "_tfileio.c"
|
||||
|
||||
|
||||
int run_ansi_tests(int test_num)
|
||||
{
|
||||
return test_files(test_num, "ANSI");
|
||||
}
|
@@ -1,124 +0,0 @@
|
||||
/*
|
||||
* ReactOS test program -
|
||||
*
|
||||
* main.c
|
||||
*
|
||||
* Copyright (C) 2002 Robert Dickenson <robd@reactos.org>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#include <windows.h>
|
||||
#include <tchar.h>
|
||||
#include <wchar.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "main.h"
|
||||
|
||||
|
||||
#define VERSION 1
|
||||
|
||||
#ifdef UNICODE
|
||||
#define TARGET "UNICODE"
|
||||
#else
|
||||
#define TARGET "MBCS"
|
||||
#endif
|
||||
|
||||
BOOL verbose_flagged = 0;
|
||||
BOOL status_flagged = 0;
|
||||
|
||||
int usage(char* argv0)
|
||||
{
|
||||
printf("USAGE: %s test_id [unicode]|[ansi] [clean]|[status][verbose]\n", argv0);
|
||||
printf("\tWhere test_id is one of:\n");
|
||||
printf("\t0 - (default) regression mode, run tests 1-4 displaying failures only\n");
|
||||
printf("\t1 - Write DOS style eol data to file in text mode (text.dos)\n");
|
||||
printf("\t2 - Write NIX style eol data to file in binary mode (binary.dos)\n");
|
||||
printf("\t3 - Write DOS style eol data to file in text mode (text.nix)\n");
|
||||
printf("\t4 - Write NIX style eol data to file in binary mode (binary.nix)\n");
|
||||
printf("\t5 - Echo console line input\n");
|
||||
printf("\t6 - Dump console line input in hex format\n");
|
||||
printf("\t7 - The source code is your friend\n");
|
||||
printf("\t[unicode] - perform tests using UNICODE versions of library functions\n");
|
||||
printf("\t[ansi] - perform tests using ANSI versions of library functions\n");
|
||||
printf("\t If neither unicode or ansi is specified build default is used\n");
|
||||
printf("\t[clean] - delete all temporary test output files\n");
|
||||
printf("\t[status] - enable extra status display while running\n");
|
||||
printf("\t[verbose] - enable verbose output when running\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
int __cdecl main(int argc, char* argv[])
|
||||
{
|
||||
int test_num = 0;
|
||||
int version = 0;
|
||||
int result = 0;
|
||||
int i = 0;
|
||||
|
||||
printf("%s test application - build %03d (default: %s)\n", argv[0], VERSION, TARGET);
|
||||
if (argc < 2) {
|
||||
return usage(argv[0]);
|
||||
}
|
||||
for (i = 1; i < argc; i++) {
|
||||
if (strstr(argv[i], "ansi") || strstr(argv[i], "ANSI")) {
|
||||
version = 1;
|
||||
} else if (strstr(argv[i], "unicode") || strstr(argv[i], "UNICODE")) {
|
||||
version = 2;
|
||||
} else if (strstr(argv[i], "clean") || strstr(argv[i], "CLEAN")) {
|
||||
test_num = -1;
|
||||
} else if (strstr(argv[i], "verbose") || strstr(argv[i], "VERBOSE")) {
|
||||
verbose_flagged = 1;
|
||||
} else if (strstr(argv[i], "status") || strstr(argv[i], "STATUS")) {
|
||||
status_flagged = 1;
|
||||
} else {
|
||||
test_num = atoi(argv[1]);
|
||||
//if (test_num < 0
|
||||
}
|
||||
}
|
||||
for (i = test_num; i <= test_num; i++) {
|
||||
if (!test_num) {
|
||||
test_num = 4;
|
||||
i = 1;
|
||||
}
|
||||
switch (version) {
|
||||
case 1:
|
||||
result = run_ansi_tests(i);
|
||||
break;
|
||||
case 2:
|
||||
result = run_unicode_tests(i);
|
||||
break;
|
||||
default:
|
||||
result = run_ansi_tests(i);
|
||||
result = run_unicode_tests(i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
printf("finished\n");
|
||||
return result;
|
||||
}
|
||||
|
||||
#ifndef __GNUC__
|
||||
|
||||
char* args[] = { "fileio.exe", "0", "unicode", "verbose"};
|
||||
|
||||
int __cdecl mainCRTStartup(void)
|
||||
{
|
||||
main(2, args);
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif /*__GNUC__*/
|
@@ -1,42 +0,0 @@
|
||||
/*
|
||||
* ReactOS test program -
|
||||
*
|
||||
* main.h
|
||||
*
|
||||
* Copyright (C) 2002 Robert Dickenson <robd@reactos.org>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
#ifndef __MAIN_H__
|
||||
#define __MAIN_H__
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
int app_main(int argc, char* argv[]);
|
||||
DWORD GetInput(char* Buffer, int buflen);
|
||||
|
||||
int test_ansi_files(int test_num);
|
||||
int test_unicode_files(int test_num);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
};
|
||||
#endif
|
||||
|
||||
#endif // __MAIN_H__
|
@@ -1,27 +0,0 @@
|
||||
#
|
||||
# $Id: makefile,v 1.0
|
||||
|
||||
PATH_TO_TOP = ../../../..
|
||||
|
||||
TEST_ROOT = $(PATH_TO_TOP)/apps/testsets/test
|
||||
|
||||
TARGET_NORC = yes
|
||||
|
||||
TARGET_TYPE = program
|
||||
|
||||
TARGET_APPTYPE = console
|
||||
|
||||
TARGET_NAME = fileio
|
||||
|
||||
#TARGET_CFLAGS = -I$(TEST_ROOT) -DDBG -DUNICODE -D_UNICODE
|
||||
TARGET_CFLAGS = -I$(TEST_ROOT) -DDBG
|
||||
|
||||
TARGET_SDKLIBS = ntdll.a kernel32.a
|
||||
|
||||
TARGET_OBJECTS = $(TARGET_NAME).o wfileio.o main.o
|
||||
|
||||
include $(PATH_TO_TOP)/rules.mak
|
||||
|
||||
include $(TOOLS_PATH)/helper.mk
|
||||
|
||||
# EOF
|
@@ -1,31 +0,0 @@
|
||||
/*
|
||||
* ReactOS test program -
|
||||
*
|
||||
* wfileio.c
|
||||
*
|
||||
* Copyright (C) 2002 Robert Dickenson <robd@reactos.org>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
#define UNICODE
|
||||
#define _UNICODE
|
||||
#include "_tfileio.c"
|
||||
|
||||
|
||||
int run_unicode_tests(int test_num)
|
||||
{
|
||||
return test_files(test_num, "UNICODE");
|
||||
}
|
@@ -1,71 +0,0 @@
|
||||
#
|
||||
# ReactOS system utilities makefile
|
||||
#
|
||||
|
||||
PATH_TO_TOP = ../..
|
||||
|
||||
include $(PATH_TO_TOP)/rules.mak
|
||||
|
||||
|
||||
# Console system utilities
|
||||
# cabman cat net objdir partinfo pice ps sc stats
|
||||
UTIL_APPS = cat objdir partinfo pnpdump sc shutdown stats tickcount ps
|
||||
|
||||
UTIL_NET_APPS = arp finger ftp ipconfig netstat ping route telnet whois
|
||||
|
||||
|
||||
all: $(UTIL_APPS) $(UTIL_NET_APPS)
|
||||
|
||||
depends:
|
||||
|
||||
implib: $(UTIL_APPS:%=%_implib) \
|
||||
$(UTIL_NET_APPS:%=%_implib)
|
||||
|
||||
clean: $(UTIL_APPS:%=%_clean) \
|
||||
$(UTIL_NET_APPS:%=%_clean)
|
||||
|
||||
install: $(UTIL_APPS:%=%_install) \
|
||||
$(UTIL_NET_APPS:%=%_install)
|
||||
|
||||
.PHONY: all depends implib clean install
|
||||
|
||||
|
||||
#
|
||||
# Utility Applications
|
||||
#
|
||||
$(UTIL_APPS): %:
|
||||
$(MAKE) -C $*
|
||||
|
||||
$(UTIL_APPS:%=%_implib): %_implib:
|
||||
$(MAKE) -C $* implib
|
||||
|
||||
$(UTIL_APPS:%=%_clean): %_clean:
|
||||
$(MAKE) -C $* clean
|
||||
|
||||
$(UTIL_APPS:%=%_install): %_install:
|
||||
$(MAKE) -C $* install
|
||||
|
||||
.PHONY: $(UTIL_APPS) $(UTIL_APPS:%=%_implib) $(UTIL_APPS:%=%_clean) $(UTIL_APPS:%=%_install)
|
||||
|
||||
#
|
||||
# GUI Utility Applications
|
||||
#
|
||||
$(UTIL_NET_APPS): %:
|
||||
$(MAKE) -C net/$*
|
||||
|
||||
$(UTIL_NET_APPS:%=%_implib): %_implib:
|
||||
$(MAKE) -C net/$* implib
|
||||
|
||||
$(UTIL_NET_APPS:%=%_clean): %_clean:
|
||||
$(MAKE) -C net/$* clean
|
||||
|
||||
$(UTIL_NET_APPS:%=%_install): %_install:
|
||||
$(MAKE) -C net/$* install
|
||||
|
||||
.PHONY: $(UTIL_NET_APPS) $(UTIL_NET_APPS:%=%_implib) $(UTIL_NET_APPS:%=%_clean) $(UTIL_NET_APPS:%=%_install)
|
||||
|
||||
|
||||
etags:
|
||||
find . -name "*.[ch]" -print | etags --language=c -
|
||||
|
||||
# EOF
|
@@ -1,21 +0,0 @@
|
||||
PATH_TO_TOP = ../../..
|
||||
|
||||
TARGET_NORC = yes
|
||||
|
||||
TARGET_TYPE = program
|
||||
|
||||
TARGET_APPTYPE = console
|
||||
|
||||
TARGET_NAME = binpatch
|
||||
|
||||
TARGET_SDKLIBS =
|
||||
|
||||
TARGET_OBJECTS = patch.o
|
||||
|
||||
TARGET_CFLAGS += -Wall -Werror
|
||||
|
||||
include $(PATH_TO_TOP)/rules.mak
|
||||
|
||||
include $(TOOLS_PATH)/helper.mk
|
||||
|
||||
# EOF
|
@@ -1,615 +0,0 @@
|
||||
#include <conio.h>
|
||||
#include <io.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
/** DEFINES *******************************************************************/
|
||||
|
||||
#define PATCH_BUFFER_SIZE 4096 /* Maximum size of a patch */
|
||||
#define PATCH_BUFFER_MAGIC "\xde\xad\xbe\xef MaGiC MaRk "
|
||||
#define SIZEOF_PATCH_BUFFER_MAGIC (sizeof (PATCH_BUFFER_MAGIC) - 1)
|
||||
|
||||
/** TYPES *********************************************************************/
|
||||
|
||||
typedef struct _PatchedByte
|
||||
{
|
||||
int offset; /*!< File offset of the patched byte. */
|
||||
unsigned char expected; /*!< Expected (original) value of the byte. */
|
||||
unsigned char patched; /*!< Patched (new) value for the byte. */
|
||||
} PatchedByte;
|
||||
|
||||
typedef struct _PatchedFile
|
||||
{
|
||||
const char *name; /*!< Name of the file to be patched. */
|
||||
int fileSize; /*!< Size of the file in bytes. */
|
||||
int patchCount; /*!< Number of patches for the file. */
|
||||
PatchedByte *patches; /*!< Patches for the file. */
|
||||
} PatchedFile;
|
||||
|
||||
typedef struct _Patch
|
||||
{
|
||||
const char *name; /*!< Name of the patch. */
|
||||
int fileCount; /*!< Number of files in the patch. */
|
||||
PatchedFile *files; /*!< Files for the patch. */
|
||||
} Patch;
|
||||
|
||||
/** FUNCTION PROTOTYPES *******************************************************/
|
||||
|
||||
static void printUsage();
|
||||
|
||||
/** GLOBALS *******************************************************************/
|
||||
|
||||
static Patch m_patch = { NULL, 0, NULL };
|
||||
static int m_argc = 0;
|
||||
static char **m_argv = NULL;
|
||||
|
||||
/* patch buffer where we put the patch info into */
|
||||
static unsigned char m_patchBuffer[SIZEOF_PATCH_BUFFER_MAGIC + PATCH_BUFFER_SIZE] =
|
||||
PATCH_BUFFER_MAGIC;
|
||||
|
||||
/** HELPER FUNCTIONS **********************************************************/
|
||||
|
||||
static void *
|
||||
loadFile(const char *fileName, int *fileSize_)
|
||||
{
|
||||
FILE *f;
|
||||
struct stat sb;
|
||||
int fileSize;
|
||||
void *p;
|
||||
|
||||
/* Open the file */
|
||||
f = fopen(fileName, "rb");
|
||||
if (f == NULL)
|
||||
{
|
||||
printf("Couldn't open file %s for reading!\n", fileName);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Get file size */
|
||||
if (fstat(fileno(f), &sb) < 0)
|
||||
{
|
||||
fclose(f);
|
||||
printf("Couldn't get size of file %s!\n", fileName);
|
||||
return NULL;
|
||||
}
|
||||
fileSize = sb.st_size;
|
||||
|
||||
/* Load file */
|
||||
p = malloc(fileSize);
|
||||
if (p == NULL)
|
||||
{
|
||||
fclose(f);
|
||||
printf("Couldn't allocate %d bytes for file %s!\n", fileSize, fileName);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (fread(p, fileSize, 1, f) != 1)
|
||||
{
|
||||
fclose(f);
|
||||
free(p);
|
||||
printf("Couldn't read file %s into memory!\n", fileName);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Close file */
|
||||
fclose(f);
|
||||
|
||||
*fileSize_ = fileSize;
|
||||
return p;
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
saveFile(const char *fileName, void *file, int fileSize)
|
||||
{
|
||||
FILE *f;
|
||||
|
||||
/* Open the file */
|
||||
f = fopen(fileName, "wb");
|
||||
if (f == NULL)
|
||||
{
|
||||
printf("Couldn't open file %s for writing!\n", fileName);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Write file */
|
||||
if (fwrite(file, fileSize, 1, f) != 1)
|
||||
{
|
||||
fclose(f);
|
||||
printf("Couldn't write file %s!\n", fileName);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Close file */
|
||||
fclose(f);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
compareFiles(
|
||||
PatchedFile *patchedFile,
|
||||
const char *originalFileName)
|
||||
{
|
||||
const char *patchedFileName = patchedFile->name;
|
||||
unsigned char *origChunk, *patchedChunk;
|
||||
int origSize, patchedSize, i, patchCount;
|
||||
PatchedByte *patches = NULL;
|
||||
int patchesArrayCount = 0;
|
||||
|
||||
/* Load both files */
|
||||
origChunk = loadFile(originalFileName, &origSize);
|
||||
if (origChunk == NULL)
|
||||
return -1;
|
||||
patchedChunk = loadFile(patchedFileName, &patchedSize);
|
||||
if (patchedChunk == NULL)
|
||||
{
|
||||
free(origChunk);
|
||||
return -1;
|
||||
}
|
||||
if (origSize != patchedSize)
|
||||
{
|
||||
free(origChunk);
|
||||
free(patchedChunk);
|
||||
printf("File size of %s and %s differs (%d != %d)\n",
|
||||
originalFileName, patchedFileName,
|
||||
origSize, patchedSize);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Compare the files and record any differences */
|
||||
printf("Comparing %s to %s", originalFileName, patchedFileName);
|
||||
for (i = 0, patchCount = 0; i < origSize; i++)
|
||||
{
|
||||
if (origChunk[i] != patchedChunk[i])
|
||||
{
|
||||
patchCount++;
|
||||
|
||||
/* Resize patches array if needed */
|
||||
if (patchesArrayCount < patchCount)
|
||||
{
|
||||
PatchedByte *newPatches;
|
||||
newPatches = realloc(patches, patchCount * sizeof (PatchedByte));
|
||||
if (newPatches == NULL)
|
||||
{
|
||||
if (patches != NULL)
|
||||
free(patches);
|
||||
free(origChunk);
|
||||
free(patchedChunk);
|
||||
printf("\nOut of memory (tried to allocated %d bytes)\n",
|
||||
patchCount * sizeof (PatchedByte));
|
||||
return -1;
|
||||
}
|
||||
patches = newPatches;
|
||||
}
|
||||
|
||||
/* Fill in patch info */
|
||||
patches[patchCount - 1].offset = i;
|
||||
patches[patchCount - 1].expected = origChunk[i];
|
||||
patches[patchCount - 1].patched = patchedChunk[i];
|
||||
}
|
||||
if ((i % (origSize / 40)) == 0)
|
||||
printf(".");
|
||||
}
|
||||
printf(" %d changed bytes found.\n", patchCount);
|
||||
|
||||
/* Unload the files */
|
||||
free(origChunk);
|
||||
free(patchedChunk);
|
||||
|
||||
/* Save patch info */
|
||||
patchedFile->fileSize = patchedSize;
|
||||
patchedFile->patchCount = patchCount;
|
||||
patchedFile->patches = patches;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
outputPatch(const char *outputFileName)
|
||||
{
|
||||
unsigned char *patchExe, *patchBuffer;
|
||||
int i, size, patchExeSize, patchSize, stringSize, stringOffset, patchOffset;
|
||||
Patch *patch;
|
||||
PatchedFile *files;
|
||||
|
||||
printf("Putting patch into %s...\n", outputFileName);
|
||||
|
||||
/* Calculate size of the patch */
|
||||
patchSize = sizeof (Patch) + sizeof (PatchedFile) * m_patch.fileCount;
|
||||
stringSize = strlen(m_patch.name) + 1;
|
||||
for (i = 0; i < m_patch.fileCount; i++)
|
||||
{
|
||||
stringSize += strlen(m_patch.files[i].name) + 1;
|
||||
patchSize += sizeof (PatchedByte) * m_patch.files[i].patchCount;
|
||||
}
|
||||
if ((stringSize + patchSize) > PATCH_BUFFER_SIZE)
|
||||
{
|
||||
printf("Patch is too big - %d bytes maximum, %d bytes needed\n",
|
||||
PATCH_BUFFER_SIZE, stringSize + patchSize);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Load patch.exe file into memory... */
|
||||
patchExe = loadFile(m_argv[0], &patchExeSize);
|
||||
if (patchExe == NULL)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Try to find the magic mark for the patch buffer */
|
||||
for (i = 0; i < (patchExeSize - SIZEOF_PATCH_BUFFER_MAGIC); i++)
|
||||
{
|
||||
if (memcmp(patchExe + i, m_patchBuffer, SIZEOF_PATCH_BUFFER_MAGIC) == 0)
|
||||
{
|
||||
patchBuffer = patchExe + i + SIZEOF_PATCH_BUFFER_MAGIC;
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!(i < (patchExeSize - SIZEOF_PATCH_BUFFER_MAGIC)))
|
||||
{
|
||||
free(patchExe);
|
||||
printf("Couldn't find patch buffer magic in file %s - this shouldn't happen!!!\n", m_argv[0]);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Pack patch together and replace string pointers by offsets */
|
||||
patch = (Patch *)patchBuffer;
|
||||
files = (PatchedFile *)(patchBuffer + sizeof (Patch));
|
||||
patchOffset = sizeof (Patch) + sizeof (PatchedFile) * m_patch.fileCount;
|
||||
stringOffset = patchSize;
|
||||
|
||||
patch->fileCount = m_patch.fileCount;
|
||||
patch->files = (PatchedFile *)sizeof (Patch);
|
||||
|
||||
patch->name = (const char *)stringOffset;
|
||||
strcpy(patchBuffer + stringOffset, m_patch.name);
|
||||
stringOffset += strlen(m_patch.name) + 1;
|
||||
|
||||
for (i = 0; i < m_patch.fileCount; i++)
|
||||
{
|
||||
files[i].fileSize = m_patch.files[i].fileSize;
|
||||
files[i].patchCount = m_patch.files[i].patchCount;
|
||||
|
||||
files[i].name = (const char *)stringOffset;
|
||||
strcpy(patchBuffer + stringOffset, m_patch.files[i].name);
|
||||
stringOffset += strlen(m_patch.files[i].name) + 1;
|
||||
|
||||
size = files[i].patchCount * sizeof (PatchedByte);
|
||||
files[i].patches = (PatchedByte *)patchOffset;
|
||||
memcpy(patchBuffer + patchOffset, m_patch.files[i].patches, size);
|
||||
patchOffset += size;
|
||||
}
|
||||
size = patchSize + stringSize;
|
||||
memset(patchBuffer + size, 0, PATCH_BUFFER_SIZE - size);
|
||||
|
||||
/* Save file */
|
||||
if (saveFile(outputFileName, patchExe, patchExeSize) < 0)
|
||||
{
|
||||
free(patchExe);
|
||||
return -1;
|
||||
}
|
||||
free(patchExe);
|
||||
|
||||
printf("Patch saved!\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
loadPatch()
|
||||
{
|
||||
char *p;
|
||||
Patch *patch;
|
||||
int i;
|
||||
|
||||
p = m_patchBuffer + SIZEOF_PATCH_BUFFER_MAGIC;
|
||||
patch = (Patch *)p;
|
||||
|
||||
if (patch->name == NULL)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
m_patch.name = p + (int)patch->name;
|
||||
m_patch.fileCount = patch->fileCount;
|
||||
m_patch.files = (PatchedFile *)(p + (int)patch->files);
|
||||
|
||||
for (i = 0; i < m_patch.fileCount; i++)
|
||||
{
|
||||
m_patch.files[i].name = p + (int)m_patch.files[i].name;
|
||||
m_patch.files[i].patches = (PatchedByte *)(p + (int)m_patch.files[i].patches);
|
||||
}
|
||||
|
||||
printf("Patch %s loaded...\n", m_patch.name);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/** MAIN FUNCTIONS ************************************************************/
|
||||
|
||||
static int
|
||||
createPatch()
|
||||
{
|
||||
int i, status;
|
||||
const char *outputFileName;
|
||||
|
||||
/* Check argument count */
|
||||
if (m_argc < 6 || (m_argc % 2) != 0)
|
||||
{
|
||||
printUsage();
|
||||
return -1;
|
||||
}
|
||||
|
||||
outputFileName = m_argv[3];
|
||||
m_patch.name = m_argv[2];
|
||||
|
||||
/* Allocate PatchedFiles array */
|
||||
m_patch.fileCount = (m_argc - 4) / 2;
|
||||
m_patch.files = malloc(m_patch.fileCount * sizeof (PatchedFile));
|
||||
if (m_patch.files == NULL)
|
||||
{
|
||||
printf("Out of memory!\n");
|
||||
return -1;
|
||||
}
|
||||
memset(m_patch.files, 0, m_patch.fileCount * sizeof (PatchedFile));
|
||||
|
||||
/* Compare original to patched files and fill m_patch.files array */
|
||||
for (i = 0; i < m_patch.fileCount; i++)
|
||||
{
|
||||
m_patch.files[i].name = m_argv[4 + (i * 2) + 1];
|
||||
status = compareFiles(m_patch.files + i, m_argv[4 + (i * 2) + 0]);
|
||||
if (status < 0)
|
||||
{
|
||||
for (i = 0; i < m_patch.fileCount; i++)
|
||||
{
|
||||
if (m_patch.files[i].patches != NULL)
|
||||
free(m_patch.files[i].patches);
|
||||
}
|
||||
free(m_patch.files);
|
||||
m_patch.files = NULL;
|
||||
m_patch.fileCount = 0;
|
||||
return status;
|
||||
}
|
||||
}
|
||||
|
||||
/* Output patch */
|
||||
return outputPatch(outputFileName);
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
applyPatch()
|
||||
{
|
||||
int c, i, j, fileSize, makeBackup;
|
||||
unsigned char *file;
|
||||
char *p;
|
||||
const char *fileName;
|
||||
char buffer[MAX_PATH];
|
||||
|
||||
|
||||
if (m_argc > 1 && strcmp(m_argv[1], "-d") != 0)
|
||||
{
|
||||
printUsage();
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Load patch */
|
||||
if (loadPatch() < 0)
|
||||
{
|
||||
printf("This executable doesn't contain a patch, use -c to create one.\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (m_argc > 1)
|
||||
{
|
||||
/* Dump patch */
|
||||
printf("Patch name: %s\n", m_patch.name);
|
||||
printf("File count: %d\n", m_patch.fileCount);
|
||||
for (i = 0; i < m_patch.fileCount; i++)
|
||||
{
|
||||
printf("----------------------\n"
|
||||
"File name: %s\n"
|
||||
"File size: %d bytes\n",
|
||||
m_patch.files[i].name, m_patch.files[i].fileSize);
|
||||
printf("Patch count: %d\n", m_patch.files[i].patchCount);
|
||||
for (j = 0; j < m_patch.files[i].patchCount; j++)
|
||||
{
|
||||
printf(" Offset 0x%x 0x%02x -> 0x%02x\n",
|
||||
m_patch.files[i].patches[j].offset,
|
||||
m_patch.files[i].patches[j].expected,
|
||||
m_patch.files[i].patches[j].patched);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Apply patch */
|
||||
printf("Applying patch...\n");
|
||||
for (i = 0; i < m_patch.fileCount; i++)
|
||||
{
|
||||
/* Load original file */
|
||||
fileName = m_patch.files[i].name;
|
||||
applyPatch_retry_file:
|
||||
file = loadFile(fileName, &fileSize);
|
||||
if (file == NULL)
|
||||
{
|
||||
printf("File %s not found! ", fileName);
|
||||
applyPatch_file_open_error:
|
||||
printf("(S)kip, (R)etry, (A)bort, (M)anually enter filename");
|
||||
do
|
||||
{
|
||||
c = getch();
|
||||
}
|
||||
while (c != 's' && c != 'r' && c != 'a' && c != 'm');
|
||||
printf("\n");
|
||||
if (c == 's')
|
||||
{
|
||||
continue;
|
||||
}
|
||||
else if (c == 'r')
|
||||
{
|
||||
goto applyPatch_retry_file;
|
||||
}
|
||||
else if (c == 'a')
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
else if (c == 'm')
|
||||
{
|
||||
if (fgets(buffer, sizeof (buffer), stdin) == NULL)
|
||||
{
|
||||
printf("fgets() failed!\n");
|
||||
return -1;
|
||||
}
|
||||
p = strchr(buffer, '\r');
|
||||
if (p != NULL)
|
||||
*p = '\0';
|
||||
p = strchr(buffer, '\n');
|
||||
if (p != NULL)
|
||||
*p = '\0';
|
||||
|
||||
fileName = buffer;
|
||||
goto applyPatch_retry_file;
|
||||
}
|
||||
}
|
||||
|
||||
/* Check file size */
|
||||
if (fileSize != m_patch.files[i].fileSize)
|
||||
{
|
||||
free(file);
|
||||
printf("File %s has unexpected filesize of %d bytes (%d bytes expected)\n",
|
||||
fileName, fileSize, m_patch.files[i].fileSize);
|
||||
if (fileName != m_patch.files[i].name) /* manually entered filename */
|
||||
{
|
||||
goto applyPatch_file_open_error;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Ask for backup */
|
||||
printf("Do you want to make a backup of %s? (Y)es, (N)o, (A)bort", fileName);
|
||||
do
|
||||
{
|
||||
c = getch();
|
||||
}
|
||||
while (c != 'y' && c != 'n' && c != 'a');
|
||||
printf("\n");
|
||||
if (c == 'y')
|
||||
{
|
||||
char buffer[MAX_PATH];
|
||||
snprintf(buffer, MAX_PATH, "%s.bak", fileName);
|
||||
buffer[MAX_PATH-1] = '\0';
|
||||
makeBackup = 1;
|
||||
if (access(buffer, 0) >= 0) /* file exists */
|
||||
{
|
||||
printf("File %s already exists, overwrite? (Y)es, (N)o, (A)bort", buffer);
|
||||
do
|
||||
{
|
||||
c = getch();
|
||||
}
|
||||
while (c != 'y' && c != 'n' && c != 'a');
|
||||
printf("\n");
|
||||
if (c == 'n')
|
||||
makeBackup = 0;
|
||||
else if (c == 'a')
|
||||
{
|
||||
free(file);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
if (makeBackup && saveFile(buffer, file, fileSize) < 0)
|
||||
{
|
||||
free(file);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
else if (c == 'a')
|
||||
{
|
||||
free(file);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Patch file */
|
||||
for (j = 0; j < m_patch.files[i].patchCount; j++)
|
||||
{
|
||||
int offset = m_patch.files[i].patches[j].offset;
|
||||
if (file[offset] != m_patch.files[i].patches[j].expected)
|
||||
{
|
||||
printf("Unexpected value in file %s at offset 0x%x: expected = 0x%02x, found = 0x%02x\n",
|
||||
fileName, offset, m_patch.files[i].patches[j].expected, file[offset]);
|
||||
free(file);
|
||||
return -1;
|
||||
}
|
||||
file[offset] = m_patch.files[i].patches[j].patched;
|
||||
}
|
||||
|
||||
/* Save file */
|
||||
if (saveFile(fileName, file, fileSize) < 0)
|
||||
{
|
||||
free(file);
|
||||
return -1;
|
||||
}
|
||||
free(file);
|
||||
}
|
||||
|
||||
printf("Patch applied sucessfully!\n");
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
printUsage()
|
||||
{
|
||||
printf("Usage:\n"
|
||||
"%s -c - Create patch\n"
|
||||
"%s -d - Dump patch\n"
|
||||
"%s - Apply patch\n"
|
||||
"\n"
|
||||
"A patch can be created like this:\n"
|
||||
"%s -c \"patch name\" output.exe file1.orig file1.patched[ file2.orig file2.patched[ ...]]\n",
|
||||
m_argv[0], m_argv[0], m_argv[0], m_argv[0]);
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
main(
|
||||
int argc,
|
||||
char *argv[])
|
||||
{
|
||||
m_argc = argc;
|
||||
m_argv = argv;
|
||||
|
||||
if (argc >= 2 && (strcmp(argv[1], "-h") == 0 || strcmp(argv[1], "--help") == 0))
|
||||
{
|
||||
printUsage();
|
||||
return 0;
|
||||
}
|
||||
else if (argc >= 2 && argv[1][0] == '-')
|
||||
{
|
||||
if (strcmp(argv[1], "-c") == 0)
|
||||
{
|
||||
return createPatch();
|
||||
}
|
||||
else if (strcmp(argv[1], "-d") == 0)
|
||||
{
|
||||
return applyPatch();
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("Unknown option: %s\n"
|
||||
"Use -h for help.\n",
|
||||
argv[1]);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
return applyPatch();
|
||||
}
|
||||
|
@@ -1,26 +0,0 @@
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
|
||||
int main(int argc, char* argv[])
|
||||
{
|
||||
int i;
|
||||
FILE* in;
|
||||
char ch;
|
||||
|
||||
for (i=1; i<argc; i++)
|
||||
{
|
||||
in = fopen(argv[i],"r");
|
||||
if (in == NULL)
|
||||
{
|
||||
printf("Failed to open file %s\n", argv[i]);
|
||||
return(0);
|
||||
}
|
||||
|
||||
while ((ch = fgetc(in)) != EOF)
|
||||
{
|
||||
putchar(ch);
|
||||
}
|
||||
fclose(in);
|
||||
}
|
||||
return 0;
|
||||
}
|
@@ -1,21 +0,0 @@
|
||||
# $Id$
|
||||
|
||||
PATH_TO_TOP = ../../..
|
||||
|
||||
TARGET_NORC = yes
|
||||
|
||||
TARGET_TYPE = program
|
||||
|
||||
TARGET_APPTYPE = console
|
||||
|
||||
TARGET_NAME = cat
|
||||
|
||||
TARGET_OBJECTS = $(TARGET_NAME).o
|
||||
|
||||
TARGET_CFLAGS = -Wall -Werror
|
||||
|
||||
include $(PATH_TO_TOP)/rules.mak
|
||||
|
||||
include $(TOOLS_PATH)/helper.mk
|
||||
|
||||
# EOF
|
@@ -1,32 +0,0 @@
|
||||
/*
|
||||
* Load a device driver
|
||||
*/
|
||||
#include <windows.h>
|
||||
#include <ntos/zw.h>
|
||||
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
NTSTATUS Status;
|
||||
UNICODE_STRING ServiceName;
|
||||
|
||||
if (argc != 2)
|
||||
{
|
||||
printf("Usage: load <ServiceName>\n");
|
||||
return 0;
|
||||
}
|
||||
ServiceName.Length = (strlen(argv[1]) + 52) * sizeof(WCHAR);
|
||||
ServiceName.Buffer = (LPWSTR)malloc(ServiceName.Length + sizeof(UNICODE_NULL));
|
||||
wsprintf(ServiceName.Buffer,
|
||||
L"\\Registry\\Machine\\System\\CurrentControlSet\\Services\\%S",
|
||||
argv[1]);
|
||||
wprintf(L"%s %d %d\n", ServiceName.Buffer, ServiceName.Length, wcslen(ServiceName.Buffer));
|
||||
Status = NtLoadDriver(&ServiceName);
|
||||
free(ServiceName.Buffer);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
printf("Failed: %X\n", Status);
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
@@ -1,21 +0,0 @@
|
||||
PATH_TO_TOP = ../../../..
|
||||
|
||||
TARGET_NORC = yes
|
||||
|
||||
TARGET_TYPE = program
|
||||
|
||||
TARGET_APPTYPE = console
|
||||
|
||||
TARGET_NAME = load
|
||||
|
||||
TARGET_CFLAGS = -DUNICODE -D_UNICODE
|
||||
|
||||
TARGET_SDKLIBS = ntdll.a
|
||||
|
||||
TARGET_OBJECTS = $(TARGET_NAME).o
|
||||
|
||||
include $(PATH_TO_TOP)/rules.mak
|
||||
|
||||
include $(TOOLS_PATH)/helper.mk
|
||||
|
||||
# EOF
|
@@ -1,21 +0,0 @@
|
||||
PATH_TO_TOP = ../../../..
|
||||
|
||||
TARGET_NORC = yes
|
||||
|
||||
TARGET_TYPE = program
|
||||
|
||||
TARGET_APPTYPE = console
|
||||
|
||||
TARGET_NAME = unload
|
||||
|
||||
TARGET_CFLAGS = -DUNICODE -D_UNICODE
|
||||
|
||||
TARGET_SDKLIBS = ntdll.a
|
||||
|
||||
TARGET_OBJECTS = $(TARGET_NAME).o
|
||||
|
||||
include $(PATH_TO_TOP)/rules.mak
|
||||
|
||||
include $(TOOLS_PATH)/helper.mk
|
||||
|
||||
# EOF
|
@@ -1,32 +0,0 @@
|
||||
/*
|
||||
* Unload a device driver
|
||||
*/
|
||||
#include <windows.h>
|
||||
#include <ntos/zw.h>
|
||||
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
NTSTATUS Status;
|
||||
UNICODE_STRING ServiceName;
|
||||
|
||||
if (argc != 2)
|
||||
{
|
||||
printf("Usage: unload <ServiceName>\n");
|
||||
return 0;
|
||||
}
|
||||
ServiceName.Length = (strlen(argv[1]) + 52) * sizeof(WCHAR);
|
||||
ServiceName.Buffer = (LPWSTR)malloc(ServiceName.Length + sizeof(UNICODE_NULL));
|
||||
wsprintf(ServiceName.Buffer,
|
||||
L"\\Registry\\Machine\\System\\CurrentControlSet\\Services\\%S",
|
||||
argv[1]);
|
||||
wprintf(L"%s %d %d\n", ServiceName.Buffer, ServiceName.Length, wcslen(ServiceName.Buffer));
|
||||
Status = NtUnloadDriver(&ServiceName);
|
||||
free(ServiceName.Buffer);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
printf("Failed: %X\n", Status);
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
@@ -1,84 +0,0 @@
|
||||
/*
|
||||
* ReactOS INF Helper
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* PROJECT: INF Helper
|
||||
* FILE: infinst.c
|
||||
* PURPOSE: Pass INF files to setupapi.dll for execution
|
||||
* PROGRAMMER: Michael Biggins
|
||||
* UPDATE HISTORY:
|
||||
* Created 19/09/2004
|
||||
*/
|
||||
#include <windows.h>
|
||||
#include <tchar.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#ifdef UNICODE
|
||||
VOID WINAPI InstallHinfSectionW(HWND hwnd, HINSTANCE handle, LPCWSTR cmdline, INT show);
|
||||
#define InstallHinfSection InstallHinfSectionW
|
||||
#else
|
||||
VOID WINAPI InstallHinfSectionA(HWND hwnd, HINSTANCE handle, LPCSTR cmdline, INT show);
|
||||
#define InstallHinfSection InstallHinfSectionA
|
||||
#endif
|
||||
|
||||
#define FILEOPEN_FILTER TEXT("Inf Files (*.inf)\0*.inf\0All Files (*.*)\0*.*\0\0")
|
||||
#define FILEOPEN_TITLE TEXT("INF file to process")
|
||||
#define FILEOPEN_DEFEXT TEXT(".inf")
|
||||
#define INF_COMMAND TEXT("DefaultInstall 128 %s")
|
||||
|
||||
int
|
||||
_tmain(int argc, TCHAR *argv[])
|
||||
{
|
||||
TCHAR infCommand[MAX_PATH + 32];
|
||||
|
||||
if (argc <= 1)
|
||||
{
|
||||
TCHAR FileName[MAX_PATH + 1];
|
||||
OPENFILENAME ofc;
|
||||
int rv;
|
||||
|
||||
ZeroMemory(&ofc, sizeof(ofc));
|
||||
ZeroMemory(FileName, MAX_PATH + 1);
|
||||
ofc.lStructSize = sizeof(ofc);
|
||||
ofc.lpstrFilter = FILEOPEN_FILTER;
|
||||
ofc.nFilterIndex = 1;
|
||||
ofc.lpstrTitle = FILEOPEN_TITLE;
|
||||
ofc.Flags = OFN_FILEMUSTEXIST | OFN_LONGNAMES | OFN_PATHMUSTEXIST;
|
||||
ofc.lpstrDefExt = FILEOPEN_DEFEXT;
|
||||
ofc.lpstrFile = FileName;
|
||||
ofc.nMaxFile = sizeof(FileName) / sizeof(TCHAR);
|
||||
|
||||
rv = GetOpenFileName(&ofc);
|
||||
|
||||
if (rv == 0)
|
||||
return 1;
|
||||
|
||||
_stprintf(infCommand, INF_COMMAND, FileName);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (_tcslen(argv[1]) > MAX_PATH)
|
||||
{
|
||||
MessageBox(NULL, TEXT("Command line too long to be a valid file name"), NULL, MB_OK | MB_ICONERROR);
|
||||
return 2; /* User error */
|
||||
}
|
||||
_stprintf(infCommand, INF_COMMAND, argv[1]);
|
||||
}
|
||||
|
||||
InstallHinfSection(NULL, NULL, infCommand, 0);
|
||||
|
||||
return 0;
|
||||
}
|
@@ -1,21 +0,0 @@
|
||||
PATH_TO_TOP = ../../..
|
||||
|
||||
TARGET_NORC = yes
|
||||
|
||||
TARGET_TYPE = program
|
||||
|
||||
TARGET_APPTYPE = windows
|
||||
|
||||
TARGET_NAME = infinst
|
||||
|
||||
TARGET_SDKLIBS = comdlg32.a setupapi.a
|
||||
|
||||
TARGET_OBJECTS = infinst.o
|
||||
|
||||
TARGET_CFLAGS = -Wall -Werror
|
||||
|
||||
include $(PATH_TO_TOP)/rules.mak
|
||||
|
||||
include $(TOOLS_PATH)/helper.mk
|
||||
|
||||
# EOF
|
@@ -1,99 +0,0 @@
|
||||
/*
|
||||
* arp - display ARP cache from the IP stack parameters.
|
||||
*
|
||||
* This source code is in the PUBLIC DOMAIN and has NO WARRANTY.
|
||||
*
|
||||
* Robert Dickenson <robd@reactos.org>, August 15, 2002.
|
||||
*/
|
||||
#include <stdio.h>
|
||||
#include <windows.h>
|
||||
#include <tchar.h>
|
||||
#include <time.h>
|
||||
|
||||
#include <iptypes.h>
|
||||
#include <ipexport.h>
|
||||
#include <iphlpapi.h>
|
||||
#include <snmp.h>
|
||||
|
||||
#include "trace.h"
|
||||
|
||||
|
||||
VOID SNMP_FUNC_TYPE SnmpSvcInitUptime();
|
||||
DWORD SNMP_FUNC_TYPE SnmpSvcGetUptime();
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
const char szUsage[] = { "\n" \
|
||||
"Displays and modifies the IP Protocol to physical address translation tables\n" \
|
||||
"used by address resolution protocol (ARP).\n" \
|
||||
"\n" \
|
||||
"ARP -s inet_addr eth_addr [if_addr]\n" \
|
||||
"ARP -d inet_addr [if_addr]\n" \
|
||||
"ARP -a [inet_addr] [-N if_addr]\n" \
|
||||
"\n" \
|
||||
" -a Displays the active ARP table by querying the current protocol\n" \
|
||||
" data. If inet_addr is specified, the IP and physical addresses\n" \
|
||||
" for the specified address are displayed. If more than one\n" \
|
||||
" network interface is using ARP, each interfaces ARP table is\n" \
|
||||
" displayed.\n" \
|
||||
" -g Indentical to -a.\n" \
|
||||
" inet_addr Specifies the IP address.\n" \
|
||||
" -N if_addr Displays the ARP table for the specified interface only\n" \
|
||||
" -d Deletes the host entry specified by inet_addr. inet_addr may be\n" \
|
||||
" wildcarded with * to delete all host entries in the ARP table.\n" \
|
||||
" -s Adds the host and associates the IP address inet_addr with the\n" \
|
||||
" physical address eth_addr. The physical address must be specified\n" \
|
||||
" as 6 hexadecimal characters delimited by hyphens. The new entry\n" \
|
||||
" will become permanent in the ARP table.\n" \
|
||||
" eth_addr Specifies the interface physical address.\n" \
|
||||
" if_addr If present, this specifies the IP address of the interface whose\n" \
|
||||
" address translation table should be modified. If not present, the\n" \
|
||||
" first applicable interface will be used.\n" \
|
||||
"Example:\n" \
|
||||
" > arp -s 192.168.0.12 55-AA-55-01-02-03 .... Static entry creation.\n" \
|
||||
" > arp -a .... ARP table display.\n" \
|
||||
" > arp -d * .... Delete all ARP table entries.\n"
|
||||
};
|
||||
|
||||
void usage(void)
|
||||
{
|
||||
// fprintf(stderr,"USAGE:\n");
|
||||
fputs(szUsage, stderr);
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
TCHAR szComputerName[50];
|
||||
DWORD dwSize = 50;
|
||||
|
||||
int nBytes = 500;
|
||||
BYTE* pCache;
|
||||
|
||||
if (argc > 1) {
|
||||
usage();
|
||||
return 1;
|
||||
}
|
||||
|
||||
SnmpSvcInitUptime();
|
||||
|
||||
GetComputerName(szComputerName, &dwSize);
|
||||
_tprintf(_T("ReactOS ARP cache on Computer Name: %s\n"), szComputerName);
|
||||
|
||||
pCache = (BYTE*)SnmpUtilMemAlloc(nBytes);
|
||||
|
||||
Sleep(2500);
|
||||
|
||||
if (pCache != NULL) {
|
||||
|
||||
DWORD dwUptime = SnmpSvcGetUptime();
|
||||
|
||||
_tprintf(_T("SNMP uptime: %d\n"), dwUptime);
|
||||
|
||||
SnmpUtilMemFree(pCache);
|
||||
} else {
|
||||
_tprintf(_T("ERROR: call to SnmpUtilMemAlloc() failed\n"));
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@@ -1,6 +0,0 @@
|
||||
/* $Id$ */
|
||||
|
||||
#define REACTOS_STR_FILE_DESCRIPTION "ReactOS TCP/IPv4 Win32 arp\0"
|
||||
#define REACTOS_STR_INTERNAL_NAME "arp\0"
|
||||
#define REACTOS_STR_ORIGINAL_FILENAME "arp.exe\0"
|
||||
#include <reactos/version.rc>
|
@@ -1,19 +0,0 @@
|
||||
PATH_TO_TOP = ../../../..
|
||||
|
||||
TARGET_TYPE = program
|
||||
|
||||
TARGET_APPTYPE = console
|
||||
|
||||
TARGET_NAME = arp
|
||||
|
||||
TARGET_INSTALLDIR = system32
|
||||
|
||||
TARGET_CFLAGS = -D__USE_W32API
|
||||
|
||||
TARGET_SDKLIBS = user32.a snmpapi.a
|
||||
|
||||
TARGET_OBJECTS = $(TARGET_NAME).o
|
||||
|
||||
include $(PATH_TO_TOP)/rules.mak
|
||||
|
||||
include $(TOOLS_PATH)/helper.mk
|
@@ -1,53 +0,0 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Diagnostic Trace
|
||||
//
|
||||
#include <stdio.h>
|
||||
#include <stdarg.h>
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#include <windows.h>
|
||||
#include <tchar.h>
|
||||
#include "trace.h"
|
||||
|
||||
|
||||
#ifdef _DEBUG
|
||||
|
||||
#undef THIS_FILE
|
||||
static char THIS_FILE[] = __FILE__;
|
||||
|
||||
void _DebugBreak(void)
|
||||
{
|
||||
DebugBreak();
|
||||
}
|
||||
|
||||
void Trace(TCHAR* lpszFormat, ...)
|
||||
{
|
||||
va_list args;
|
||||
int nBuf;
|
||||
TCHAR szBuffer[512];
|
||||
|
||||
va_start(args, lpszFormat);
|
||||
nBuf = _vsntprintf(szBuffer, sizeof(szBuffer)/sizeof(TCHAR), lpszFormat, args);
|
||||
OutputDebugString(szBuffer);
|
||||
// was there an error? was the expanded string too long?
|
||||
//ASSERT(nBuf >= 0);
|
||||
va_end(args);
|
||||
}
|
||||
|
||||
void Assert(void* assert, TCHAR* file, int line, void* msg)
|
||||
{
|
||||
if (msg == NULL) {
|
||||
printf("ASSERT -- %s occured on line %u of file %s.\n",
|
||||
assert, line, file);
|
||||
} else {
|
||||
printf("ASSERT -- %s occured on line %u of file %s: Message = %s.\n",
|
||||
assert, line, file, msg);
|
||||
}
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
void Trace(TCHAR* lpszFormat, ...) { };
|
||||
void Assert(void* assert, TCHAR* file, int line, void* msg) { };
|
||||
|
||||
#endif //_DEBUG
|
||||
/////////////////////////////////////////////////////////////////////////////
|
@@ -1,61 +0,0 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Diagnostic Trace
|
||||
//
|
||||
#ifndef __TRACE_H__
|
||||
#define __TRACE_H__
|
||||
|
||||
#ifdef _DEBUG
|
||||
|
||||
#ifdef _X86_
|
||||
#define BreakPoint() _asm { int 3h }
|
||||
#else
|
||||
#define BreakPoint() _DebugBreak()
|
||||
#endif
|
||||
|
||||
#ifndef ASSERT
|
||||
#define ASSERT(exp) \
|
||||
{ \
|
||||
if (!(exp)) { \
|
||||
Assert(#exp, __FILE__, __LINE__, NULL); \
|
||||
BreakPoint(); \
|
||||
} \
|
||||
} \
|
||||
|
||||
#define ASSERTMSG(exp, msg) \
|
||||
{ \
|
||||
if (!(exp)) { \
|
||||
Assert(#exp, __FILE__, __LINE__, msg); \
|
||||
BreakPoint(); \
|
||||
} \
|
||||
}
|
||||
#endif
|
||||
|
||||
//=============================================================================
|
||||
// MACRO: TRACE()
|
||||
//=============================================================================
|
||||
|
||||
#define TRACE Trace
|
||||
|
||||
|
||||
#else // _DEBUG
|
||||
|
||||
//=============================================================================
|
||||
// Define away MACRO's ASSERT() and TRACE() in non debug builds
|
||||
//=============================================================================
|
||||
|
||||
#ifndef ASSERT
|
||||
#define ASSERT(exp)
|
||||
#define ASSERTMSG(exp, msg)
|
||||
#endif
|
||||
|
||||
#define TRACE 0 ? (void)0 : Trace
|
||||
|
||||
#endif // !_DEBUG
|
||||
|
||||
|
||||
void Assert(void* assert, TCHAR* file, int line, void* msg);
|
||||
void Trace(TCHAR* lpszFormat, ...);
|
||||
|
||||
|
||||
#endif // __TRACE_H__
|
||||
/////////////////////////////////////////////////////////////////////////////
|
@@ -1,23 +0,0 @@
|
||||
July 22, 1999
|
||||
|
||||
To All Licensees, Distributors of Any Version of BSD:
|
||||
|
||||
As you know, certain of the Berkeley Software Distribution ("BSD") source code files
|
||||
require that further distributions of products containing all or portions of the
|
||||
software, acknowledge within their advertising materials that such products contain
|
||||
software developed by UC Berkeley and its contributors.
|
||||
|
||||
Specifically, the provision reads:
|
||||
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
|
||||
Effective immediately, licensees and distributors are no longer required to include
|
||||
the acknowledgement within advertising materials. Accordingly, the foregoing paragraph
|
||||
of those BSD Unix files containing it is hereby deleted in its entirety.
|
||||
|
||||
William Hoskins
|
||||
Director, Office of Technology Licensing
|
||||
University of California, Berkeley "
|
@@ -1,180 +0,0 @@
|
||||
/*-
|
||||
* Copyright (c) 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#if defined(LIBC_SCCS) && !defined(lint)
|
||||
static char sccsid[] = "@(#)err.c 8.1 (Berkeley) 6/4/93";
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
#include "err.h"
|
||||
#include <errno.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#ifdef __STDC__
|
||||
#include <stdarg.h>
|
||||
#else
|
||||
#include <varargs.h>
|
||||
#endif
|
||||
|
||||
extern char *__progname; /* Program name, from crt0. */
|
||||
|
||||
void
|
||||
#ifdef __STDC__
|
||||
err(int eval, const char *fmt, ...)
|
||||
#else
|
||||
err(eval, fmt, va_alist)
|
||||
int eval;
|
||||
const char *fmt;
|
||||
va_dcl
|
||||
#endif
|
||||
{
|
||||
va_list ap;
|
||||
#if __STDC__
|
||||
va_start(ap, fmt);
|
||||
#else
|
||||
va_start(ap);
|
||||
#endif
|
||||
verr(eval, fmt, ap);
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
void
|
||||
verr(int eval, const char *fmt, va_list ap)
|
||||
{
|
||||
int sverrno;
|
||||
|
||||
sverrno = errno;
|
||||
(void)fprintf(stderr, "%s: ", __progname);
|
||||
if (fmt != NULL) {
|
||||
(void)vfprintf(stderr, fmt, ap);
|
||||
(void)fprintf(stderr, ": ");
|
||||
}
|
||||
(void)fprintf(stderr, "%s\n", strerror(sverrno));
|
||||
exit(eval);
|
||||
}
|
||||
|
||||
void
|
||||
#if __STDC__
|
||||
errx(int eval, const char *fmt, ...)
|
||||
#else
|
||||
errx(eval, fmt, va_alist)
|
||||
int eval;
|
||||
const char *fmt;
|
||||
va_dcl
|
||||
#endif
|
||||
{
|
||||
va_list ap;
|
||||
#if __STDC__
|
||||
va_start(ap, fmt);
|
||||
#else
|
||||
va_start(ap);
|
||||
#endif
|
||||
verrx(eval, fmt, ap);
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
void
|
||||
verrx(int eval, const char *fmt, va_list ap)
|
||||
{
|
||||
(void)fprintf(stderr, "%s: ", __progname);
|
||||
if (fmt != NULL)
|
||||
(void)vfprintf(stderr, fmt, ap);
|
||||
(void)fprintf(stderr, "\n");
|
||||
exit(eval);
|
||||
}
|
||||
|
||||
void
|
||||
#if __STDC__
|
||||
warn(const char *fmt, ...)
|
||||
#else
|
||||
warn(fmt, va_alist)
|
||||
const char *fmt;
|
||||
va_dcl
|
||||
#endif
|
||||
{
|
||||
va_list ap;
|
||||
#if __STDC__
|
||||
va_start(ap, fmt);
|
||||
#else
|
||||
va_start(ap);
|
||||
#endif
|
||||
vwarn(fmt, ap);
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
void
|
||||
vwarn(fmt, ap)
|
||||
const char *fmt;
|
||||
va_list ap;
|
||||
{
|
||||
int sverrno;
|
||||
|
||||
sverrno = errno;
|
||||
(void)fprintf(stderr, "%s: ", __progname);
|
||||
if (fmt != NULL) {
|
||||
(void)vfprintf(stderr, fmt, ap);
|
||||
(void)fprintf(stderr, ": ");
|
||||
}
|
||||
(void)fprintf(stderr, "%s\n", strerror(sverrno));
|
||||
}
|
||||
|
||||
void
|
||||
#ifdef __STDC__
|
||||
warnx(const char *fmt, ...)
|
||||
#else
|
||||
warnx(fmt, va_alist)
|
||||
const char *fmt;
|
||||
va_dcl
|
||||
#endif
|
||||
{
|
||||
va_list ap;
|
||||
#ifdef __STDC__
|
||||
va_start(ap, fmt);
|
||||
#else
|
||||
va_start(ap);
|
||||
#endif
|
||||
vwarnx(fmt, ap);
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
void
|
||||
vwarnx(fmt, ap)
|
||||
const char *fmt;
|
||||
va_list ap;
|
||||
{
|
||||
(void)fprintf(stderr, "%s: ", __progname);
|
||||
if (fmt != NULL)
|
||||
(void)vfprintf(stderr, fmt, ap);
|
||||
(void)fprintf(stderr, "\n");
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user