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)
9 /* INCLUDES *******************************************************************/
16 /* FUNCTIONS ******************************************************************/
19 CompleteRequest(IN PIRP Irp
,
21 IN ULONG_PTR Information
)
23 Irp
->IoStatus
.Status
= Status
;
24 Irp
->IoStatus
.Information
= Information
;
25 IoCompleteRequest(Irp
, IO_NO_INCREMENT
);
31 ConDrvDispatch(IN PDEVICE_OBJECT DeviceObject
, IN PIRP Irp
)
33 #define HANDLE_CTRL_CODE(Code) \
36 DPRINT1("ConDrv: " #Code ", stack->FileObject = 0x%p\n", stack->FileObject); \
37 if (stack->FileObject) \
39 DPRINT1("stack->FileObject->FileName = %wZ\n", &stack->FileObject->FileName); \
44 PIO_STACK_LOCATION stack
= IoGetCurrentIrpStackLocation(Irp
);
45 // ULONG ctrlCode = stack->Parameters.DeviceIoControl.IoControlCode;
46 ULONG MajorFunction
= stack
->MajorFunction
;
48 /* Just display all the IRP codes for now... */
49 switch (MajorFunction
)
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:
84 DPRINT1("Unknown Major %lu\n", MajorFunction
);
89 return CompleteRequest(Irp
, STATUS_SUCCESS
, 0);