OpenCBM
Todo List
Global _ARCH_DEVICE_EXTENSION::DeviceName
Only for WDM driver PDEVICE_OBJECT LowerDeviceObject;
Global AddDevice (IN PDRIVER_OBJECT DriverObject, IN PDEVICE_OBJECT PdoUNUSED, IN PCWSTR ParallelPortName)

Parameter is currently unused

Will be removed for WDM

Remove this

Parameter is currently unused

Will be removed for WDM

Remove this

Only used for WDM!

Global CABLESTATE
document
Global callback
document
Global cbm_dbg_readbuffer (IN PDEVICE_EXTENSION Pdx, OUT PCHAR ReturnBuffer, IN OUT PULONG ReturnLength)
Global cbm_driver_open (CBM_FILE *f, int port)
FIXME: port isn't used yet
Global cbm_driver_open (CBM_FILE *f, int port)
FIXME: port isn't used yet
Global cbm_execute_readwrite (IN PDEVICE_EXTENSION Pdx, IN PIRP Irp)
Remove this, is this does not make sense.
Global cbm_get_driver_name (int port)
FIXME: port isn't used yet
Global cbm_get_driver_name (int port)
FIXME: port isn't used yet
Global cbm_install_parameter_plugin_t
document
Global cbm_install_parameter_t
document
Global cbm_lock_parport (IN PDEVICE_EXTENSION Pdx)
As we will try to cope without interrupt, do not handle it as an open failure if we do not succeed!
Global cbm_start_thread (IN PDEVICE_EXTENSION Pdx)
Replace Pdx->QuitThread with a event for quitting
Global CbmCheckDriver (void)

NeededAccessRights()

Suggested output from WoMo: Checking configuration for OpenCBM: No problems found in current configuration:

Global cbmiec_is_cable_state_wrong (PDEVICE_EXTENSION Pdx)
document
Global cbmiec_parallel_burst_read (IN PDEVICE_EXTENSION Pdx, OUT UCHAR *Byte)
document
Global cbmiec_parallel_burst_read_track (IN PDEVICE_EXTENSION Pdx, OUT UCHAR *Buffer, IN ULONG ReturnLength)
document
Global cbmiec_parallel_burst_read_track (IN PDEVICE_EXTENSION Pdx, OUT UCHAR *Buffer, IN ULONG ReturnLength)
document
Global cbmiec_parallel_burst_read_track_var (IN PDEVICE_EXTENSION Pdx, OUT UCHAR *Buffer, IN ULONG ReturnLength)
document
Global cbmiec_parallel_burst_read_track_var (IN PDEVICE_EXTENSION Pdx, OUT UCHAR *Buffer, IN ULONG ReturnLength)
document
Global cbmiec_parallel_burst_write (IN PDEVICE_EXTENSION Pdx, IN UCHAR Byte)
document
Global cbmiec_show_port (UCHAR *s)
document
Global cbmiec_test_irq (IN PDEVICE_EXTENSION Pdx, OUT PVOID Buffer, IN ULONG BufferLength)

document

document

Global cbmiec_wait_for_listener (IN PDEVICE_EXTENSION Pdx, IN BOOLEAN SendEoi)
Shouldn't we make sure that there is no spurious interrupt until now?
Global CbmPluginInstallProcessCommandlineData_t
document
Global CHECKEDBUFFERACCESS (_func_)
document
Global CHECKEDBUFFERACCESS_EPILOG ()
document
Global CHECKEDBUFFERACCESS_PROLOG ()
document
Global DbgOutputMemoryBuffer (const char *String)
More debugging for the sanity checks to find the cause why DbgBufferSynchronizeStart() does not work without using the SpinLock.
Global DEFINE_GUID (GUID_OPENCBM, 0x9c3b5b5e, 0x558e, 0x47cc, 0x9c, 0x5, 0xf1, 0xfc, 0xf5, 0x17, 0x54, 0x7)
Currently, this is unused!
Global DEVICE_EXTENSION
document
Global DriverEntry (IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath)

DriverObject->DriverExtension->AddDevice = AddDevice;

IoRegisterPlugPlayNotification() for GUID_PARALLEL_DEVICE

Global FUNC_CHECKEDBUFFERACCESS (_offset_, _length_)
document
Global InstallPluginCallback_context_s::OpenCbmDllHandle
document
Global InstallPluginCallback_context_s::Parameter
document
Global InstallPluginCallback_context_t
document
Global InstallPluginCallback_context_t
document
Global LoadLocalOpenCBMDll (void)
document
Global LogError (IN PDEVICE_OBJECT Fdo, IN NTSTATUS ErrorCode, const WCHAR *String1, const WCHAR *String2)
Would it make sense to short the strings if the error log entry would be too big?
Global MAX_CBMFILE_VALUES
document
Global NEW_IMPLEMENTATION_WITH_SETRELEASE
document
Global opencbm_configuration_entry_remove (opencbm_configuration_handle Handle, const char Section[], const char EntryName[])
Test opencbm_configuration_entry_remove()
Global opencbm_configuration_section_remove (opencbm_configuration_handle Handle, const char Section[])
Test opencbm_configuration_section_remove()
Global opencbm_plugin_clear_eoi_t (CBM_FILE HandleDevice)
document
Global opencbm_plugin_close_t (CBM_FILE HandleDevice, unsigned char DeviceAddress, unsigned char SecondaryAddress)
document
Global opencbm_plugin_driver_close_t (CBM_FILE HandleDevice)
document
Global opencbm_plugin_driver_open_t (CBM_FILE *HandleDevice, const char *const Port)
document
Global opencbm_plugin_get_all_plugin_names (opencbm_plugin_get_all_plugin_names_context_t *Context)
document
Global opencbm_plugin_get_driver_name (const char *const Port)
do not hard-code the driver name
Global opencbm_plugin_get_driver_name_t (const char *const Port)
document
Global opencbm_plugin_get_eoi_t (CBM_FILE HandleDevice)
document
Global opencbm_plugin_iec_dbg_read_t (CBM_FILE HandleDevice)
document
Global opencbm_plugin_iec_dbg_write_t (CBM_FILE HandleDevice, unsigned char Value)
document
Global opencbm_plugin_iec_poll_t (CBM_FILE HandleDevice)
document
Global opencbm_plugin_iec_release_t (CBM_FILE HandleDevice, int Line)
document
Global opencbm_plugin_iec_set_t (CBM_FILE HandleDevice, int Line)
document
Global opencbm_plugin_iec_setrelease_t (CBM_FILE HandleDevice, int Set, int Release)
document
Global opencbm_plugin_iec_wait_t (CBM_FILE HandleDevice, int Line, int State)
document
Global opencbm_plugin_init_t (void)
document
Global opencbm_plugin_install_do_install (void *Context)

document

document

document

Global opencbm_plugin_install_do_uninstall (void *Context)

document

document

document

Global opencbm_plugin_install_generic (const char *DefaultPluginname, unsigned int DefaultLocation)
document
Global opencbm_plugin_install_get_needed_files (CbmPluginInstallProcessCommandlineData_t *Data, opencbm_plugin_install_neededfiles_t *Destination)

document

document

document

Global opencbm_plugin_install_plugin_data (const char *Pluginname, const char *Filepath, const CbmPluginInstallProcessCommandlineData_t *CommandlineData)
document
Global opencbm_plugin_install_process_commandline (CbmPluginInstallProcessCommandlineData_t *Data)

document

document

document

Global opencbm_plugin_listen_t (CBM_FILE HandleDevice, unsigned char DeviceAddress, unsigned char SecondaryAddress)
document
Global opencbm_plugin_lock_t (CBM_FILE HandleDevice)
document
Global opencbm_plugin_open_t (CBM_FILE HandleDevice, unsigned char DeviceAddress, unsigned char SecondaryAddress)
document
Global opencbm_plugin_parallel_burst_read_n_t (CBM_FILE HandleDevice, unsigned char *Buffer, unsigned int Length)
document
Global opencbm_plugin_parallel_burst_read_t (CBM_FILE HandleDevice)
document
Global opencbm_plugin_parallel_burst_read_track_t (CBM_FILE HandleDevice, unsigned char *Buffer, unsigned int Length)
document
Global opencbm_plugin_parallel_burst_read_track_var_t (CBM_FILE HandleDevice, unsigned char *Buffer, unsigned int Length)
document
Global opencbm_plugin_parallel_burst_write_n_t (CBM_FILE HandleDevice, unsigned char *Buffer, unsigned int Length)
document
Global opencbm_plugin_parallel_burst_write_t (CBM_FILE HandleDevice, unsigned char Value)
document
Global opencbm_plugin_parallel_burst_write_track_t (CBM_FILE HandleDevice, unsigned char *Buffer, unsigned int Length)
document
Global opencbm_plugin_pp_read_t (CBM_FILE HandleDevice)
document
Global opencbm_plugin_pp_write_t (CBM_FILE HandleDevice, unsigned char Byte)
document
Global opencbm_plugin_raw_read_t (CBM_FILE HandleDevice, void *Buffer, size_t Count)
document
Global opencbm_plugin_raw_write_t (CBM_FILE HandleDevice, const void *Buffer, size_t Count)
document
Global opencbm_plugin_reset_t (CBM_FILE HandleDevice)
document
Global opencbm_plugin_talk_t (CBM_FILE HandleDevice, unsigned char DeviceAddress, unsigned char SecondaryAddress)
document
Global opencbm_plugin_tap_prepare_capture_t (CBM_FILE HandleDevice, int *Status)
document
Global opencbm_plugin_uninit_t (void)
document
Global opencbm_plugin_unlisten_t (CBM_FILE HandleDevice)
document
Global opencbm_plugin_unlock_t (CBM_FILE HandleDevice)
document
Global opencbm_plugin_untalk_t (CBM_FILE HandleDevice)
document
Global PDEVICE_EXTENSION
document
Global plugin_get_address (SHARED_OBJECT_HANDLE handle, const char *name)

document

document

Class plugin_information_s
document
Global plugin_information_s::Library
document
Global plugin_information_s::Plugin
document
Global plugin_information_t
document
Global plugin_is_active (opencbm_configuration_handle Handle, const char PluginName[])
document
Global plugin_load (const char *name)

document

document

Global plugin_set_active (const char PluginName[])
document
Global plugin_set_inactive (const char PluginName[])
document
Global plugin_unload (SHARED_OBJECT_HANDLE handle)

document

document

Global PluginForAll_Callback_t (cbm_install_parameter_plugin_t *PluginInstallParameter, void *Context)
document
Global PP_XA_ATN_IN
document
Global PP_XA_ATN_OUT
document
Global PP_XA_CLK_IN
document
Global PP_XA_CLK_OUT
document
Global PP_XA_DATA_IN
document
Global PP_XA_DATA_OUT
document
Global PP_XA_EOR_IN
document
Global PP_XA_EOR_OUT
document
Global PP_XA_RESET_IN
document
Global PP_XA_RESET_OUT
document
Global PP_XE_ATN_IN
document
Global PP_XE_ATN_OUT
document
Global PP_XE_CLK_IN
document
Global PP_XE_CLK_OUT
document
Global PP_XE_DATA_IN
document
Global PP_XE_DATA_OUT
document
Global PP_XE_EOR_IN
document
Global PP_XE_EOR_OUT
document
Global PP_XE_RESET_IN
document
Global PP_XE_RESET_OUT
document
Global PP_XM_ATN_IN
document
Global PP_XM_ATN_OUT
document
Global PP_XM_CLK_IN
document
Global PP_XM_CLK_OUT
document
Global PP_XM_DATA_IN
document
Global PP_XM_DATA_OUT
document
Global PP_XM_EOR_IN
document
Global PP_XM_EOR_OUT
document
Global PP_XM_RESET_IN
document
Global PP_XM_RESET_OUT
document
Global QueueCleanup (PQUEUE Queue, PFILE_OBJECT FileObject)

What if the current IRP is associated to that FILE_OBJECT? Will that one be cancelled separately?

What if the current irp is associated with that FILE_OBJECT?

Global READ (_x)
document
Global REPORT_BUG (_no, _a, _b, _c, _d, _str)
document
Global retAX (_x_)
document
Global SECONDS (_x_)
Currently, these macros are unused!
Global SHARED_OBJECT_HANDLE
document
Global SHARED_OBJECT_HANDLE_INVALID
document
Global SHOW (_x, _y)
document
Global SHOW1 ()
document
Global TIMEOUT_DELAY
What is the exact purpose of this?
Global vdd_cbmfile_closeall (VOID)
document
Global vdd_cbmfile_delete (WORD)
document
Global vdd_cbmfile_delete (WORD)
document
Global vdd_cbmfile_get (WORD)
document
Global vdd_cbmfile_get (WORD)
document
Global vdd_cbmfile_store (CBM_FILE)
document
Global vdd_cbmfile_store (CBM_FILE)
document
Global xu1541_ioctl (unsigned int cmd, unsigned int addr, unsigned int secaddr)
Rework for cleaner structure. Currently, this is a mess!
Global xu1541_special_read (int mode, unsigned char *data, size_t size)

What is so special?

???

Global xu1541_special_write (int mode, const unsigned char *data, size_t size)

What is so special?

???