2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: Serial port driver
4 * FILE: drivers/dd/serial/create.c
5 * PURPOSE: Serial IRP_MJ_CREATE operations
7 * PROGRAMMERS: Hervé Poussineau (hpoussin@reactos.org)
14 IN PDEVICE_OBJECT DeviceObject
,
17 PIO_STACK_LOCATION Stack
;
18 PSERIAL_DEVICE_EXTENSION DeviceExtension
;
21 TRACE_(SERIAL
, "IRP_MJ_CREATE\n");
22 Stack
= IoGetCurrentIrpStackLocation(Irp
);
23 DeviceExtension
= (PSERIAL_DEVICE_EXTENSION
)DeviceObject
->DeviceExtension
;
25 if (Stack
->Parameters
.Create
.Options
& FILE_DIRECTORY_FILE
)
27 INFO_(SERIAL
, "Not a directory\n");
28 Status
= STATUS_NOT_A_DIRECTORY
;
32 if(DeviceExtension
->IsOpened
)
34 WARN_(SERIAL
, "COM%lu is already opened\n", DeviceExtension
->ComPort
);
35 Status
= STATUS_ACCESS_DENIED
;
39 INFO_(SERIAL
, "Open COM%lu: successfull\n", DeviceExtension
->ComPort
);
40 DeviceExtension
->IsOpened
= TRUE
;
41 Status
= STATUS_SUCCESS
;
44 Irp
->IoStatus
.Status
= Status
;
45 Irp
->IoStatus
.Information
= 0;
46 IoCompleteRequest(Irp
, IO_NO_INCREMENT
);