#include "config.h"
#include <parallel.h>
#include "cbmioctl.h"
#include "memtags.h"
#include "util.h"
#include "queue.h"
#include "cbmlog.h"
Go to the source code of this file.
Defines | |
| #define | DVRH_USE_PARPORT_ECP_ADDR 1 |
| #define | DBG_PROGNAME "CBM4WIN.SYS" |
| #define | CBMDEVICENAME L"\\DosDevices\\opencbm" |
Typedefs | |
| typedef _ARCH_DEVICE_EXTENSION | ARCH_DEVICE_EXTENSION |
| typedef PVOID | PENUMERATE |
Functions | |
| VOID | DriverUnload (IN PDRIVER_OBJECT DriverObject) |
| Unload routine of the driver. | |
| NTSTATUS | DriverCommonInit (IN PDRIVER_OBJECT Driverobject, IN PUNICODE_STRING RegistryPath) |
| Perform driver initialization, common to WDM and NT4 driver. | |
| VOID | DriverCommonUninit (VOID) |
| Undo what DriverCommonInit() has done. | |
| NTSTATUS | AddDeviceCommonInit (IN PDEVICE_OBJECT Fdo, IN PUNICODE_STRING DeviceName, IN PCWSTR ParallelPortName) |
| Initialize device object, common to WDM and NT4 driver. | |
| NTSTATUS | cbm_install (IN PDEVICE_EXTENSION Pdx, OUT PCBMT_I_INSTALL_OUT ReturnBuffer, IN OUT PULONG ReturnLength) |
| Complete driver installation. | |
| NTSTATUS | cbm_lock (IN PDEVICE_EXTENSION Pdx) |
| Lock the parallel port for the driver. | |
| NTSTATUS | cbm_unlock (IN PDEVICE_EXTENSION Pdx) |
| Unlock the parallel port for the driver. | |
| NTSTATUS | cbm_lock_parport (IN PDEVICE_EXTENSION Pdx) |
| Lock the parallel port for the driver. | |
| NTSTATUS | cbm_unlock_parport (IN PDEVICE_EXTENSION Pdx) |
| Unlock the parallel port for the driver. | |
| VOID | cbm_init_registry (IN PUNICODE_STRING RegistryPath, IN PDEVICE_EXTENSION Pdx) |
| Initialize from registry. | |
| NTSTATUS | cbm_startio (IN PDEVICE_OBJECT Fdo, IN PIRP Irp) |
| Execute an IRP. | |
| NTSTATUS | cbm_createopenclose (IN PDEVICE_OBJECT Fdo, IN PIRP Irp) |
| Services IRPs containing the IRP_MJ_CREATE or IRP_MJ_CLOSE I/O function code. | |
| NTSTATUS | cbm_readwrite (IN PDEVICE_OBJECT Fdo, IN PIRP Irp) |
| Services reads from or writes to the driver. | |
| NTSTATUS | cbm_execute_readwrite (IN PDEVICE_EXTENSION Pdx, IN PIRP Irp) |
| Executes reads from or writes to the driver. | |
| NTSTATUS | cbm_execute_createopen (IN PDEVICE_EXTENSION Pdx, IN PIRP Irp) |
| Execute IRPs containing the IRP_MJ_CREATEOPEN I/O function code. | |
| NTSTATUS | cbm_cleanup (IN PDEVICE_OBJECT Fdo, IN PIRP Irp) |
| Services IRPs containing the IRP_MJ_CLEANUP I/O function code. | |
| NTSTATUS | cbm_execute_close (IN PDEVICE_EXTENSION Pdx, IN PIRP Irp) |
| Execute IRPs containing the IRP_MJ_CLOSE I/O function code. | |
| NTSTATUS | cbm_devicecontrol (IN PDEVICE_OBJECT Fdo, IN PIRP Irp) |
| Services IOCTLs. | |
| NTSTATUS | cbm_execute_devicecontrol (IN PDEVICE_EXTENSION Pdx, IN PIRP Irp) |
| Executes IOCTLs. | |
| BOOLEAN | cbm_isr (IN PKINTERRUPT Interrupt, IN PVOID Pdx) |
| Interrupt Service Routine (ISR). | |
| VOID | cbm_thread (IN PVOID Context) |
| The thread function. | |
| NTSTATUS | cbm_start_thread (IN PDEVICE_EXTENSION Pdx) |
| Start the worker thread. | |
| VOID | cbm_stop_thread (IN PDEVICE_EXTENSION Pdx) |
| Stop the worker thread. | |
| NTSTATUS | ParPortEnumerateOpen (PENUMERATE *EnumStruct) |
| Start enumeration of the parallel port drivers. | |
| NTSTATUS | ParPortEnumerate (PENUMERATE EnumStruct, PCWSTR *DriverName) |
| Get next enumerated parallel port driver. | |
| VOID | ParPortEnumerateClose (PENUMERATE EnumStruct) |
| Stop enumeration of the parallel port drivers. | |
| NTSTATUS | ParPortInit (PUNICODE_STRING ParallelPortName, PDEVICE_EXTENSION Pdx) |
| Initialize the knowledge on a parallel port. | |
| NTSTATUS | ParPortDeinit (PDEVICE_EXTENSION Pdx) |
| Undoes anything ParPortInit has done. | |
| NTSTATUS | ParPortAllocate (PDEVICE_EXTENSION Pdx) |
| Allocate a parallel port for using it. | |
| NTSTATUS | ParPortFree (PDEVICE_EXTENSION Pdx) |
| Free a parallel port after using it. | |
| NTSTATUS | ParPortSetMode (PDEVICE_EXTENSION Pdx) |
| Set the operational mode of the parallel port. | |
| NTSTATUS | ParPortUnsetMode (PDEVICE_EXTENSION Pdx) |
| Unset the operational mode of the parallel port. | |
| NTSTATUS | ParPortSetModeWdm (PDEVICE_EXTENSION Pdx) |
| Set the operational mode of the parallel port, WDM Version. | |
| NTSTATUS | ParPortUnsetModeWdm (PDEVICE_EXTENSION Pdx) |
| Unset the operational mode of the parallel port, WDM Version. | |
| NTSTATUS | ParPortAllocInterrupt (PDEVICE_EXTENSION Pdx, PKSERVICE_ROUTINE Isr) |
| Allocate an interrupt routine for a parallel port. | |
| NTSTATUS | ParPortFreeInterrupt (PDEVICE_EXTENSION Pdx) |
| Free an interrupt routine for a parallel port after using it. | |
| NTSTATUS | ParPortAllowInterruptIoctl (PDEVICE_EXTENSION Pdx) |
| Set registry key such that we can get the interrupt of a parallel port. | |
| NTSTATUS | cbm_registry_open_for_read (OUT PHANDLE HandleKey, IN PUNICODE_STRING Path) |
| Open a registry path for reading. | |
| NTSTATUS | cbm_registry_open_hardwarekey (OUT PHANDLE HandleKey, OUT PDEVICE_OBJECT *Pdo, IN PDEVICE_EXTENSION Pdx) |
| Open the hardware key for another driver. | |
| NTSTATUS | cbm_registry_close (IN HANDLE HandleKey) |
| Close a registry key. | |
| NTSTATUS | cbm_registry_close_hardwarekey (IN HANDLE HandleKey, IN PDEVICE_OBJECT Pdo) |
| Close a hardware registry key. | |
| NTSTATUS | cbm_registry_read_ulong (IN HANDLE HandleKey, IN PCWSTR KeyName, OUT PULONG Value) |
| Read a ULONG value out of a registry key. | |
| NTSTATUS | cbm_registry_write_ulong (IN HANDLE HandleKey, IN PCWSTR KeyName, IN ULONG Value) |
| Write a ULONG value out of a registry key. | |
| NTSTATUS | CbmOpenDeviceRegistryKey (IN PDEVICE_OBJECT a, IN ULONG b, IN ACCESS_MASK c, OUT PHANDLE d) |
| Stub for a function. | |
| ULONG | CbmGetCurrentProcessorNumber (VOID) |
| Wrapper for KeGetCurrentProcessorNumber(). | |
| ULONG | CbmGetNumberProcessors (VOID) |
| VOID | CLI (VOID) |
| Stop interrupts with CLI assembler command. | |
| VOID | STI (VOID) |
| Restart interrupts with STI assembler command. | |
**************************************************************
Definition in file arch_cbm_driver.h.
|
|
The name if the driver. This name gets a number appended, starting with 0. Definition at line 39 of file arch_cbm_driver.h. Referenced by AddDevice(). |
|
|
Name of the executable to be debugged Definition at line 30 of file arch_cbm_driver.h. |
|
|
make sure that ECR_OFFSET and the like use 0x02, and not 0x0402 in parallel.h Definition at line 25 of file arch_cbm_driver.h. |
|
|
The device extension for the device |
|
|
opaque enumeration structure. Definition at line 204 of file arch_cbm_driver.h. |
|
||||||||||||||||
|
Initialize device object, common to WDM and NT4 driver. This function initializes the device object, as done in AddDevice() of a WDM driver, or in DriverEntry() for an NT4 driver.
1. Initialize the Pdx 2. Initialize the Queue inside of the Pdx 3. Initialize the operating mode of the Fdo (Buffered, Direct, Neither) 4. Get the information from the parallel port 5. Start the Worker Thread 6. Log either success or failure Definition at line 277 of file libcommon/init.c. References cbm_start_thread(), cbm_startio(), DBG_ERROR, DBG_PREFIX, FUNC_ENTER, LogErrorOnly, LogErrorString, ParPortInit(), and QueueInit(). Referenced by AddDevice(). |
|
||||||||||||
|
Services IRPs containing the IRP_MJ_CLEANUP I/O function code. Services IRPs containing the IRP_MJ_CREATE I/O function code.
Definition at line 45 of file cleanup.c. References FUNC_ENTER, QueueCleanup(), and QueueCompleteIrp(). Referenced by DriverCommonInit(). |
|
||||||||||||
|
Services IRPs containing the IRP_MJ_CREATE or IRP_MJ_CLOSE I/O function code. Services IRPs containing the IRP_MJ_CREATE or IRP_MJ_CLOSE I/O function code.
Generally, all Dispatch routines execute in an arbitrary thread context at IRQL PASSIVE_LEVEL, but there are exceptions. Definition at line 48 of file libcommon/openclose.c. References DBG_ERROR, DBG_IRPPATH_COMPLETE, DBG_IRPPATH_PROCESS, DBG_PREFIX, FUNC_ENTER, PERF_EVENT_CLOSE_QUEUE, PERF_EVENT_OPEN_QUEUE, QueueCompleteIrp(), and QueueStartPacket(). Referenced by DriverCommonInit(). |
|
||||||||||||
|
Services IOCTLs. Services IRPs containing the IRP_MJ_DEVICE_CONTROL I/O function code.
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_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_WRITE, CBMCTRL_PARBURST_WRITE_TRACK, CBMCTRL_PARPORT_LOCK, CBMCTRL_PARPORT_UNLOCK, CBMCTRL_PP_READ, CBMCTRL_PP_WRITE, CBMCTRL_RESET, CBMCTRL_TALK, 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(). |
|
||||||||||||
|
Execute IRPs containing the IRP_MJ_CLOSE I/O function code. Executes IRPs containing the IRP_MJ_CLOSE I/O function code.
Definition at line 167 of file libcommon/openclose.c. References cbm_unlock_parport(), DBG_ASSERT, DBG_IRPPATH_COMPLETE, DBG_IRPPATH_PROCESS, FUNC_ENTER, PERF_EVENT_CLOSE_EXECUTE, and QueueCompleteIrp(). Referenced by cbm_startio(). |
|
||||||||||||
|
Execute IRPs containing the IRP_MJ_CREATEOPEN I/O function code. Executes IRPs containing the IRP_MJ_CREATEOPEN I/O function code.
Definition at line 118 of file libcommon/openclose.c. References cbm_lock_parport(), DBG_ASSERT, DBG_IRPPATH_COMPLETE, DBG_IRPPATH_EXECUTE, FUNC_ENTER, PERF_EVENT_OPEN_EXECUTE, and QueueCompleteIrp(). Referenced by cbm_startio(). |
|
||||||||||||
|
||||||||||||
|
Executes reads from or writes to the driver. Services reads from or writes to the driver
Definition at line 179 of file readwrite.c. References cbmiec_raw_read(), cbmiec_raw_write(), DBG_ASSERT, DBG_ERROR, DBG_IRPPATH_EXECUTE, DBG_PREFIX, FUNC_ENTER, PERF_EVENT_READ_EXECUTE, PERF_EVENT_WRITE_EXECUTE, and QueueCompleteIrp(). Referenced by cbm_startio(). |
|
||||||||||||
|
Initialize from registry. This function initializes some driver settings from the appropriate registry keys.
Pdx can be NULL, too. If it is NULL, no device-specific data is read at all. If RegistryPath is not NULL, some memory is allocated. This has to be freed by calling DriverCommonUninit(). Definition at line 56 of file libcommon/init.c. References cbm_lock_parport(), cbm_registry_close(), cbm_registry_open_for_read(), cbm_registry_read_ulong(), cbmiec_global_init(), cbmiec_set_cabletype(), DBG_ASSERT, FUNC_ENTER, FUNC_LEAVE, and MTAG_SERVKEY. Referenced by AddDevice(), cbm_execute_devicecontrol(), and DriverCommonInit(). |
|
||||||||||||||||
|
Complete driver installation. This function performs anything that is needed for completing the driver installation.
Definition at line 52 of file install.c. References CBM_I_DRIVER_INSTALL_0M_NO_INTERRUPT, CBMT_I_INSTALL_OUT_MAKE_VERSION, CBMT_I_INSTALL_OUT_MAKE_VERSION_EX, FUNC_ENTER, and ParPortAllowInterruptIoctl(). Referenced by cbm_execute_devicecontrol(). |
|
||||||||||||
|
Interrupt Service Routine (ISR). This is the Interrupt Service Routine for the parallel port.
Definition at line 39 of file isr.c. References cbmiec_interrupt(). Referenced by cbm_lock_parport(). |
|
|
Lock the parallel port for the driver. This function locks the driver onto the parallel port. This way, no other program or driver can allocate the parallel port and interfere with the communication.
Definition at line 174 of file lockunlock.c. References DBG_PREFIX, DBG_PRINT, and FUNC_ENTER. |
|
|
Lock the parallel port for the driver. This function locks the driver onto the parallel port, so we can use the port afterwards.
Definition at line 40 of file lockunlock.c. References cbm_isr(), cbmiec_init(), cbmiec_release_bus(), DBG_ASSERT, DBG_PREFIX, DBG_PRINT, FUNC_ENTER, ParPortAllocate(), ParPortAllocInterrupt(), ParPortFree(), ParPortFreeInterrupt(), ParPortSetMode(), and ParPortUnsetMode(). Referenced by cbm_execute_createopen(), and cbm_init_registry(). |
|
||||||||||||
|
Services reads from or writes to the driver. Services reads from or writes to the driver
Generally, all Dispatch routines execute in an arbitrary thread context at IRQL PASSIVE_LEVEL, but there are exceptions. Definition at line 85 of file readwrite.c. References DBG_ASSERT, DBG_IRPPATH_PROCESS, FUNC_ENTER, PERF_EVENT_READ_QUEUE, PERF_EVENT_WRITE_QUEUE, QueueCompleteIrp(), and QueueStartPacket(). Referenced by DriverCommonInit(). |
|
|
Close a registry key. This function closes a registry key.
Definition at line 231 of file util-reg.c. References FUNC_ENTER. Referenced by cbm_init_registry(), and cbm_registry_close_hardwarekey(). |
|
||||||||||||
|
Close a hardware registry key. This function closes a registry key pointing to a hardware registry key.
Definition at line 261 of file util-reg.c. References cbm_registry_close(), and FUNC_ENTER. Referenced by ParPortAllowInterruptIoctl(). |
|
||||||||||||
|
Open a registry path for reading. This function opens a registry key ("path"). This way, its entries can be read afterwards.
Definition at line 44 of file util-reg.c. References DBG_PREFIX, FUNC_ENTER, and FUNC_PARAM. Referenced by cbm_init_registry(). |
|
||||||||||||||||
|
Open the hardware key for another driver. This function opens a the "hardware" registry key for the parallel port driver.
Thanks to Doron Holan [MS] for pointing out how to do it (MsgId:<O6weQL8qEHA.3428@TK2MSFTNGP11.phx.gbl> on microsoft.public.development.device.drivers, http://groups.google.com/groups?selm=O6weQL8qEHA.3428%40TK2MSFTNGP11.phx.gbl Definition at line 96 of file util-reg.c. References CbmOpenDeviceRegistryKey(), DBG_ASSERT, and FUNC_ENTER. Referenced by ParPortAllowInterruptIoctl(). |
|
||||||||||||||||
|
Read a ULONG value out of a registry key. This function reads a ULONG value out of the registry.
Definition at line 300 of file util-reg.c. References DBG_PREFIX, FUNC_ENTER, and FUNC_PARAM. Referenced by cbm_init_registry(), and ParPortAllowInterruptIoctl(). |
|
||||||||||||||||
|
Write a ULONG value out of a registry key. This function writes a ULONG value to the registry.
Definition at line 357 of file util-reg.c. References DBG_PREFIX, FUNC_ENTER, and FUNC_PARAM. Referenced by ParPortAllowInterruptIoctl(). |
|
|
Start the worker thread. This function start the worker thread.
Definition at line 35 of file thread.c. References cbm_thread(), DBG_ASSERT, DBG_ERROR, DBG_PREFIX, FUNC_ENTER, LogErrorString, and PERF_EVENT_THREAD_START_SCHED. Referenced by AddDeviceCommonInit(). |
|
||||||||||||
|
Execute an IRP. This function executes an IRP. Normally, it is called from as StartIo() routine from the QUEUE, but it can be called directly (for example, if FastStart is selected).
Definition at line 40 of file startio.c. References cbm_execute_close(), cbm_execute_createopen(), cbm_execute_devicecontrol(), cbm_execute_readwrite(), DBG_ASSERT, DBG_ERROR, DBG_PREFIX, FUNC_ENTER, and PERF_EVENT_STARTIO. Referenced by AddDeviceCommonInit(). |
|
|
Stop the worker thread. This function stops the worker thread.
Definition at line 118 of file thread.c. References DBG_ASSERT, FUNC_ENTER, FUNC_LEAVE, PERF_EVENT_THREAD_STOP_SCHED, and QueueSignal(). Referenced by DriverUnload(). |
|
|
The thread function. This function is the function of the thread itself. It polls the QUEUE and executed the IRPs which are on it.
Definition at line 166 of file thread.c. References FUNC_ENTER, FUNC_LEAVE, PERF_EVENT_THREAD_POLL, PERF_EVENT_THREAD_START_EXEC, PERF_EVENT_THREAD_STOP_EXEC, and QueuePoll(). Referenced by cbm_start_thread(). |
|
|
Unlock the parallel port for the driver. This function unlocks the driver from the parallel port. This way, other programs and drivers can allocate the parallel port and do their own communication with whatever device they use.
Definition at line 203 of file lockunlock.c. References DBG_PREFIX, DBG_PRINT, and FUNC_ENTER. |
|
|
Unlock the parallel port for the driver. This function unlocks the driver from the parallel port after the port has been used.
Definition at line 123 of file lockunlock.c. References cbmiec_release_bus(), DBG_ASSERT, DBG_PREFIX, DBG_PRINT, FUNC_ENTER, ParPortFree(), ParPortFreeInterrupt(), and ParPortUnsetMode(). Referenced by cbm_execute_close(), and DriverUnload(). |
|
|
Wrapper for KeGetCurrentProcessorNumber(). See KeGetCurrentProcessorNumber() This function is needed as KeGetCurrentProcessorNumber() is only defined in NTDDK.H, not in WDM.H. Anyway, for debugging purposes, we need to access it from anywhere.. Definition at line 32 of file processor.c. |
|
||||||||||||||||||||
|
Stub for a function. This function is not available on NT4, and it is not needed there, but it is needed for WDM. Because of this, we define it here for cbm4wdm.sys, so that the driver works in either case. Definition at line 304 of file nt4/PortEnum.c. References FUNC_ENTER. Referenced by cbm_registry_open_hardwarekey(). |
|
|
Stop interrupts with CLI assembler command. This function stops interrupts on the current CPU by executing a CLI assembler command. Definition at line 29 of file amd64/clisti.c. Referenced by cbmiec_block_irq(). |
|
||||||||||||
|
Perform driver initialization, common to WDM and NT4 driver. This function is called from the DriverEntry() of either the WDM or the NT4 driver.
Definition at line 191 of file libcommon/init.c. References cbm_cleanup(), cbm_createopenclose(), cbm_devicecontrol(), cbm_init_registry(), cbm_readwrite(), DriverUnload(), FUNC_ENTER, and PERF_INIT. Referenced by DriverEntry(). |
|
|
Undo what DriverCommonInit() has done. This function is called from the DriverUnload() of either the WDM or the NT4 driver. This function frees memory allocated by cbm_init_registry(). Definition at line 224 of file libcommon/init.c. References DBGDO, FUNC_ENTER, FUNC_LEAVE, and PERF_SAVE. Referenced by DriverUnload(). |
|
|
Unload routine of the driver. DriverUnload performs any operations that are necessary before the system unloads the driver.
Definition at line 179 of file nt4/LoadUnload.c. References cbm_stop_thread(), cbm_unlock_parport(), DBG_ASSERT, DriverCommonUninit(), FUNC_ENTER, FUNC_LEAVE, and ParPortDeinit(). Referenced by DriverCommonInit(). |
|
|
Allocate a parallel port for using it. This function allocates a parallel port, preventing other drivers from accessing it.
Definition at line 158 of file PortAccess.c. References DBG_ASSERT, and FUNC_ENTER. Referenced by cbm_lock_parport(). |
|
||||||||||||
|
Allocate an interrupt routine for a parallel port. This function allocates an interrupt service routine for a parallel port.
The parallel port has to be already allocated! This function must be run at IRQL == PASSIVE_LEVEL. Definition at line 618 of file PortAccess.c. References DBG_ASSERT, DBG_PREFIX, DBG_WARN, FUNC_ENTER, and LogErrorOnly. Referenced by cbm_lock_parport(). |
|
|
Set registry key such that we can get the interrupt of a parallel port. This function sets some specific registry key which allows us to allocate an interrupt service routine for a parallel port. Without this key, allocating the interrupt is forbidden for Win 2000, XP, and above. This is not true for NT4.
Definition at line 719 of file PortAccess.c. References cbm_registry_close_hardwarekey(), cbm_registry_open_hardwarekey(), cbm_registry_read_ulong(), cbm_registry_write_ulong(), DBG_ASSERT, and FUNC_ENTER. Referenced by cbm_install(). |
|
|
Undoes anything ParPortInit has done. This function undoes anything ParPortInit() has done.
One of the purposes of this function is to allow the parallel port driver to be unloaded from memory (via calling ObDereferenceObject()). This function must be run at IRQL <= DISPATCH_LEVEL. Definition at line 340 of file PortAccess.c. References FUNC_ENTER. Referenced by DriverUnload(). |
|
||||||||||||
|
Get next enumerated parallel port driver. This function starts the enumeration process of the parallel port drivers
Definition at line 197 of file nt4/PortEnum.c. References DBG_ASSERT, and FUNC_ENTER. Referenced by DriverEntry(). |
|
|
Stop enumeration of the parallel port drivers. This function stops the enumeration process of the parallel port drivers
Definition at line 265 of file nt4/PortEnum.c. References DBG_ASSERT, DBGDO, FUNC_ENTER, and FUNC_LEAVE. Referenced by DriverEntry(), and ParPortEnumerateOpen(). |
|
|
Start enumeration of the parallel port drivers. This function starts the enumeration process of the parallel port drivers
Definition at line 75 of file nt4/PortEnum.c. References FUNC_ENTER, and MTAG_SENUMERATE. Referenced by DriverEntry(). |
|
|
Free a parallel port after using it. This function frees a previously allocated parallel port.
This function must be run at IRQL == PASSIVE_LEVEL. Definition at line 196 of file PortAccess.c. References DBG_ASSERT, and FUNC_ENTER. Referenced by cbm_lock_parport(), and cbm_unlock_parport(). |
|
|
Free an interrupt routine for a parallel port after using it. This function frees a previously allocated parallel port.
This function must be run at IRQL == PASSIVE_LEVEL. Definition at line 670 of file PortAccess.c. References DBG_ASSERT, and FUNC_ENTER. Referenced by cbm_lock_parport(), and cbm_unlock_parport(). |
|
||||||||||||
|
Initialize the knowledge on a parallel port. This function gets some knowledge on a parallel port, and stores this info into the given DEVICE_EXTENSION.
One of the purposes of this function is to make sure the parallel port driver is not unloaded from memory (via IoGetDeviceObjectPointer()). This function must be run at IRQL == PASSIVE_LEVEL. Definition at line 254 of file PortAccess.c. References DBG_ASSERT, DBG_PPORT, DBG_PREFIX, DBG_WARN, FUNC_ENTER, MTAG_PPINFO, and _DEVICE_EXTENSION::ParPortPortAddress. Referenced by AddDeviceCommonInit(). |
|
|
Set the operational mode of the parallel port. This function sets the operational mode of the parallel port.
This function must be run at IRQL == PASSIVE_LEVEL. Definition at line 520 of file PortAccessNt4.c. References cbmiec_udelay(), FUNC_ENTER, ParPortSetModeNt4(), and ParPortSetModeWdm(). Referenced by cbm_lock_parport(). |
|
|
Set the operational mode of the parallel port, WDM Version. This function sets the operational mode of the parallel port.
This function must be run at IRQL == PASSIVE_LEVEL. Definition at line 456 of file PortAccess.c. References DBG_PPORT, DBG_PREFIX, DebugNtStatus(), FUNC_ENTER, and ParPortUnsetMode(). Referenced by ParPortSetMode(). |
|
|
Unset the operational mode of the parallel port. This function unsets the operational mode of the parallel port.
This function must be run at IRQL == PASSIVE_LEVEL. Definition at line 556 of file PortAccessNt4.c. References FUNC_ENTER, and ParPortUnsetModeWdm(). Referenced by cbm_lock_parport(), cbm_unlock_parport(), and ParPortSetModeWdm(). |
|
|
Unset the operational mode of the parallel port, WDM Version. This function unsets the operational mode of the parallel port.
This function must be run at IRQL == PASSIVE_LEVEL. Definition at line 539 of file PortAccess.c. References DBG_PPORT, DBG_PREFIX, DebugNtStatus(), and FUNC_ENTER. Referenced by ParPortUnsetMode(). |
|
|
Restart interrupts with STI assembler command. This function stops interrupts on the current CPU by executing a STI assembler command. Definition at line 39 of file amd64/clisti.c. Referenced by cbmiec_release_irq(). |
1.4.2