бомж (24.01.2017 23:17, просмотров: 320) ответил 0men на это точно, и вообще непонятно другое.. как выглядит тип (структура) PDEVICEINSTANCE..
PDEVICEINSTANCE выглядит так:
/*****************************************************************************/
/*! Structure defining a physical device passed to the toolkit. Passing it,
* will create all logical device associated with this instance */
/*****************************************************************************/
typedef struct DEVICEINSTANCEtag
{
uint32_t ulPhysicalAddress; /*!< Physical address of the cifX card */
uint8_t bIrqNumber; /*!< IRQ number assigned to card */
int fIrqEnabled; /*!< !=0 if the IRQ is used on this device */
int fPCICard; /*!< !=0 if the card is a PCI card (netX directly connected to PCI)
,this will reset the netX if eDeviceType is AUTODETECT or RAMBASE */
int fModuleLoad; /*!< This devices works with modules */
CIFX_TOOLKIT_DEVICETYPE_E eDeviceType; /*!< Type of the device. If set to AUTODETECT it will be updated during
cifXAddDevice */
PFN_CIFXTK_NOTIFY pfnNotify; /*!< Function to notify user of different states in the toolkit, to allow
memory controller reconfiguration, etc. */
void* pvOSDependent; /*!< OS dependent pointer to device identification (used for PCI read/write request). This parameter must allow the OS/User to identify the card and access it's PCI registers */
uint8_t* pbDPM; /*!< Virtual/usable pointer to the cards DPM */
uint32_t ulDPMSize; /*!< Size of the cards DPM */
CIFX_TOOLKIT_CHIPTYPE_E eChipType; /*!< Type of chip */
char szName[CIFx_MAX_INFO_NAME_LENTH]; /*!< Default name of the card, must be inserted by user */
char szAlias[CIFx_MAX_INFO_NAME_LENTH];/*!< Alias name of the card (must be inserted by user */
int32_t lInitError; /*!< Initialization error of the card */
PNETX_GLOBAL_REG_BLOCK ptGlobalRegisters; /*!< Pointer to the global host registers (only available on PCI) */
uint32_t ulSerialNumber; /*!< Serial number of the card (read on startup) */
uint32_t ulDeviceNumber; /*!< Device number of the card (read on startup) */
uint32_t ulSlotNumber; /*!< Slot number on card (read on startup) */
uint8_t* pbHandshakeBlock; /*!< Pointer to start of Handshake block (NULL if no handshake block was found */
int iIrqToDsrBuffer; /*!< IRQ to DSR Buffer number to use */
IRQ_TO_DSR_BUFFER_T atIrqToDsrBuffer[2]; /*!< IRQ to DSR Buffers */
uint32_t ulIrqCounter; /*!< Number of interrupts processed on this device */
CHANNELINSTANCE tSystemDevice; /*!< Every card has at least one SystemDevice */
uint32_t ulCommChannelCount; /*!< Number of fount communication channels on the card */
CHANNELINSTANCE** pptCommChannels; /*!< Array of all found channels */
#ifdef CIFX_TOOLKIT_DMA
/* DMA Buffer Structure */
uint32_t ulDMABufferCount; /*!< Number of available DMA buffers */
CIFX_DMABUFFER_T atDmaBuffers[CIFX_DMA_BUFFER_COUNT]; /*!< DMA buffer definition for the device */
#endif /* CIFX_TOOLKIT_DMA */
/* Synch handling */
CIFX_SYNCH_DATA_T tSyncData; /*!< Synchronisation structure */
int fResetActive; /*!< !=0 if a reset is pending on device (DEV_DoSystemStart) */
/* Extended memory (additional target memory) */
uint8_t* pbExtendedMemory; /*!< Virtual/usable pointer to an extended memory area */
uint32_t ulExtendedMemorySize; /*!< Size of the extended memory area */
#ifdef CIFX_TOOLKIT_HWIF
PFN_HWIF_MEMCPY pfnHwIfRead;
PFN_HWIF_MEMCPY pfnHwIfWrite;
#endif /* CIFX_TOOLKIT_HWIF */
} DEVICEINSTANCE, *PDEVICEINSTANCE;
memento mori