/*++ Copyright (c) 2003 Aleksandrov O.E. All rights Reserved Copyright (c) 2003 Ђ«ҐЄc ­¤а®ў Ћ.…. All rights Reserved Module Name: FuncMi1201.h Abstract: ‡ Ј®«®ўЄЁ ¤®Ї. дг­ЄжЁ© ¤«п MI1201-AGM Port I/O Driver ******************************************************** --*/ #include //#include "mi1201ioctl.h" // Get IOCTL interface definitions #if !defined(__FuncMI1201_H__) #define __FuncMI1201_H__ // Данные о транслированном диапазоне портов typedef struct _tTransPortRange { PVOID PortFirst; // адрес первого порта диапазона ULONG PortCount; // число портов в диапазоне. ULONG PortMemoryType; // HalTranslateBusAddress MemoryType BOOLEAN PortWasMapped; // If TRUE, we have to unmap on unload } tTransPortRange, *ptTransPortRange; // Список транслированных диапазонов портов typedef struct _tTransPortInfo { ULONG RangeCount; // количество диапазонов в списке ULONG UsedRangeCount; // количество заполненных (используемых) диапазонов в списке tTransPortRange Range[1]; // список диапазонов } tTransPortInfo, *ptTransPortInfo; // Данные о исходном диапазоне портов typedef struct _tInitialPortRange { ULONG PortFirst; // адрес первого порта диапазона ULONG PortLast; // адрес последнего порта диапазона ULONG TranslatedRangeNumber; // номер соответствующего транслированного диапазона. } tInitialPortRange, *ptInitialPortRange; // Список исходных диапазонов портов typedef struct _tInitialPortInfo { ULONG RangeCount; // количество диапазонов в списке ULONG UsedRangeCount; // количество заполненных (используемых) диапазонов в списке tInitialPortRange Range[1]; // список диапазонов } tInitialPortInfo, *ptInitialPortInfo; #define cMaxRangeNumber 10 // максимальное число диапазонов поддерживаемых драйвером // Список транслированных диапазонов портов для cMaxRangeNumber диапазонов typedef struct _tTransPortInfoArray { tTransPortInfo Info; // Список диапазонов портов tTransPortRange RangeBuffer[9]; // Место для размещения (cMaxRangeNumber-1) диапазонов (1 размещен в tPortInfo) } tTransPortInfoArray, *ptTransPortInfoArray; // Список исходных диапазонов портов для cMaxRangeNumber диапазонов typedef struct _tInitialPortInfoArray { tInitialPortInfo Info; // Список диапазонов портов tInitialPortRange RangeBuffer[9]; // Место для размещения (cMaxRangeNumber-1) диапазонов (1 размещен в tPortInfo) } tInitialPortInfoArray, *ptInitialPortInfoArray; //-------- function declarations ------------------------------- void InitTranslatedPortInfo( // Инициализирует структуру tTransPortInfo начальными значениями IN OUT tTransPortInfo *PortInfo, IN ULONG ulRangeCount // количество инициализируемых диапазонов ); void InitInitialPortInfo( // Инициализирует структуру tInitialPortInfo начальными значениями IN OUT tInitialPortInfo *PortInfo, IN ULONG ulRangeCount // количество инициализируемых диапазонов ); LONG AddTranslatedPortInfo( // Добавление диапазона в структуру tTransPortInfo IN OUT tTransPortInfo *PortInfo, IN PVOID PortFirst, // адрес первого порта диапазона IN ULONG PortCount, // число портов в диапазоне. IN ULONG PortMemoryType, // HalTranslateBusAddress MemoryType IN BOOLEAN PortWasMapped // If TRUE, we have to unmap on unload ); LONG AddInitialPortInfoAscending( // Добавление диапазона в структуру tInitialPortInfo с упорядочением по возрастанию IN OUT tInitialPortInfo *PortInfo, IN ULONG PortFirst, // адрес первого порта диапазона IN ULONG PortCount // число портов в диапазоне. ); LONG CompareInitialPortInfoAndPort( // Проверка принадлежности порта списку диапазонов IN tInitialPortInfo *PortInfo, // УПОРЯДОЧЕННЫЙ ПО ВОЗРАСТАНИЮ список диапазонов IN ULONG Port // адрес порта ); #endif