[WIN32K]
[reactos.git] / reactos / subsystems / win32 / win32k / include / ldevobj.h
1
2 #ifdef __GNUC__
3 /* Hack, for bug in ld. Will be removed soon. */
4 #define __ImageBase _image_base__
5 #endif
6 extern IMAGE_DOS_HEADER __ImageBase;
7
8 #define GDI_ENGINE_VERSION DDI_DRIVER_VERSION_NT5_01
9
10 typedef enum
11 {
12 LDEV_DEVICE_DISPLAY = 1,
13 LDEV_DEVICE_PRINTER = 2,
14 LDEV_DEVICE_META = 3,
15 LDEV_DEVICE_MIRROR = 4,
16 LDEV_IMAGE = 5,
17 LDEV_FONT = 6,
18 } LDEVTYPE;
19
20 typedef struct _LDEVOBJ
21 {
22 struct _LDEVOBJ *pldevNext;
23 struct _LDEVOBJ *pldevPrev;
24 SYSTEM_GDI_DRIVER_INFORMATION *pGdiDriverInfo;
25 LDEVTYPE ldevtype;
26 ULONG cRefs;
27 ULONG ulDriverVersion;
28
29 union
30 {
31 PVOID apfn[INDEX_LAST];
32 DRIVER_FUNCTIONS pfn;
33 };
34
35 } LDEVOBJ, *PLDEVOBJ;
36
37 extern PLDEVOBJ gpldevHead;
38 extern HSEMAPHORE ghsemDriverMgmt;
39
40 PLDEVOBJ
41 NTAPI
42 LDEVOBJ_pldevLoadImage(
43 PUNICODE_STRING pusPathName,
44 LDEVTYPE ldevtype);
45
46 BOOL
47 NTAPI
48 LDEVOBJ_bLoadDriver(
49 IN PLDEVOBJ pldev);
50
51 PVOID
52 NTAPI
53 LDEVOBJ_pvFindImageProcAddress(
54 IN PLDEVOBJ pldev,
55 IN LPSTR lpProcName);
56
57 PDEVMODEINFO
58 NTAPI
59 LDEVOBJ_pdmiGetModes(
60 PLDEVOBJ pldev,
61 HANDLE hDriver);
62
63 INIT_FUNCTION
64 NTSTATUS
65 NTAPI
66 InitLDEVImpl(VOID);
67
68 PLDEVOBJ
69 APIENTRY
70 EngLoadImageEx(
71 LPWSTR pwszDriverName,
72 ULONG ldevtype);
73
74 PLDEVOBJ
75 NTAPI
76 EngGetLDEV(
77 PDEVMODEW pdm);
78
79 NTSTATUS
80 APIENTRY
81 DriverEntry (
82 IN PDRIVER_OBJECT DriverObject,
83 IN PUNICODE_STRING RegistryPath);
84