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 */ 93