2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS kernel
4 * PURPOSE: GDI Driver Device Functions
5 * FILE: subsys/win32k/eng/device.c
6 * PROGRAMER: Jason Filby
11 #include <ddk/ntddk.h>
12 #include <win32k/misc.h>
18 EngDeviceIoControl(HANDLE hDevice,
19 DWORD dwIoControlCode,
24 DWORD *lpBytesReturned)
30 PFILE_OBJECT FileObject;
32 DPRINT("EngDeviceIoControl() called\n");
34 KeInitializeEvent(&Event, SynchronizationEvent, FALSE);
36 /* Switch to process context in which hDevice is valid */
37 KeAttachProcess(W32kDeviceProcess);
39 Status = ObReferenceObjectByHandle(hDevice,
40 FILE_READ_DATA | FILE_WRITE_DATA,
47 if (!NT_SUCCESS(Status))
52 Irp = IoBuildDeviceIoControlRequest(dwIoControlCode,
53 FileObject->DeviceObject,
57 nOutBufferSize, FALSE, &Event, &Iosb);
59 Status = IoCallDriver(FileObject->DeviceObject, Irp);
61 if (Status == STATUS_PENDING)
63 (void) KeWaitForSingleObject(&Event, Executive, KernelMode, TRUE, 0);