
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
);
