1 2 extern IMAGE_DOS_HEADER __ImageBase; 3 4 static const unsigned GDI_ENGINE_VERSION = DDI_DRIVER_VERSION_NT5_01; 5 6 typedef enum 7 { 8 LDEV_DEVICE_DISPLAY = 1, 9 LDEV_DEVICE_PRINTER = 2, 10 LDEV_DEVICE_META = 3, 11 LDEV_DEVICE_MIRROR = 4, 12 LDEV_IMAGE = 5, 13 LDEV_FONT = 6, 14 } LDEVTYPE; 15 16 typedef struct _LDEVOBJ 17 { 18 LIST_ENTRY leLink; 19 SYSTEM_GDI_DRIVER_INFORMATION *pGdiDriverInfo; 20 LDEVTYPE ldevtype; 21 ULONG cRefs; 22 ULONG ulDriverVersion; 23 24 union 25 { 26 PVOID apfn[INDEX_LAST]; 27 DRIVER_FUNCTIONS pfn; 28 }; 29 30 } LDEVOBJ, *PLDEVOBJ; 31 32 CODE_SEG("INIT") 33 NTSTATUS 34 NTAPI 35 InitLDEVImpl(VOID); 36 37 PDEVMODEINFO 38 NTAPI 39 LDEVOBJ_pdmiGetModes( 40 _In_ PLDEVOBJ pldev, 41 _In_ HANDLE hDriver); 42 43 PLDEVOBJ 44 APIENTRY 45 EngLoadImageEx( 46 _In_z_ LPWSTR pwszDriverName, 47 _In_ ULONG ldevtype); 48 49 PLDEVOBJ 50 NTAPI 51 EngGetLDEV( 52 PDEVMODEW pdm); 53 54 CODE_SEG("INIT") 55 NTSTATUS 56 APIENTRY 57 DriverEntry ( 58 _In_ PDRIVER_OBJECT DriverObject, 59 _In_ PUNICODE_STRING RegistryPath); 60 61