mirror of
https://github.com/reactos/reactos.git
synced 2024-09-14 06:42:52 +00:00
14c634ca97
svn path=/trunk/; revision=1753
44 lines
1.1 KiB
C
44 lines
1.1 KiB
C
/*
|
|
* COPYRIGHT: See COPYING in the top level directory
|
|
* PROJECT: ReactOS kernel
|
|
* PURPOSE: GDI Driver Device Functions
|
|
* FILE: subsys/win32k/eng/device.c
|
|
* PROGRAMER: Jason Filby
|
|
* REVISION HISTORY:
|
|
* 3/7/1999: Created
|
|
*/
|
|
|
|
#include <ddk/ntddk.h>
|
|
|
|
DWORD STDCALL EngDeviceIoControl(
|
|
HANDLE hDevice,
|
|
DWORD dwIoControlCode,
|
|
LPVOID lpInBuffer,
|
|
DWORD nInBufferSize,
|
|
LPVOID lpOutBuffer,
|
|
DWORD nOutBufferSize,
|
|
DWORD *lpBytesReturned)
|
|
{
|
|
PIRP Irp;
|
|
NTSTATUS Status;
|
|
KEVENT Event;
|
|
IO_STATUS_BLOCK Iosb;
|
|
PDRIVER_OBJECT DriverObject;
|
|
|
|
DriverObject = hDevice;
|
|
|
|
KeInitializeEvent(&Event, SynchronizationEvent, FALSE);
|
|
|
|
Irp = IoBuildDeviceIoControlRequest(dwIoControlCode, DriverObject->DeviceObject, lpInBuffer, nInBufferSize,
|
|
lpOutBuffer, nOutBufferSize, FALSE, &Event, &Iosb);
|
|
|
|
Status = IoCallDriver(DriverObject->DeviceObject, Irp);
|
|
|
|
if (Status == STATUS_PENDING)
|
|
{
|
|
(void) KeWaitForSingleObject(&Event, Executive, KernelMode, TRUE, 0);
|
|
}
|
|
|
|
return (Status);
|
|
}
|