Windows NT 4.0 source code leak
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

44 lines
850 B

4 years ago
  1. __inline LPVOID QVMakeQGB(DWORD val, LPVOID pv) {
  2. ASSERT(val < 0x80000000L);
  3. if (val < 0x8000) {
  4. WORD FAR* pw = (WORD FAR*) pv;
  5. *pw = (WORD) val << 1;
  6. return pw + 1;
  7. }
  8. else {
  9. DWORD FAR* pw = (DWORD FAR*) pv;
  10. *pw = (val << 1) | 1L;
  11. return pw + 1;
  12. }
  13. };
  14. __inline void* PVMakeQGB(DWORD val, void* pv) {
  15. ASSERT(val < 0x80000000L);
  16. if (val < 0x8000) {
  17. WORD* pw = (WORD*) pv;
  18. *pw = (WORD) val << 1;
  19. return pw + 1;
  20. }
  21. else {
  22. DWORD* pw = (DWORD*) pv;
  23. *pw = (val << 1) | 1L;
  24. return pw + 1;
  25. }
  26. };
  27. __inline void* PVMakeQGA(WORD val, void* pv) {
  28. ASSERT(val < 0x8000);
  29. if (val < 0x80) {
  30. BYTE* pw = (BYTE*) pv;
  31. *pw = (BYTE) val << 1;
  32. return pw + 1;
  33. }
  34. else {
  35. WORD* pw = (WORD*) pv;
  36. *pw = (val << 1) | 1;
  37. return pw + 1;
  38. }
  39. };
  40. #define PfromPcb(pv, cb) ((void*) (((BYTE*) pv) + cb))