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)
16 IN PDEVICE_OBJECT DeviceObject
,
19 PIO_STACK_LOCATION Stack
;
20 PSERIAL_DEVICE_EXTENSION DeviceExtension
;
23 TRACE_(SERIAL
, "IRP_MJ_CREATE\n");
24 Stack
= IoGetCurrentIrpStackLocation(Irp
);
25 DeviceExtension
= (PSERIAL_DEVICE_EXTENSION
)DeviceObject
->DeviceExtension
;
27 if (Stack
->Parameters
.Create
.Options
& FILE_DIRECTORY_FILE
)
29 INFO_(SERIAL
, "Not a directory\n");
30 Status
= STATUS_NOT_A_DIRECTORY
;
34 if(DeviceExtension
->IsOpened
)
36 WARN_(SERIAL
, "COM%lu is already opened\n", DeviceExtension
->ComPort
);
37 Status
= STATUS_ACCESS_DENIED
;
41 INFO_(SERIAL
, "Open COM%lu: successfull\n", DeviceExtension
->ComPort
);
42 DeviceExtension
->IsOpened
= TRUE
;
43 Status
= STATUS_SUCCESS
;
46 Irp
->IoStatus
.Status
= Status
;
47 Irp
->IoStatus
.Information
= 0;
48 IoCompleteRequest(Irp
, IO_NO_INCREMENT
);