Annexe C

Référence du driver 32bit de la DAS1601

Interfaces de la couche USER
Procédures d'initialisation et d'information

HDAS dasOpenDevice(UINT uBoardNumber); typedef struct tagDASINFO { UINT uVersionNumber; UINT uBoardType; UINT uDMAChannel; UINT uInterruptChannel; UINT uBaseAddress; UINT uClockSelect; BOOL bWaitState; UINT uADState; UINT uDAState; } DASINFO, * PDASINFO; BOOL dasGetInfo(PDASINFO pdi);

Procédures d'accès direct aux entrées/sorties

BOOL dasADRead(HDAS hDAS, USHORT usADChannel, PLONG plValue); BOOL dasADGetGain(HDAS hDAS, PLONG plGain); BOOL dasADSetGain(HDAS hDAS, LONG lGain); BOOL dasDAWrite(HDAS hDAS, USHORT usDAChannel, LONG lValue); BOOL dasDAPickup(HDAS hDAS, USHORT usDAChannel, PLONG plValue); BOOL dasDIRead(HDAS hDAS, USHORT usDIChannel, PLONG plValue); BOOL dasDOWrite(HDAS hDAS, USHORT usDOChannel, LONG lValue); BOOL dasDOPickup(HDAS hDAS, USHORT usDOChannel, PLONG plValue);

Procédures de transfert Analogique / Numérique à haut débit

BOOL dasLockADTransfertBuffer(PVOID pvBufferAddress, ULONG ulBufferSize); BOOL dasUnlockADTransfertBuffer(); BOOL dasEnableADTransfertFreeRun(BOOL bFreeRun = TRUE); BOOL dasIsADTransfertFreeRunning(); BOOL dasEnableADTransfertContinuousRun(BOOL bContinuous = TRUE); BOOL dasIsADTransfertContinuousRun(); BOOL dasGetADTransfertChannels(PUINT puStartADChannel, PUINT puStopADChannel); BOOL dasSetADTransfertChannels(UINT uStartADChannel, UINT uStopADChannel); BOOL dasStartADTransfert(); BOOL dasStartOneShotADTransfert(); BOOL dasStopADTransfert();

Procédures d'interruption

BOOL dasEnableInterrupt(BOOL bEnable, FARPROC pfnInterruptProc);

Interfaces de la couche KERNEL
Fonctions du driver

// Driver’s functions PUCHAR MapIo( IN PHYSICAL_ADDRESS Port, IN ULONG Length, IN PDAS_DEVICE_PROFILE pDASDeviceProfile, OUT PBOOLEAN pbMapped ); void UnmapIo( IN PVOID Port, IN ULONG Length, IN BOOLEAN bPortWasMapped ); // DAS driver's private functions NTSTATUS DASReadDeviceProfile( IN PUNICODE_STRING pustrRegistryPath, IN OUT PDAS_DEVICE_PROFILE pDASDeviceProfile ); NTSTATUS DASReserveResources( IN PDRIVER_OBJECT pDriverObject, IN PDAS_DEVICE_PROFILE pDASDeviceProfile ); NTSTATUS DASDisposeResources( IN PDRIVER_OBJECT pDriverObject, IN PDAS_DEVICE_PROFILE pDASDeviceProfile ); NTSTATUS DASLocateBoard( IN PDRIVER_OBJECT pDriverObject, IN PDAS_DEVICE_PROFILE pDASDeviceProfile ); NTSTATUS DASCreateDevice( IN PDRIVER_OBJECT pDriverObject, IN PDAS_DEVICE_PROFILE pDASDeviceProfile, OUT PDEVICE_OBJECT* ppDeviceObject ); NTSTATUS DASDestroyDevice( IN PDEVICE_OBJECT pDeviceObject ); NTSTATUS DASCreateSymbolicLink( IN PDRIVER_OBJECT pDriverObject, IN PDAS_DEVICE_PROFILE pDASDeviceProfile ); NTSTATUS DASDestroySymbolicLink( IN PDAS_DEVICE_PROFILE pDASDeviceProfile ); NTSTATUS DASDriverDispatch( IN PDEVICE_OBJECT pDeviceObject, IN PIRP pIrp ); void DASDriverUnload( IN PDRIVER_OBJECT pDriverObject ); // DAS' private functions NTSTATUS DASADRead( IN PDAS_DEVICE_EXTENSION pDASDeviceExtension, IN PULONG pulIoBuffer, IN ULONG ulInputBufferLength, IN ULONG ulOutputBufferLength ); NTSTATUS DASADGetGain( IN PDAS_DEVICE_EXTENSION pDASDeviceExtension, IN PULONG pulIoBuffer, IN ULONG ulInputBufferLength, IN ULONG ulOutputBufferLength ); NTSTATUS DASADSetGain( IN PDAS_DEVICE_EXTENSION pDASDeviceExtension, IN PULONG pulIoBuffer, IN ULONG ulInputBufferLength, IN ULONG ulOutputBufferLength ); NTSTATUS DASDAWrite( IN PDAS_DEVICE_EXTENSION pDASDeviceExtension, IN PULONG pulIoBuffer, IN ULONG ulInputBufferLength, IN ULONG ulOutputBufferLength ); NTSTATUS DASDAPickup( IN PDAS_DEVICE_EXTENSION pDASDeviceExtension, IN PULONG pulIoBuffer, IN ULONG ulInputBufferLength, IN ULONG ulOutputBufferLength ); NTSTATUS DASDIRead( IN PDAS_DEVICE_EXTENSION pDASDeviceExtension, IN PULONG pulIoBuffer, IN ULONG ulInputBufferLength, IN ULONG ulOutputBufferLength ); NTSTATUS DASDOWrite( IN PDAS_DEVICE_EXTENSION pDASDeviceExtension, IN PULONG pulIoBuffer, IN ULONG ulInputBufferLength, IN ULONG ulOutputBufferLength ); NTSTATUS DASDOPickup( IN PDAS_DEVICE_EXTENSION pDASDeviceExtension, IN PULONG pulIoBuffer, IN ULONG ulInputBufferLength, IN ULONG ulOutputBufferLength );