OpenCBM
|
Perform an IOCTL. More...
#include <wdm.h>
#include "cbm_driver.h"
#include "cbmioctl.h"
#include "iec.h"
#include <parallel.h>
Go to the source code of this file.
Macros | |
#define | INPUTVALUE(_ttt_) ((_ttt_ *) Irp->AssociatedIrp.SystemBuffer) |
#define | OUTPUTVALUE(_ttt_) ((_ttt_ *) Irp->AssociatedIrp.SystemBuffer) |
Functions | |
NTSTATUS | cbm_devicecontrol (IN PDEVICE_OBJECT Fdo, IN PIRP Irp) |
Services IOCTLs. More... | |
NTSTATUS | cbm_execute_devicecontrol (IN PDEVICE_EXTENSION Pdx, IN PIRP Irp) |
Executes IOCTLs. More... | |
#define INPUTVALUE | ( | _ttt_ | ) | ((_ttt_ *) Irp->AssociatedIrp.SystemBuffer) |
This translates the inputbuffer in the corresponding value to be used for giving as parameter
Definition at line 336 of file ioctl.c.
Referenced by cbm_execute_devicecontrol().
#define OUTPUTVALUE | ( | _ttt_ | ) | ((_ttt_ *) Irp->AssociatedIrp.SystemBuffer) |
This translates the outputbuffer in the corresponding value to be used for giving as parameter
Definition at line 341 of file ioctl.c.
Referenced by cbm_execute_devicecontrol().
NTSTATUS cbm_devicecontrol | ( | IN PDEVICE_OBJECT | Fdo, |
IN PIRP | Irp | ||
) |
Services IOCTLs.
Services IRPs containing the IRP_MJ_DEVICE_CONTROL I/O function code.
Fdo | Pointer to a DEVICE_OBJECT structure. This is the device object for the target device, previously created by the driver's AddDevice routine. |
Irp | Pointer to an IRP structure that describes the requested I/O operation. |
The driver's DriverEntry routine stored this routine's address in DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL].
Generally, all Dispatch routines execute in an arbitrary thread context at IRQL PASSIVE_LEVEL, but there are exceptions.
Definition at line 115 of file ioctl.c.
References CBMCTRL_CLEAR_EOI, CBMCTRL_CLOSE, CBMCTRL_GET_EOI, CBMCTRL_I_INSTALL, CBMCTRL_I_READDBG, CBMCTRL_IEC_DBG_READ, CBMCTRL_IEC_DBG_WRITE, CBMCTRL_IEC_POLL, CBMCTRL_IEC_RELEASE, CBMCTRL_IEC_SET, CBMCTRL_IEC_SETRELEASE, CBMCTRL_IEC_WAIT, CBMCTRL_LISTEN, CBMCTRL_OPEN, CBMCTRL_PARBURST_READ, CBMCTRL_PARBURST_READ_TRACK, CBMCTRL_PARBURST_READ_TRACK_VAR, CBMCTRL_PARBURST_WRITE, CBMCTRL_PARBURST_WRITE_TRACK, CBMCTRL_PARPORT_LOCK, CBMCTRL_PARPORT_UNLOCK, CBMCTRL_PP_READ, CBMCTRL_PP_WRITE, CBMCTRL_RESET, CBMCTRL_TALK, CBMCTRL_TEST_IRQ, CBMCTRL_UNLISTEN, CBMCTRL_UNTALK, CBMCTRL_UPDATE, DBG_ERROR, DBG_IRPPATH_PROCESS, DBG_PREFIX, FUNC_ENTER, PERF_EVENT_IOCTL_QUEUE, QueueCompleteIrp(), and QueueStartPacket().
Referenced by DriverCommonInit().
NTSTATUS cbm_execute_devicecontrol | ( | IN PDEVICE_EXTENSION | Pdx, |
IN PIRP | Irp | ||
) |
Executes IOCTLs.
Executes IRPs containing the IRP_MJ_DEVICE_CONTROL I/O function code.
Pdx | Pointer to the DEVICE_EXTENSION structure. |
Irp | Pointer to an IRP structure that describes the requested I/O operation. |
This function does not perform any validity checks on the input and output buffer! This should already been done in cbm_devicecontrol.
Definition at line 363 of file ioctl.c.
References cbm_dbg_readbuffer(), cbm_init_registry(), cbm_install(), cbm_lock(), cbm_lock_parport(), cbm_unlock(), CBMCTRL_CLEAR_EOI, CBMCTRL_CLOSE, CBMCTRL_GET_EOI, CBMCTRL_I_INSTALL, CBMCTRL_I_READDBG, CBMCTRL_IEC_DBG_READ, CBMCTRL_IEC_DBG_WRITE, CBMCTRL_IEC_POLL, CBMCTRL_IEC_RELEASE, CBMCTRL_IEC_SET, CBMCTRL_IEC_SETRELEASE, CBMCTRL_IEC_WAIT, CBMCTRL_LISTEN, CBMCTRL_OPEN, CBMCTRL_PARBURST_READ, CBMCTRL_PARBURST_READ_TRACK, CBMCTRL_PARBURST_READ_TRACK_VAR, CBMCTRL_PARBURST_WRITE, CBMCTRL_PARBURST_WRITE_TRACK, CBMCTRL_PARPORT_LOCK, CBMCTRL_PARPORT_UNLOCK, CBMCTRL_PP_READ, CBMCTRL_PP_WRITE, CBMCTRL_RESET, CBMCTRL_TALK, CBMCTRL_TEST_IRQ, CBMCTRL_UNLISTEN, CBMCTRL_UNTALK, CBMCTRL_UPDATE, cbmiec_clear_eoi(), cbmiec_close(), cbmiec_get_eoi(), cbmiec_iec_dbg_read(), cbmiec_iec_dbg_write(), cbmiec_iec_poll(), cbmiec_iec_release(), cbmiec_iec_set(), cbmiec_iec_setrelease(), cbmiec_iec_wait(), cbmiec_listen(), cbmiec_open(), cbmiec_parallel_burst_read(), cbmiec_parallel_burst_read_track(), cbmiec_parallel_burst_read_track_var(), cbmiec_parallel_burst_write(), cbmiec_pp_read(), cbmiec_pp_write(), cbmiec_reset(), cbmiec_talk(), cbmiec_test_irq(), cbmiec_unlisten(), cbmiec_untalk(), DBG_ASSERT, DBG_ERROR, DBG_IRPPATH_COMPLETE, DBG_IRPPATH_EXECUTE, DBG_PREFIX, FUNC_ENTER, INPUTVALUE, OUTPUTVALUE, PERF_EVENT_IOCTL_EXECUTE, and QueueCompleteIrp().
Referenced by cbm_startio().