remove whitespace from end of lines
[reactos.git] / reactos / drivers / dd / serial / info.c
1 /* $Id:
2 *
3 * COPYRIGHT: See COPYING in the top level directory
4 * PROJECT: ReactOS kernel
5 * FILE: drivers/dd/serial/info.c
6 * PURPOSE: Serial IRP_MJ_QUERY_INFORMATION operations
7 *
8 * PROGRAMMERS: Hervé Poussineau (poussine@freesurf.fr)
9 */
10
11 #define NDEBUG2
12 #include "serial.h"
13
14 NTSTATUS STDCALL
15 SerialQueryInformation(
16 IN PDEVICE_OBJECT DeviceObject,
17 IN PIRP Irp)
18 {
19 PSERIAL_DEVICE_EXTENSION DeviceExtension;
20 PIO_STACK_LOCATION Stack;
21 PVOID SystemBuffer;
22 ULONG BufferLength;
23 ULONG_PTR Information = 0;
24 NTSTATUS Status;
25
26 DeviceExtension = (PSERIAL_DEVICE_EXTENSION)DeviceObject->DeviceExtension;
27 Stack = IoGetCurrentIrpStackLocation(Irp);
28 SystemBuffer = Irp->AssociatedIrp.SystemBuffer;
29 BufferLength = Stack->Parameters.QueryFile.Length;
30
31 switch (Stack->Parameters.QueryFile.FileInformationClass)
32 {
33 case FileStandardInformation:
34 {
35 PFILE_STANDARD_INFORMATION StandardInfo = (PFILE_STANDARD_INFORMATION)SystemBuffer;
36
37 DPRINT("Serial: IRP_MJ_QUERY_INFORMATION / FileStandardInformation\n");
38 if (BufferLength < sizeof(FILE_STANDARD_INFORMATION))
39 Status = STATUS_BUFFER_OVERFLOW;
40 else if (!StandardInfo)
41 Status = STATUS_INVALID_PARAMETER;
42 {
43 StandardInfo->AllocationSize.QuadPart = 0;
44 StandardInfo->EndOfFile.QuadPart = 0;
45 StandardInfo->Directory = FALSE;
46 StandardInfo->NumberOfLinks = 0;
47 StandardInfo->DeletePending = FALSE; /* FIXME: should be TRUE sometimes */
48 Status = STATUS_SUCCESS;
49 }
50 break;
51 }
52 case FilePositionInformation:
53 {
54 PFILE_POSITION_INFORMATION PositionInfo = (PFILE_POSITION_INFORMATION)SystemBuffer;
55
56 ASSERT(PositionInfo);
57
58 DPRINT("Serial: IRP_MJ_QUERY_INFORMATION / FilePositionInformation\n");
59 if (BufferLength < sizeof(PFILE_POSITION_INFORMATION))
60 Status = STATUS_BUFFER_OVERFLOW;
61 else if (!PositionInfo)
62 Status = STATUS_INVALID_PARAMETER;
63 else
64 {
65 PositionInfo->CurrentByteOffset.QuadPart = 0;
66 Status = STATUS_SUCCESS;
67 }
68 break;
69 }
70 default:
71 {
72 DPRINT("Serial: IRP_MJ_QUERY_INFORMATION: Unexpected file information class 0x%02x\n", Stack->Parameters.QueryFile.FileInformationClass);
73 return ForwardIrpAndForget(DeviceObject, Irp);
74 }
75 }
76
77 Irp->IoStatus.Information = Information;
78 Irp->IoStatus.Status = Status;
79 IoCompleteRequest(Irp, IO_NO_INCREMENT);
80 return Status;
81 }