Sync with trunk r65656.
[reactos.git] / drivers / base / condrv / dispatch.c
1 /*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS Console Driver
4 * FILE: drivers/base/condrv/dispatch.c
5 * PURPOSE: Console Driver - Dispatching interface
6 * PROGRAMMERS: Hermes Belusca-Maito (hermes.belusca@sfr.fr)
7 */
8
9 /* INCLUDES *******************************************************************/
10
11 #include "condrv.h"
12
13 #define NDEBUG
14 #include <debug.h>
15
16 /* FUNCTIONS ******************************************************************/
17
18 NTSTATUS NTAPI
19 CompleteRequest(IN PIRP Irp,
20 IN NTSTATUS Status,
21 IN ULONG_PTR Information)
22 {
23 Irp->IoStatus.Status = Status;
24 Irp->IoStatus.Information = Information;
25 IoCompleteRequest(Irp, IO_NO_INCREMENT);
26
27 return Status;
28 }
29
30 NTSTATUS NTAPI
31 ConDrvDispatch(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
32 {
33 #define HANDLE_CTRL_CODE(Code) \
34 case Code : \
35 { \
36 DPRINT1("ConDrv: " #Code ", stack->FileObject = 0x%p\n", stack->FileObject); \
37 if (stack->FileObject) \
38 { \
39 DPRINT1("stack->FileObject->FileName = %wZ\n", &stack->FileObject->FileName); \
40 } \
41 break; \
42 }
43
44 PIO_STACK_LOCATION stack = IoGetCurrentIrpStackLocation(Irp);
45 // ULONG ctrlCode = stack->Parameters.DeviceIoControl.IoControlCode;
46 ULONG MajorFunction = stack->MajorFunction;
47
48 /* Just display all the IRP codes for now... */
49 switch (MajorFunction)
50 {
51 HANDLE_CTRL_CODE(IRP_MJ_CREATE);
52 HANDLE_CTRL_CODE(IRP_MJ_CREATE_NAMED_PIPE);
53 HANDLE_CTRL_CODE(IRP_MJ_CLOSE);
54 HANDLE_CTRL_CODE(IRP_MJ_READ);
55 HANDLE_CTRL_CODE(IRP_MJ_WRITE);
56 HANDLE_CTRL_CODE(IRP_MJ_QUERY_INFORMATION);
57 HANDLE_CTRL_CODE(IRP_MJ_SET_INFORMATION);
58 HANDLE_CTRL_CODE(IRP_MJ_QUERY_EA);
59 HANDLE_CTRL_CODE(IRP_MJ_SET_EA);
60 HANDLE_CTRL_CODE(IRP_MJ_FLUSH_BUFFERS);
61 HANDLE_CTRL_CODE(IRP_MJ_QUERY_VOLUME_INFORMATION);
62 HANDLE_CTRL_CODE(IRP_MJ_SET_VOLUME_INFORMATION);
63 HANDLE_CTRL_CODE(IRP_MJ_DIRECTORY_CONTROL);
64 HANDLE_CTRL_CODE(IRP_MJ_FILE_SYSTEM_CONTROL);
65 HANDLE_CTRL_CODE(IRP_MJ_DEVICE_CONTROL);
66 HANDLE_CTRL_CODE(IRP_MJ_INTERNAL_DEVICE_CONTROL);
67 HANDLE_CTRL_CODE(IRP_MJ_SHUTDOWN);
68 HANDLE_CTRL_CODE(IRP_MJ_LOCK_CONTROL);
69 HANDLE_CTRL_CODE(IRP_MJ_CLEANUP);
70 HANDLE_CTRL_CODE(IRP_MJ_CREATE_MAILSLOT);
71 HANDLE_CTRL_CODE(IRP_MJ_QUERY_SECURITY);
72 HANDLE_CTRL_CODE(IRP_MJ_SET_SECURITY);
73 HANDLE_CTRL_CODE(IRP_MJ_POWER);
74 HANDLE_CTRL_CODE(IRP_MJ_SYSTEM_CONTROL);
75 HANDLE_CTRL_CODE(IRP_MJ_DEVICE_CHANGE);
76 HANDLE_CTRL_CODE(IRP_MJ_QUERY_QUOTA);
77 HANDLE_CTRL_CODE(IRP_MJ_SET_QUOTA);
78 HANDLE_CTRL_CODE(IRP_MJ_PNP);
79 // case IRP_MJ_PNP_POWER:
80 // case IRP_MJ_MAXIMUM_FUNCTION:
81
82 default:
83 {
84 DPRINT1("Unknown Major %lu\n", MajorFunction);
85 break;
86 }
87 }
88
89 return CompleteRequest(Irp, STATUS_SUCCESS, 0);
90 }
91
92 /* EOF */