damaris-backends/drivers/Datel-PCI416/416inc/416vxdio.h
2014-06-26 11:10:51 +00:00

1311 lines
49 KiB
C

///////////////////////////////////////////////////////////////////////////////
//
// 416vxdio.h: device driver pci416.vxd and pci416.sys
// IO control function definitions
// Copyright (c) Datel, Inc. 1997, 98
// Platform: Win95, Win NT 4.0
// Compiler: MVC4.0 + DDK
// Version: 3.0
// Author: GS
// created: 2/28/97
// modified: 7/9/98
///////////////////////////////////////////////////////////////////////////////
//@doc
/* For other languages than C:
Examine the function definitions of this header file.
Use the corresponding number as defined in this header file to access the
proper function.
*/
#if defined (__cplusplus)
extern "C"
{
#endif
#ifndef _416VXDIO_H
#define _416VXDIO_H
/* Device driver IOCtl functions for NT */
#define CTL_CODE( DeviceType, Function, Method, Access ) ( \
((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method) \
)
#define METHOD_BUFFERED 0
#define METHOD_IN_DIRECT 1
#define METHOD_OUT_DIRECT 2
#define METHOD_NEITHER 3
#define FILE_ANY_ACCESS 0
#define FILE_READ_ACCESS ( 0x0001 ) // file & pipe
#define FILE_WRITE_ACCESS ( 0x0002 ) // file & pipe
#define PCI416_TYPE 40010
// general pci functions
/******************************************************************************
Function FIND_PCI_DEVICE_Proc
Returns the device numbers for a given device on the PCI bus.
Parameters:
LPDIOC lpDIOCtl pointer to DIOCPARAMETERS data structure.
(DWORD*) lpDIOCtl->lpvInBuffer points to an array of two DWORDs
The first array field contains the bus number. The second field
contains the VendorID in the lower and deviceID in the higher WORD
that the function searches for.
lpDIOCtl->lpvOutBuffer points to a 32 byte large array that holds the
device numbers found. The field after the last device number found has the
value 0x0ff.
lpDIOCtl->lpcbBytesReturned : If not NULL holds the bytes returned.
(== sizeof(lpDIOCtl->lpvOutBuffer))
Return value:
Error codes as defined in winerror.h
NOERROR
*******************************************************************************/
#define FIND_PCI_DEVICE_PROC 1
#define FIND_PCI_DEVICE_PROC_NT \
CTL_CODE(PCI416_TYPE, 0x901, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS)
/******************************************************************************
Function GET_PCI_DEVICE_INFO_Proc
Returns the PCI configuration space for a given device on the PCI bus.
Parameters:
LPDIOC lpDIOCtl pointer to DIOCPARAMETERS data structure.
(WORD*) lpDIOCtl->lpvInBuffer points to an array of two WORDs
The first array field contains the bus number. The second field
contains the device ID as returned by FIND_PCI_DEVICE_Proc.
lpDIOCtl->lpvOutBuffer points to a PCI_TYPE_CONFIG structure that
will take the return data of the PCI configuration space.
The size of the structure has to be at least 64 bytes, but
no more than 260 bytes.
lpDIOCtl->lpcbBytesReturned : If not NULL holds the bytes returned.
(== sizeof(lpDIOCtl->lpvOutBuffer))
Return value:
Error codes as defined in winerror.h
*******************************************************************************/
#define GET_PCI_DEVICE_INFO_PROC 2
#define GET_PCI_DEVICE_INFO_PROC_NT \
CTL_CODE(PCI416_TYPE, 0x902, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS)
/******************************************************************************
Function WRITE_PCI_PORT_PROC
Writes a DWORD (4 Bytes) to an output port
Parameters:
LPDIOC lpDIOCtl pointer to DIOCPARAMETERS data structure.
(DWORD*) lpDIOCtl->lpvInBuffer points to an array of two DWORDs
The first array field contains the port address. The second field
contains the value to be written.
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! W A R N I N G !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
This function does NOT check if the input values as well as the
size of the input buffer (lpDIOCtl->lpvInBuffer) are valid!
Not valid values may cause system crashes!
If this function is used to perform operations on write only registers their
software shadow register will become invalid. Software shadow registers keep track
of the status of the write only registers.
lpDIOCtl->lpvOutBuffer : should be zero
lpDIOCtl->lpcbBytesReturned : not used, should be NULL
Return value:
Error codes as defined in winerror.h
NOERROR
*******************************************************************************/
#define WRITE_PCI_PORT_PROC 3
#define WRITE_PCI_PORT_PROC_NT \
CTL_CODE(PCI416_TYPE, 0x903, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS)
/******************************************************************************
Function READ_PCI_PORT_PROC
Reads a DWORD (4 Bytes) from an input port.
Parameters:
LPDIOC lpDIOCtl pointer to DIOCPARAMETERS data structure.
(DWORD*) lpDIOCtl->lpvInBuffer contains the port address.
(DWORD*) lpDIOCtl->lpvOutBuffer : takes the value read from the port.
lpDIOCtl->lpcbBytesReturned : not used, should be NULL
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! W A R N I N G !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
This function does NOT check if the input values (the port address) is valid.
Not valid values may cause system crashes!
Return value:
Error codes as defined in winerror.h
NOERROR
*******************************************************************************/
#define READ_PCI_PORT_PROC 4
#define READ_PCI_PORT_PROC_NT \
CTL_CODE(PCI416_TYPE, 0x904, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS)
// specific pci416 functions
// misc. functions
/******************************************************************************
Function PCI416_COUNT_PROC
Returns the number of PCI416 Boards
Parameters:
LPDIOC lpDIOCtl pointer to DIOCPARAMETERS data structure.
lpDIOCtl->lpvInBuffer: should be 0
(DWORD*)lpDIOCtl->lpvOutBuffer : holds the number of boards
lpDIOCtl->lpcbBytesReturned : not used, should be NULL
Return value:
Error codes as defined in winerror.h
NOERROR
*******************************************************************************/
#define PCI416_COUNT_PROC 5
#define PCI416_COUNT_PROC_NT \
CTL_CODE(PCI416_TYPE, 0x905, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS)
/******************************************************************************
Function PCI416_GET_CM_DEVNODES_PROC
Returns the DEVNODEs assigned by the Configuration Manager for PCI416 Boards
Parameters:
LPDIOC lpDIOCtl pointer to DIOCPARAMETERS data structure.
(INT*) lpDIOCtl->lpvInBuffer: Contains the index of the board. The order of the
boards is determind by the Windows 95 Configuration
Manager.
Values:
-1 : The devnodes of all the PCI416 boards
are returned in lpDIOCtl->lpvOutBuffer.
n>=0 : The devnode of the board with index n is
returned in lpDIOCtl->lpvOutBuffer.
lpDIOCtl->lpvOutBuffer points to a DWORD array that
will take the devnode values.
If lpDIOCtl->lpvInBuffer contains -1 the size of the array pointed by
lpDIOCtl->lpvOutBuffer must be large enough to hold all the devnodes.
lpDIOCtl->lpcbBytesReturned : If not NULL holds the bytes returned.
(== sizeof(lpDIOCtl->lpvOutBuffer))
Return value:
Error codes as defined in winerror.h
NOERROR
ERROR_DEV_NOT_EXIST
ERROR_INSUFFICIENT_BUFFER
*******************************************************************************/
#define PCI416_GET_CM_DEVNODES_PROC 6
#define PCI416_GET_CM_DEVNODES_PROC_NT \
CTL_CODE(PCI416_TYPE, 0x906, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS) // not implemented in NT
/******************************************************************************
Function PCI416_GET_CMDEVINF_PROC
Returns the PCI configuration space information of the PCI416 Boards
Parameters:
LPDIOC lpDIOCtl pointer to DIOCPARAMETERS data structure.
(DWORD*) lpDIOCtl->lpvInBuffer: Contains the index of the board. The order of the
boards is determind by the Windows 95 Configuration
Manager.
lpDIOCtl->lpvOutBuffer points to a PCI_TYPE_CONFIG structure that
will take the return data of the PCI configuration space.
The size of the structure has to be at least 64 bytes, but
no more than 260 bytes.
lpDIOCtl->lpcbBytesReturned : If not NULL holds the bytes returned.
(== sizeof(lpDIOCtl->lpvOutBuffer))
Return value:
Error codes as defined in winerror.h
NOERROR
ERROR_DEV_NOT_EXIST : no PCI416 board found
ERROR_INSUFFICIENT_BUFFER : invalid size of in/out buffer
ERROR_INVALID_HANDLE : CM devnode not found
ERROR_GEN_FAILURE : Device is not functioning.
ERROR_INVALID_DATA : invalid pointer to out buffer or other
API function return error
*******************************************************************************/
#define PCI416_GET_CMDEVINF_PROC 7
#define PCI416_GET_CMDEVINF_PROC_NT \
CTL_CODE(PCI416_TYPE, 0x907, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS) // not implemented in NT
/******************************************************************************
Function PCI416_GET_BADR_PROC
Returns base address array of the given PCI416 board.
Parameters:
LPDIOC lpDIOCtl pointer to DIOCPARAMETERS data structure.
(DWORD*) lpDIOCtl->lpvInBuffer: Contains the index of the board. The order of the
boards is determind by the Windows 95 Configuration
Manager.
(WORD*)lpDIOCtl->lpvOutBuffer: array of 6 WORDs that take base address values
lpDIOCtl->lpcbBytesReturned : If not NULL holds the bytes returned.
(== sizeof(lpDIOCtl->lpvOutBuffer))
Return value:
Error codes as defined in winerror.h
NOERROR
ERROR_DEV_NOT_EXIST : PCI416 board not found
ERROR_INSUFFICIENT_BUFFER : invalid size of in/out buffer
*******************************************************************************/
#define PCI416_GET_BADR_PROC 8
#define PCI416_GET_BADR_PROC_NT \
CTL_CODE(PCI416_TYPE, 0x908, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS)
/******************************************************************************
Function PCI416_GETCAPS_Proc
Returns the Device capabilities (FIFO size, DMA buffer size,
type of ADM module, acquisition mode.
Parameters:
LPDIOC lpDIOCtl pointer to DIOCPARAMETERS data structure.
(DWORD*) lpDIOCtl->lpvInBuffer: Contains the index of the board. The order of the
boards is determind by the Windows 95 Configuration
Manager.
(DWORD*)lpDIOCtl->lpvOutBuffer: array of 4 DWORDs that take the device info
DWORD sizeFIFO;
DWORD bufsizeDMA;
DWORD indexADM;
DWORD acqmode;
lpDIOCtl->lpcbBytesReturned : If not NULL holds the bytes returned.
(== sizeof(lpDIOCtl->lpvOutBuffer))
Return value:
Error codes as defined in winerror.h
NOERROR
ERROR_DEV_NOT_EXIST : PCI416 board not found
ERROR_INSUFFICIENT_BUFFER : invalid size of in/out buffer
ERROR_CANTREAD : can't read registry
*******************************************************************************/
#define PCI416_GETCAPS_PROC 9
#define PCI416_GETCAPS_PROC_NT \
CTL_CODE(PCI416_TYPE, 0x909, METHOD_BUFFERED, FILE_READ_ACCESS)
// pci416 register access functions
/******************************************************************************
Function PCI416_SET_CMDREG_PROC
Writes to the PCI416 command register
Parameters:
LPDIOC lpDIOCtl pointer to DIOCPARAMETERS data structure.
(DWORD*) lpDIOCtl->lpvInBuffer: Array of two DWORDs.
The first field contains the index of the board.
The order of the boards is determind by the
Windows 95 Configuration Manager.
The second field holds the write mode.
(0 = overwrite, 1= OR, 2 = AND)
The third field holds the value to be written
to the command register.
DWORD index
DWORD mode
DWORD cmdval
(DWORD*)lpDIOCtl->lpvOutBuffer: returns the current value of the shadow cmd. reg.
lpDIOCtl->lpcbBytesReturned : not used, should be NULL
Return value:
Error codes as defined in winerror.h
NOERROR
ERROR_DEV_NOT_EXIST : PCI416 board not found
ERROR_INSUFFICIENT_BUFFER : invalid size of in/out buffer
ERROR_INVALID_PARAMETER : wrong mode
*******************************************************************************/
#define PCI416_SET_CMDREG_PROC 10
#define PCI416_SET_CMDREG_PROC_NT \
CTL_CODE(PCI416_TYPE, 0x90a, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS)
/******************************************************************************
Function PCI416_READ_STATUSREG_PROC
Reads the PCI416 Status register.
Parameters:
LPDIOC lpDIOCtl pointer to DIOCPARAMETERS data structure.
(DWORD*) lpDIOCtl->lpvInBuffer: Contains the index of the board. The order of the
boards is determind by the Windows 95 Configuration
Manager.
(DWORD*)lpDIOCtl->lpvOutBuffer: holds the return lower word
of the 32bit status register
lpDIOCtl->lpcbBytesReturned : not used, should be NULL
Return value:
Error codes as defined in winerror.h
NOERROR
ERROR_DEV_NOT_EXIST : PCI416 board not found
ERROR_INSUFFICIENT_BUFFER : invalid size of in/out buffer
*******************************************************************************/
#define PCI416_READ_STATUSREG_PROC 11
#define PCI416_READ_STATUSREG_PROC_NT \
CTL_CODE(PCI416_TYPE, 0x90b, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS)
/******************************************************************************
Function PCI416_SET_SMPLCNTR_PROC
Writes to the PCI416 sample counter register
Parameters:
LPDIOC lpDIOCtl pointer to DIOCPARAMETERS data structure.
(DWORD*) lpDIOCtl->lpvInBuffer: Array of two DWORDs.
The first field contains the index of the board.
The order of the boards is determind by the
Windows 95 Configuration Manager.
The second field holds the value to be written
to the sample counter register.
Note: write samples-1 to the register
e.g 1024 samples -> write 1023
DWORD index
DWORD regval
lpDIOCtl->lpvOutBuffer: should be 0
lpDIOCtl->lpcbBytesReturned : not used, should be NULL
Return value:
Error codes as defined in winerror.h
NOERROR
ERROR_DEV_NOT_EXIST : PCI416 board not found
ERROR_INSUFFICIENT_BUFFER : invalid size of in/out buffer
*******************************************************************************/
#define PCI416_SET_SMPLCNTR_PROC 12
#define PCI416_SET_SMPLCNTR_PROC_NT \
CTL_CODE(PCI416_TYPE, 0x90C, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS)
/******************************************************************************
Function PCI416_SET_CHANADR_PROC
Writes to the PCI416 channel address register
Parameters:
LPDIOC lpDIOCtl pointer to DIOCPARAMETERS data structure.
(DWORD*) lpDIOCtl->lpvInBuffer: Array of three DWORDs.
The first field contains the index of the board.
The order of the boards is determind by the
Windows 95 Configuration Manager.
The second field holds the write mode.
(0 = overwrite, 1= OR, 2 = AND)
The third field holds the value to be written
to the register.
DWORD index
DWORD mode
DWORD regval
(DWORD*)lpDIOCtl->lpvOutBuffer: returns the current value of the shadow reg.
lpDIOCtl->lpcbBytesReturned : not used, should be NULL
Return value:
Error codes as defined in winerror.h
NOERROR
ERROR_DEV_NOT_EXIST : PCI416 board not found
ERROR_INSUFFICIENT_BUFFER : invalid size of in/out buffer
ERROR_INVALID_PARAMETER : wrong mode
*******************************************************************************/
#define PCI416_SET_CHANADR_PROC 13
#define PCI416_SET_CHANADR_PROC_NT \
CTL_CODE(PCI416_TYPE, 0x90D, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS)
/******************************************************************************
Function PCI416_CLEAR_FIFO_PROC
Resets the A/D FIFO.
Parameters:
LPDIOC lpDIOCtl pointer to DIOCPARAMETERS data structure.
(DWORD*) lpDIOCtl->lpvInBuffer: Contains the index of the board. The order of the
boards is determind by the Windows 95 Configuration
Manager.
(DWORD*)lpDIOCtl->lpvOutBuffer: should be zero
lpDIOCtl->lpcbBytesReturned : not used, should be NULL
Return value:
Error codes as defined in winerror.h
NOERROR
ERROR_DEV_NOT_EXIST : PCI416 board not found
*******************************************************************************/
#define PCI416_CLEAR_FIFO_PROC 14
#define PCI416_CLEAR_FIFO_PROC_NT \
CTL_CODE(PCI416_TYPE, 0x90e, METHOD_BUFFERED, FILE_WRITE_ACCESS)
/******************************************************************************
Function PCI416_ENABLEAD_PROC
Writes to the PCI416 A/D convert enable register
Parameters:
LPDIOC lpDIOCtl pointer to DIOCPARAMETERS data structure.
(DWORD*) lpDIOCtl->lpvInBuffer: Array of two DWORDs.
The first field contains the index of the board.
The order of the boards is determind by the
Windows 95 Configuration Manager.
If the value of second field 0 the A/D conversion
will be disabled otherwise enabled.
DWORD index
DWORD regval -> 0 disable, all other enable
lpDIOCtl->lpvOutBuffer: should be 0
lpDIOCtl->lpcbBytesReturned : not used, should be NULL
Return value:
Error codes as defined in winerror.h
NOERROR
ERROR_DEV_NOT_EXIST : PCI416 board not found
*******************************************************************************/
#define PCI416_ENABLEAD_PROC 15
#define PCI416_ENABLEAD_PROC_NT \
CTL_CODE(PCI416_TYPE, 0x90f, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS)
/******************************************************************************
Function PCI416_SET_PLLREG_PROC
Writes to the PCI416 PLL data register to set the output frequency of the
frequency synthesizer.
This function will cycle through the 3 counters and
set each counter value.
Parameters:
LPDIOC lpDIOCtl pointer to DIOCPARAMETERS data structure.
(DWORD*) lpDIOCtl->lpvInBuffer: Array of 3 DWORDs.
The first field contains the index of the board.
The order of the boards is determind by the
Windows 95 Configuration Manager.
The next two field hold the data to be written
to the A and N counter.
DWORD index
DWORD valA
DWORD valN
lpDIOCtl->lpvOutBuffer: should be 0
lpDIOCtl->lpcbBytesReturned : not used, should be NULL
Return value:
Error codes as defined in winerror.h
NOERROR
ERROR_DEV_NOT_EXIST : PCI416 board not found
ERROR_INSUFFICIENT_BUFFER : invalid size of in/out buffer
*******************************************************************************/
#define PCI416_SET_PLLREG_PROC 16
#define PCI416_SET_PLLREG_PROC_NT \
CTL_CODE(PCI416_TYPE, 0x910, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS)
/******************************************************************************
Function PCI416_READ_FIFO_PROC
Reads a block of data from the FIFO.
Parameters:
LPDIOC lpDIOCtl pointer to DIOCPARAMETERS data structure.
(DWORD*) lpDIOCtl->lpvInBuffer: Array of two DWORDs.
The first field contains the index of the board.
The order of the boards is determind by the
Windows 95 Configuration Manager.
The second field contains the number of samples
to be read. If count is larger than the FIFO size
the whole FIFO will be read.
DWORD index
DWORD count
(DWORD*)lpDIOCtl->lpvOutBuffer: Array of count/2 DWORDs that takes the FIFO data.
lpDIOCtl->lpcbBytesReturned : If not NULL holds the bytes returned.
(== sizeof(lpDIOCtl->lpvOutBuffer))
Return value:
Error codes as defined in winerror.h
NOERROR
ERROR_DEV_NOT_EXIST : PCI416 board not found
ERROR_INSUFFICIENT_BUFFER : invalid size of in/out buffer
*******************************************************************************/
#define PCI416_READ_FIFO_PROC 17
#define PCI416_READ_FIFO_PROC_NT \
CTL_CODE(PCI416_TYPE, 0x911, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS)
/******************************************************************************
Function PCI416_SETTIMER_PROC
Programs the 82C54 Timer
Parameters:
LPDIOC lpDIOCtl pointer to DIOCPARAMETERS data structure.
(DWORD*) lpDIOCtl->lpvInBuffer: Array of 4 DWORDs.
The first field contains the index of the board.
The order of the boards is determind by the
Windows 95 Configuration Manager.
The next three fields hold the mode, the counter
selector and the counter values to be set.
DWORD index
DWORD mode
DWORD counter02
DWORD counter1
Note!
Mode has to be one of the values as defined in timer.h
TM_SINGLE_TRIGGER, generate a single internal trigger
TM_CONT_TRIGGER, generate continious internal trigger
TM_RESET_TRIGGER, reset (disable) trigger
TM_ADCLOCK set counter 2 for A/D clock
counter02 holds the counter value for counter 0 or 2 in TM_ADCLOCK mode
counter1 holds the counter value for counter 1 (not used in TM_ADCLOCK mode)
Counter values smaller than 2 will be set to 2 and values larger than 0xFFFF will
be set to 0xFFFF.
(DWORD*)lpDIOCtl->lpvOutBuffer: should be 0
lpDIOCtl->lpcbBytesReturned : not used, should be NULL
Return value:
Error codes as defined in winerror.h
NOERROR
ERROR_DEV_NOT_EXIST : PCI416 board not found
ERROR_INSUFFICIENT_BUFFER : invalid size of in/out buffer
ERROR_INVALID_PARAMETER : wrong mode
*******************************************************************************/
#define PCI416_SETTIMER_PROC 18
#define PCI416_SETTIMER_PROC_NT \
CTL_CODE(PCI416_TYPE, 0x912, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS)
/******************************************************************************
Function PCI416_SET_PORTCTRREG_PROC
Sets the 82C55 port control register
Parameters:
LPDIOC lpDIOCtl pointer to DIOCPARAMETERS data structure.
(DWORD*) lpDIOCtl->lpvInBuffer: Array of two DWORDs.
The first field contains the index of the board.
The order of the boards is determind by the
Windows 95 Configuration Manager.
The second field holds the register value to
be written.
DWORD index
DWORD regval
lpDIOCtl->lpvOutBuffer: should be 0
lpDIOCtl->lpcbBytesReturned : not used, should be NULL
Return value:
Error codes as defined in winerror.h
NOERROR
ERROR_DEV_NOT_EXIST : PCI416 board not found
ERROR_INSUFFICIENT_BUFFER : invalid size of in/out buffer
*******************************************************************************/
#define PCI416_SET_PORTCTRREG_PROC 19
#define PCI416_SET_PORTCTRREG_PROC_NT \
CTL_CODE(PCI416_TYPE, 0x913, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS)
/******************************************************************************
Function PCI416_GET_PORTCTRREG_PROC
Reads the 82C55 port control register back
Parameters:
LPDIOC lpDIOCtl pointer to DIOCPARAMETERS data structure.
(DWORD*) lpDIOCtl->lpvInBuffer: Contains the index of the board.
The order of the boards is determind by the
Windows 95 Configuration Manager.
The second field holds the register value to
be written.
DWORD index
(DWORD*)lpDIOCtl->lpvOutBuffer: holds the return value
lpDIOCtl->lpcbBytesReturned : not used, should be NULL
Return value:
Error codes as defined in winerror.h
NOERROR
ERROR_DEV_NOT_EXIST : PCI416 board not found
*******************************************************************************/
#define PCI416_GET_PORTCTRREG_PROC 20
#define PCI416_GET_PORTCTRREG_PROC_NT \
CTL_CODE(PCI416_TYPE, 0x914, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS)
/******************************************************************************
Function PCI416_READ_PORT_PROC
Reads from one of the 82C55 ports
Parameters:
LPDIOC lpDIOCtl pointer to DIOCPARAMETERS data structure.
(DWORD*) lpDIOCtl->lpvInBuffer: Array of two DWORDs.
The first field contains the index of the board.
The order of the boards is determind by the
Windows 95 Configuration Manager.
The second field holds port to be read.
DWORD index
DWORD port (0==A, 1==B, 2==C)
(DWORD*)lpDIOCtl->lpvOutBuffer: holds the return data.
lpDIOCtl->lpcbBytesReturned : not used, should be NULL
Return value:
Error codes as defined in winerror.h
NOERROR
ERROR_DEV_NOT_EXIST : PCI416 board not found
ERROR_INSUFFICIENT_BUFFER : invalid size of in/out buffer
ERROR_INVALID_PARAMETER : wrong port
*******************************************************************************/
#define PCI416_READ_PORT_PROC 21
#define PCI416_READ_PORT_PROC_NT \
CTL_CODE(PCI416_TYPE, 0x915, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS)
/******************************************************************************
Function PCI416_WRITE_PORT_PROC
Writes to one of the 82C55 ports
Parameters:
LPDIOC lpDIOCtl pointer to DIOCPARAMETERS data structure.
(DWORD*) lpDIOCtl->lpvInBuffer: Array of 3 DWORDs.
The first field contains the index of the board.
The order of the boards is determind by the
Windows 95 Configuration Manager.
The second field holds port to be read and the
third field contains the data.
DWORD index
DWORD port (0==A, 1==B, 2==C)
DWORD data
(DWORD*)lpDIOCtl->lpvOutBuffer: should be 0.
lpDIOCtl->lpcbBytesReturned : not used, should be NULL
Return value:
Error codes as defined in winerror.h
NOERROR
ERROR_DEV_NOT_EXIST : PCI416 board not found
ERROR_INSUFFICIENT_BUFFER : invalid size of in/out buffer
ERROR_INVALID_PARAMETER : wrong port
*******************************************************************************/
#define PCI416_WRITE_PORT_PROC 22
#define PCI416_WRITE_PORT_PROC_NT \
CTL_CODE(PCI416_TYPE, 0x916, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS)
/******************************************************************************
Function PCI416_WRITE_DAC_PROC
Sets the D/A converter register.
Parameters:
LPDIOC lpDIOCtl pointer to DIOCPARAMETERS data structure.
(DWORD*) lpDIOCtl->lpvInBuffer: Array of two DWORDs.
The first field contains the index of the board.
The order of the boards is determind by the
Windows 95 Configuration Manager.
The second field holds port to be read.
DWORD index
DWORD data
(DWORD*)lpDIOCtl->lpvOutBuffer: should be 0.
lpDIOCtl->lpcbBytesReturned : not used, should be NULL
Return value:
Error codes as defined in winerror.h
NOERROR
ERROR_DEV_NOT_EXIST : PCI416 board not found
ERROR_INSUFFICIENT_BUFFER : invalid size of in/out buffer
*******************************************************************************/
#define PCI416_WRITE_DAC_PROC 23
#define PCI416_WRITE_DAC_PROC_NT \
CTL_CODE(PCI416_TYPE, 0x917, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS)
// FIFO polling functions
/******************************************************************************
Function PCI416_FIFO_STATUS_PROC
Reads the PCI416 FIFO status (bits 13-15 status reg).
Parameters:
LPDIOC lpDIOCtl pointer to DIOCPARAMETERS data structure.
(DWORD*) lpDIOCtl->lpvInBuffer: Contains the index of the board. The order of the
boards is determind by the Windows 95 Configuration
Manager.
(DWORD*)lpDIOCtl->lpvOutBuffer: holds the FIFO status bits
lpDIOCtl->lpcbBytesReturned : not used, should be NULL
Return value:
Error codes as defined in winerror.h
NOERROR
ERROR_DEV_NOT_EXIST : PCI416 board not found
ERROR_INSUFFICIENT_BUFFER : invalid size of in/out buffer
*******************************************************************************/
#define PCI416_FIFO_STATUS_PROC 24
#define PCI416_FIFO_STATUS_PROC_NT \
CTL_CODE(PCI416_TYPE, 0x918, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS)
/******************************************************************************
Function PCI416_CHECK_FIFOHF_PROC
Reads the PCI416 Half Full FIFO flag (bit 14 status reg).
Parameters:
LPDIOC lpDIOCtl pointer to DIOCPARAMETERS data structure.
(DWORD*) lpDIOCtl->lpvInBuffer: Contains the index of the board. The order of the
boards is determind by the Windows 95 Configuration
Manager.
(DWORD*)lpDIOCtl->lpvOutBuffer: holds the flag (0= FIFO is half full or greater)
(1= FIFO is less than half full)
lpDIOCtl->lpcbBytesReturned : not used, should be NULL
Return value:
Error codes as defined in winerror.h
NOERROR
ERROR_DEV_NOT_EXIST : PCI416 board not found
ERROR_INSUFFICIENT_BUFFER : invalid size of in/out buffer
*******************************************************************************/
#define PCI416_CHECK_FIFOHF_PROC 25
#define PCI416_CHECK_FIFOHF_PROC_NT \
CTL_CODE(PCI416_TYPE, 0x919, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS)
// DMA functions
/******************************************************************************
Function PCI416_SETUP_DMA_Proc
Setup DMA.
Parameters:
LPDIOC lpDIOCtl pointer to DIOCPARAMETERS data structure.
(DWORD*) lpDIOCtl->lpvInBuffer: Array of (3)4 DWORDs that contain the index of
the board, the requested DMA buffer size and
the number of samples per trigger. The order
of the boards is determind by the Windows 95
Configuration Manager.
If the requested size for the DMA buffers is
larger than the size of the buffer allocated
during bootup the allocated buffer size will
be used. The first bufsize field is used as
MWTC count.
If mode is DMA_SINGLE one buffer is set up for
DMA operation. In DMA_DOUBLE mode two buffers
are set up that can be used as ping-pong
buffers. If the sum of the requested buffer
size is larger than the allocated buffer size
the second buffer will be truncated.
DWORD index
DWORD mode;
DWORD bufsize[n]
n=1 if mode = DMA_SINGLE
n=2 if mode = DMA_DOUBLE
(DWORD*)lpDIOCtl->lpvOutBuffer: Array of (3)4 DWORDs that contain
the DMA buffer info.
DWORD hndDMAbuf : handle to first DMA buffer
DWORD physAdrDMAbuf : physical address of DMA
buffer
DWORD bufsizeDMA[n] : size of DMA buffer(s)
used
n=1 if mode = DMA_SINGLE
n=2 if mode = DMA_DOUBLE
lpDIOCtl->lpcbBytesReturned : If not NULL holds the bytes returned.
(== sizeof(lpDIOCtl->lpvOutBuffer))
Return value:
Error codes as defined in winerror.h
NOERROR
ERROR_DEV_NOT_EXIST : PCI416 board not found
ERROR_INSUFFICIENT_BUFFER : invalid size of in/out buffer
ERROR_INVALID_PARAMETER : wrong mode
ERROR_INVALID_HANDLE : memory handle is invalid
******************************************************************************/
#define PCI416_SETUP_DMA_PROC 26
#define PCI416_SETUP_DMA_PROC_NT \
CTL_CODE(PCI416_TYPE, 0x91A, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS)
/******************************************************************************
Function PCI416_STOP_DMA_PROC
Stops DMA without disabeling A/D conversion!
Parameters:
LPDIOC lpDIOCtl pointer to DIOCPARAMETERS data structure.
(DWORD*) lpDIOCtl->lpvInBuffer: Contains the index of the board. The order of the
boards is determind by the Windows 95 Configuration
Manager.
(DWORD*)lpDIOCtl->lpvOutBuffer: If the buffer is not zero it will hold the
value of the transfer count register (MWTC)
at the time the DMA transfer was stopped.
Return value:
Error codes as defined in winerror.h
NOERROR
ERROR_DEV_NOT_EXIST : PCI416 board not found
*******************************************************************************/
#define PCI416_STOP_DMA_PROC 27
#define PCI416_STOP_DMA_PROC_NT \
CTL_CODE(PCI416_TYPE, 0x91B, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS)
/******************************************************************************
Function PCI416_RELOAD_DMA_PROC
Reloads the DMA transfer count and start address!
Parameters:
(DWORD*) lpDIOCtl->lpvInBuffer: Array of 2 DWORDS
DWORD index : Index of the board. The order of
the boards is determind by the
Windows 95 Configuration
Manager.
DWORD bufno : Valid values are 0 and 1
Selects which buffer to reload
for DMA op.
If mode is DMA_SINGLE bufno has
no effect.
(DWORD*)lpDIOCtl->lpvOutBuffer: Array of 3 DWORDs that contain
the DMA buffer info.
DWORD hndDMAbuf : handle to DMA buffer
DWORD physAdrDMAbuf : physical address of DMA
buffer
DWORD bufsizeDMA : size of DMA buffer
used
Return value:
Error codes as defined in winerror.h
NOERROR
ERROR_DEV_NOT_EXIST : PCI416 board not found
ERROR_INSUFFICIENT_BUFFER : invalid size of in/out buffer
*******************************************************************************/
#define PCI416_RELOAD_DMA_PROC 28
#define PCI416_RELOAD_DMA_PROC_NT \
CTL_CODE(PCI416_TYPE, 0x91C, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS)
/******************************************************************************
Function PCI416_DMA_STATUS_PROC
Reads the PCI416 controller interrupt control/status register ->
DMA transfer status bit (bit18)
Parameters:
LPDIOC lpDIOCtl pointer to DIOCPARAMETERS data structure.
(DWORD*) lpDIOCtl->lpvInBuffer: Contains the index of the board. The order of the
boards is determind by the Windows 95 Configuration
Manager.
(DWORD*)lpDIOCtl->lpvOutBuffer: holds the DMA transfer status bits
(1= interrupt generated-> transfer complete
0= Bus Master op. in progress)
Return value:
Error codes as defined in winerror.h
NOERROR
ERROR_DEV_NOT_EXIST : PCI416 board not found
ERROR_INSUFFICIENT_BUFFER : invalid size of in/out buffer
*******************************************************************************/
#define PCI416_DMA_STATUS_PROC 29
#define PCI416_DMA_STATUS_PROC_NT \
CTL_CODE(PCI416_TYPE, 0x91D, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS)
/******************************************************************************
Function PCI416_READ_INTCSRREG_PROC
Reads the PCI controller interrupt control/status register
Parameters:
LPDIOC lpDIOCtl pointer to DIOCPARAMETERS data structure.
(DWORD*) lpDIOCtl->lpvInBuffer: DWORD that contains the index of the board.
The order of the boards is determind by the
Windows 95 Configuration Manager.
(DWORD*)lpDIOCtl->lpvOutBuffer: Return value of the register.
Return value:
Error codes as defined in winerror.h
NOERROR
ERROR_DEV_NOT_EXIST : PCI416 board not found
ERROR_INSUFFICIENT_BUFFER : invalid size of in/out buffer
*******************************************************************************/
#define PCI416_READ_INTCSRREG_PROC 30
#define PCI416_READ_INTCSRREG_PROC_NT \
CTL_CODE(PCI416_TYPE, 0x91E, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS)
/******************************************************************************
Function PCI416_SET_INTCSRREG_PROC
Writes to the PCI controller interrupt control/status register
Parameters:
LPDIOC lpDIOCtl pointer to DIOCPARAMETERS data structure.
(DWORD*) lpDIOCtl->lpvInBuffer: Array of three DWORDs.
The first field contains the index of the board.
The order of the boards is determind by the
Windows 95 Configuration Manager.
The second field holds the write mode+ read back
option.
(0 = overwrite, 1= OR, 2 = AND
+ 0x80 to enable read back actual register
e.g. mode = 0x81 -> write register using OR op.
and then read register back)
The third field holds the value to be written
to the register.
DWORD index
DWORD mode
DWORD regval
(DWORD*)lpDIOCtl->lpvOutBuffer: returns the current value of the shadow reg.
Return value:
Error codes as defined in winerror.h
NOERROR
ERROR_DEV_NOT_EXIST : PCI416 board not found
ERROR_INSUFFICIENT_BUFFER : invalid size of in/out buffer
ERROR_INVALID_PARAMETER : wrong mode
*******************************************************************************/
#define PCI416_SET_INTCSRREG_PROC 31
#define PCI416_SET_INTCSRREG_PROC_NT \
CTL_CODE(PCI416_TYPE, 0x91F, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS)
/******************************************************************************
Function PCI416_READ_MCSRREG_PROC
Reads the PCI controller bus master control/status register
Parameters:
LPDIOC lpDIOCtl pointer to DIOCPARAMETERS data structure.
(DWORD*) lpDIOCtl->lpvInBuffer: DWORD that contains the index of the board.
The order of the boards is determind by the
Windows 95 Configuration Manager.
(DWORD*)lpDIOCtl->lpvOutBuffer: Return value of the register.
The value returned also contains the control
bits (8-31) that are saved in a shadow register
by the device driver.
Return value:
Error codes as defined in winerror.h
NOERROR
ERROR_DEV_NOT_EXIST : PCI416 board not found
ERROR_INSUFFICIENT_BUFFER : invalid size of in/out buffer
*******************************************************************************/
#define PCI416_READ_MCSRREG_PROC 32
#define PCI416_READ_MCSRREG_PROC_NT \
CTL_CODE(PCI416_TYPE, 0x920, METHOD_BUFFERED, FILE_READ_ACCESS)
/******************************************************************************
Function PCI416_SET_MCSRREG_PROC
Writes to the PCI controller bus master control/status register
Parameters:
LPDIOC lpDIOCtl pointer to DIOCPARAMETERS data structure.
(DWORD*) lpDIOCtl->lpvInBuffer: Array of three DWORDs.
The first field contains the index of the board.
The order of the boards is determind by the
Windows 95 Configuration Manager.
The second field holds the write mode+ read back
option.
(0 = overwrite, 1= OR, 2 = AND
+ 0x80 to enable read back actual register
e.g. mode = 0x81 -> write register using OR op.
and then read register back)
The third field holds the value to be written
to the register.
DWORD index
DWORD mode
DWORD regval
(DWORD*)lpDIOCtl->lpvOutBuffer: returns the current value of the shadow reg.
Return value:
Error codes as defined in winerror.h
NOERROR
ERROR_DEV_NOT_EXIST : PCI416 board not found
ERROR_INSUFFICIENT_BUFFER : invalid size of in/out buffer
ERROR_INVALID_PARAMETER : wrong mode
*******************************************************************************/
#define PCI416_SET_MCSRREG_PROC 33
#define PCI416_SET_MCSRREG_PROC_NT \
CTL_CODE(PCI416_TYPE, 0x921, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS)
/******************************************************************************
Function PCI416_COPY_DMABUFFER_PROC
Copy DMA buffer to another buffer.
Parameters:
LPDIOC lpDIOCtl pointer to DIOCPARAMETERS data structure.
(DWORD*) lpDIOCtl->lpvInBuffer: Array of 4 DWORDs
DWORD index : Index of the board. The order of
the boards is determind by the
Windows 95 Configuration
Manager.
DWORD bufno : Valid values are 0 and 1
Selects which buffer to copy.
If mode is DMA_SINGLE bufno has
no effect.
DWORD start : start byte
DWORD count : number of bytes to copy
If start is larger than the size of the
selected buffer no data are copied and the
function returns ERROR_INVALID_HANDLE.
If start+count larger the size of the
selected buffer only the remaining byte
will be copied.
(DWORD*)lpDIOCtl->lpvOutBuffer: DWORD hnddestbuf : Handle to the
desitination buffer.
The size of the
destination buffer
must be at least count
bytes!
lpDIOCtl->lpcbBytesReturned : If not NULL holds the bytes copied.
Return value:
Error codes as defined in winerror.h
NOERROR
ERROR_DEV_NOT_EXIST : PCI416 board not found
ERROR_INSUFFICIENT_BUFFER : invalid size of in/out buffer
ERROR_INVALID_HANDLE : memory handle is invalid
*******************************************************************************/
#define PCI416_COPY_DMABUFFER_PROC 34
#define PCI416_COPY_DMABUFFER_PROC_NT \
CTL_CODE(PCI416_TYPE, 0x922, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS)
/******************************************************************************
Function PCI416_GET_DMABUF_HNDL_PROC
Returns the handle and size of the selected DMA buffer.
Parameters:
LPDIOC lpDIOCtl pointer to DIOCPARAMETERS data structure.
(DWORD*) lpDIOCtl->lpvInBuffer: Array of 3 DWORDs
DWORD index : Index of the board. The order of
the boards is determind by the
Windows 95 Configuration
Manager.
DWORD bufno : Valid values are 0 and 1
Selects which buffer to copy.
If mode is DMA_SINGLE bufno has
no effect.
DWORD offset: Offset of handle to be returned.
If offset is larger than the size of
the allocated buffer ERROR_INVALID_HANDLE
will be returned and hnddestbuf is
set to NULL.
(DWORD*)lpDIOCtl->lpvOutBuffer: Array of 2 DWORDs
DWORD hndbuf : Handle to the
DMA buffer positioned
at the offset byte.
DWORD bufsize : Size of the DMA buffer - offset.
Return value:
Error codes as defined in winerror.h
NOERROR
ERROR_DEV_NOT_EXIST : PCI416 board not found
ERROR_INSUFFICIENT_BUFFER : invalid size of in/out buffer
ERROR_INVALID_HANDLE : memory handle is invalid
*******************************************************************************/
#define PCI416_GET_DMABUF_HNDL_PROC 35
#define PCI416_GET_DMABUF_HNDL_PROC_NT \
CTL_CODE(PCI416_TYPE, 0x923, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS)
/******************************************************************************
Function PCI416_READ_MWARREG_PROC
Reads the PCI controller bus master write address register
Parameters:
LPDIOC lpDIOCtl pointer to DIOCPARAMETERS data structure.
(DWORD*) lpDIOCtl->lpvInBuffer: DWORD that contains the index of the board.
The order of the boards is determind by the
Windows 95 Configuration Manager.
(DWORD*)lpDIOCtl->lpvOutBuffer: Return value of the register.
Return value:
Error codes as defined in winerror.h
NOERROR
ERROR_DEV_NOT_EXIST : PCI416 board not found
ERROR_INSUFFICIENT_BUFFER : invalid size of in/out buffer
*******************************************************************************/
#define PCI416_READ_MWARREG_PROC 36
#define PCI416_READ_MWARREG_PROC_NT \
CTL_CODE(PCI416_TYPE, 0x924, METHOD_BUFFERED, FILE_READ_ACCESS)
/******************************************************************************
Function PCI416_SET_MWARREG_PROC
Writes to the PCI controller bus master control/status register
Parameters:
LPDIOC lpDIOCtl pointer to DIOCPARAMETERS data structure.
(DWORD*) lpDIOCtl->lpvInBuffer: Array of three DWORDs.
The first field contains the index of the board.
The order of the boards is determind by the
Windows 95 Configuration Manager.
The second field holds the write mode+ read back
option.
(0 = overwrite, 1= OR, 2 = AND)
The third field holds the value to be written
to the register.
DWORD index
DWORD mode
DWORD regval
(DWORD*)lpDIOCtl->lpvOutBuffer: returns the current value of the shadow reg.
Return value:
Error codes as defined in winerror.h
NOERROR
ERROR_DEV_NOT_EXIST : PCI416 board not found
ERROR_INSUFFICIENT_BUFFER : invalid size of in/out buffer
ERROR_INVALID_PARAMETER : wrong mode
*******************************************************************************/
#define PCI416_SET_MWARREG_PROC 37
#define PCI416_SET_MWARREG_PROC_NT \
CTL_CODE(PCI416_TYPE, 0x925, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS)
/******************************************************************************
Function PCI416_READ_MWTCREG_PROC
Reads the PCI controller bus master write transfer count register
Parameters:
LPDIOC lpDIOCtl pointer to DIOCPARAMETERS data structure.
(DWORD*) lpDIOCtl->lpvInBuffer: DWORD that contains the index of the board.
The order of the boards is determind by the
Windows 95 Configuration Manager.
(DWORD*)lpDIOCtl->lpvOutBuffer: Return value of the register.
Return value:
Error codes as defined in winerror.h
NOERROR
ERROR_DEV_NOT_EXIST : PCI416 board not found
ERROR_INSUFFICIENT_BUFFER : invalid size of in/out buffer
*******************************************************************************/
#define PCI416_READ_MWTCREG_PROC 38
#define PCI416_READ_MWTCREG_PROC_NT \
CTL_CODE(PCI416_TYPE, 0x926, METHOD_BUFFERED, FILE_READ_ACCESS)
/******************************************************************************
Function PCI416_SET_MWTCREG_PROC
Writes to the PCI controller bus master write transfer count register
Parameters:
LPDIOC lpDIOCtl pointer to DIOCPARAMETERS data structure.
(DWORD*) lpDIOCtl->lpvInBuffer: Array of three DWORDs.
The first field contains the index of the board.
The order of the boards is determind by the
Windows 95 Configuration Manager.
The second field holds the write mode+ read back
option.
(0 = overwrite, 1= OR, 2 = AND)
The third field holds the value to be written
to the register.
DWORD index
DWORD mode
DWORD regval
(DWORD*)lpDIOCtl->lpvOutBuffer: returns the current value of the shadow reg.
Return value:
Error codes as defined in winerror.h
NOERROR
ERROR_DEV_NOT_EXIST : PCI416 board not found
ERROR_INSUFFICIENT_BUFFER : invalid size of in/out buffer
ERROR_INVALID_PARAMETER : wrong mode
*******************************************************************************/
#define PCI416_SET_MWTCREG_PROC 39
#define PCI416_SET_MWTCREG_PROC_NT \
CTL_CODE(PCI416_TYPE, 0x927, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS)
/******************************************************************************
@func pci416_dma_pause_resume
@parm Index of board. Max. index = number of PCI-441 boards - 1
@parm flags : 0 = resume 1 = pause
@rdesc NOERROR
ERROR_DEV_NOT_EXIST : PCI416 board not found
ERROR_SERVICE_REQUEST_TIMEOUT : time out accessing dma logic
@comm Pauses/ Resumes DMA
*******************************************************************************/
#define PCI416_PAUSE_RESUME_DMA_PROC 40
#define PCI416_PAUSE_RESUME_DMA_PROC_NT \
CTL_CODE(PCI416_TYPE, 0x928, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS)
// NT only
/******************************************************************************
@func PCI416_START_DMA
@parm Array of two DWORDs:
TRGMODE: 0== PreTrigger, external trigger,
1== Single Internal Trigger,
BRDINDEX:Index of board. Max. index = number of PCI-416 boards - 1
@rdesc NOERROR,
ERROR_DEV_NOT_EXIST, : PCI416 board not found
ERROR_SERVICE_REQUEST_TIMEOUT : time out accessing dma logic
@comm start DAQ asynchronously (Windows NT only)
*******************************************************************************/
#define PCI416_START_DMA_PROC_NT \
CTL_CODE(PCI416_TYPE, 0x929, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS)
/******************************************************************************
@func PCI416_CLOSE_DMAHNDL_PROC_NT
@rdesc NOERROR,
ERROR_DEV_NOT_EXIST, : PCI416 board not found
@comm Close DMA handle opend with SETUP_DMA
Windows NT only
*******************************************************************************/
#define PCI416_CLOSE_DMAHNDL_PROC_NT \
CTL_CODE(PCI416_TYPE, 0x92A, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS)
/******************************************************************************
@func PCI416_MAP_MEMORY_PROC_NT
@parm : Array of two DWORDs:
param[0] returns handle to beginning of DMA buffer
param[1] size of mapped buffer
@rdesc NOERROR,
ERROR_DEV_NOT_EXIST, : PCI416 board not found
@comm Maps portion of the DMA buffer into user space
Windows NT only
*******************************************************************************/
#define PCI416_MAP_MEMORY_PROC_NT \
CTL_CODE(PCI416_TYPE, 0x92B, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS)
/******************************************************************************
@func PCI416_UNMAP_MEMORY_PROC_NT
@parm : DWORD HANDLE : handle to be unmapped
@rdesc NOERROR,
ERROR_DEV_NOT_EXIST, : PCI416 board not found
@comm Unmaps mapped DMA buffer space
Windows NT only
*******************************************************************************/
#define PCI416_UNMAP_MEMORY_PROC_NT \
CTL_CODE(PCI416_TYPE, 0x92C, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS)
#if defined (__cplusplus)
}
#endif
#endif