20 #if defined(__cplusplus)
26 #if defined(WIN32) && !defined(__MINGW32__)
27 #define DLLCALLCONV __stdcall
28 #if !defined(_SAL_VERSION)
44 #define WD_DRIVER_NAME_PREFIX "\\\\.\\"
46 #define WD_DRIVER_NAME_PREFIX "/dev/"
48 #define WD_DRIVER_NAME_PREFIX ""
52 #define __FUNCTION__ __func__
55 #define WD_DEFAULT_DRIVER_NAME_BASE "windrvr" WD_VER_ITOA
56 #define WD_DEFAULT_DRIVER_NAME \
57 WD_DRIVER_NAME_PREFIX WD_DEFAULT_DRIVER_NAME_BASE
59 #define WD_MAX_DRIVER_NAME_LENGTH 128
60 #define WD_MAX_KP_NAME_LENGTH 128
61 #define WD_VERSION_STR_LENGTH 128
63 #if defined(WD_DRIVER_NAME_CHANGE)
105 #define WD_DRIVER_NAME WD_DriverName(NULL)
107 #define WD_DRIVER_NAME WD_DEFAULT_DRIVER_NAME
110 #define WD_PROD_NAME "WinDriver"
112 #if !defined(ARM) && \
115 (defined(LINUX) || (defined(WIN32)))
119 #if !defined(x86_64) && \
121 (defined(x86) && (defined(KERNEL_64BIT) || defined(__x86_64__)))
126 #define WD_CPU_SPEC " x86_64"
128 #define WD_CPU_SPEC " ARM"
130 #define WD_CPU_SPEC " ARM64"
132 #define WD_CPU_SPEC " X86"
136 #define WD_FILE_FORMAT " sys"
137 #elif defined (APPLE)
138 #define WD_FILE_FORMAT " kext"
139 #elif defined (LINUX)
140 #define WD_FILE_FORMAT " ko"
143 #if defined(KERNEL_64BIT)
144 #define WD_DATA_MODEL " 64bit"
146 #define WD_DATA_MODEL " 32bit"
149 #define WD_VER_STR WD_PROD_NAME " v" WD_VERSION_STR \
150 " Jungo Connectivity (c) 1997 - " COPYRIGHTS_YEAR_STR \
151 " Build Date: " __DATE__ \
152 WD_CPU_SPEC WD_DATA_MODEL WD_FILE_FORMAT
154 #if !defined(POSIX) && defined(LINUX)
158 #if !defined(UNIX) && defined(POSIX)
162 #if !defined(WIN32) && defined(WINNT)
166 #if !defined(WIN32) && !defined(UNIX) && !defined(APPLE)
170 #if defined(_KERNEL_MODE) && !defined(KERNEL)
174 #if defined(KERNEL) && !defined(__KERNEL__)
178 #if defined(_KERNEL) && !defined(__KERNEL__)
182 #if defined( __KERNEL__) && !defined(_KERNEL)
186 #if defined(LINUX) && defined(__x86_64__) && !defined(__KERNEL__)
189 __asm__(
".symver memcpy,memcpy@GLIBC_2.2.5");
195 #if !defined(__P_TYPES__)
200 typedef unsigned char UCHAR;
201 typedef unsigned short USHORT;
202 typedef unsigned int UINT;
203 #if !defined (APPLE_USB)
204 typedef unsigned long ULONG;
208 typedef unsigned char *PBYTE;
211 typedef unsigned short *PWORD;
212 typedef u32 DWORD, *PDWORD;
213 typedef PVOID HANDLE;
215 #if !defined(__KERNEL__)
229 #if defined(__KERNEL__)
233 #include <asm-generic/ioctl.h>
234 #include <asm-generic/errno.h>
239 #include <sys/ioctl.h>
240 #include <sys/mman.h>
242 #include <sys/types.h>
243 #include <sys/stat.h>
246 typedef unsigned long long UINT64;
248 #include <libkern/OSTypes.h>
249 #include <libkern/OSAtomic.h>
250 typedef UInt16 UINT16;
255 #include <IOKit/IOTypes.h>
256 #if defined(__KERNEL__)
257 typedef struct OSObject* FILEHANDLE;
258 typedef UInt32 PRCHANDLE;
260 #include <IOKit/IOKitLib.h>
263 kWinDriverMethodSyncIoctl = 0,
264 kWinDriverNumOfMethods,
266 #if !defined(__KERNEL__)
279 #define PTR2INT(value) ((UInt64)(value))
281 #define PTR2INT(value) ((UInt32)(value))
283 #define MAC_UC_MAGIC_MASK 0xFF0000FF
284 #define MAC_UC_MAGIC_NUM 0x7E000041
285 #define MAC_UC_64BIT_APP 0x100
289 #if defined(__KERNEL__)
290 #if !defined (CMAKE_WD_BUILD)
291 int sprintf(
char *buffer,
const char *format, ...);
295 #include <winioctl.h>
297 #define stricmp _stricmp
301 #if !defined(__KERNEL__)
303 #if !defined(va_copy) && !defined(__va_copy)
304 #define va_copy(ap2,ap1) (ap2)=(ap1)
306 #if !defined(va_copy) && defined(__va_copy)
307 #define va_copy __va_copy
315 #if !defined(_WINDEF_)
317 typedef unsigned short int WORD;
320 #if !defined(_BASETSD_H_)
333 #if defined(KERNEL_64BIT)
349 #if defined(KERNEL_64BIT)
356 typedef unsigned long UPTR;
414 #define DMA_BIT_MASK(n) (((n) == 64) ? ~0ULL : ((1ULL<<(n))-1))
473 #define DMA_ADDRESS_WIDTH_MASK 0x7f000000
475 #define DMA_OPTIONS_ALL \
476 (DMA_KERNEL_BUFFER_ALLOC | DMA_KBUF_BELOW_16M | DMA_LARGE_BUFFER \
477 | DMA_ALLOW_CACHE | DMA_KERNEL_ONLY_MAP | DMA_FROM_DEVICE | DMA_TO_DEVICE \
478 | DMA_ALLOW_64BIT_ADDRESS | DMA_ALLOW_NO_HCARD | DMA_GET_EXISTING_BUF \
479 | DMA_RESERVED_MEM | DMA_KBUF_ALLOC_SPECIFY_ADDRESS_WIDTH \
480 | DMA_ADDRESS_WIDTH_MASK)
482 #define DMA_DIRECTION_MASK DMA_TO_FROM_DEVICE
485 #define DMA_READ_FROM_DEVICE DMA_FROM_DEVICE
486 #define DMA_WRITE_TO_DEVICE DMA_TO_DEVICE
488 #define DMA_OPTIONS_ADDRESS_WIDTH_SHIFT 24
498 #if defined (i386) && defined(KERNEL_64BIT)
499 #define PAD_TO_64(pName) DWORD dwPad_##pName;
501 #define PAD_TO_64(pName)
535 PVOID DMATransactionCallbackCtx;
539 DWORD dwMaxTransferSize;
540 DWORD dwTransferElementSize;
541 DWORD dwBytesTransferred;
643 DWORD dwEnabledIntType;
652 #define WD_LICENSE_LENGTH 3072
711 UPTR pUserDirectAddr;
760 DWORD fCheckLockOnly;
765 CHAR cDescription[100];
768 #define WD_PROCESS_NAME_LENGTH 128
934 DWORD dwMicroSeconds;
992 DWORD dwLevelMessageBox;
997 #define DEBUG_USER_BUF_LEN 2048
1012 DWORD hKernelPlugIn;
1459 #define WD_IPC_ALL_MSG (WD_IPC_UNICAST_MSG | WD_IPC_MULTICAST_MSG)
1467 #define WD_ACTIONS_POWER (WD_POWER_CHANGED_D0 | WD_POWER_CHANGED_D1 | \
1468 WD_POWER_CHANGED_D2 | WD_POWER_CHANGED_D3 | WD_POWER_SYSTEM_WORKING | \
1469 WD_POWER_SYSTEM_SLEEPING1 | WD_POWER_SYSTEM_SLEEPING3 | \
1470 WD_POWER_SYSTEM_HIBERNATE | WD_POWER_SYSTEM_SHUTDOWN)
1471 #define WD_ACTIONS_ALL (WD_ACTIONS_POWER | WD_INSERT | WD_REMOVE)
1489 DWORD hKernelPlugIn;
1516 DWORD dwNumMatchTables;
1522 DWORD applications_num;
1533 #define BZERO(buf) memset(&(buf), 0, sizeof(buf))
1536 #ifndef INVALID_HANDLE_VALUE
1537 #define INVALID_HANDLE_VALUE ((HANDLE)(-1))
1541 #define CTL_CODE(DeviceType, Function, Method, Access) ( \
1542 ((DeviceType)<<16) | ((Access)<<14) | ((Function)<<2) | (Method) \
1545 #define METHOD_BUFFERED 0
1546 #define METHOD_IN_DIRECT 1
1547 #define METHOD_OUT_DIRECT 2
1548 #define METHOD_NEITHER 3
1549 #define FILE_ANY_ACCESS 0
1550 #define FILE_READ_ACCESS 1
1551 #define FILE_WRITE_ACCESS 2
1554 #if defined(LINUX) && defined(KERNEL_64BIT)
1556 #define WD_CTL_CODE(wFuncNum) \
1557 _IOC(_IOC_READ|_IOC_WRITE, WD_TYPE, wFuncNum, 0)
1558 #define WD_CTL_DECODE_FUNC(IoControlCode) _IOC_NR(IoControlCode)
1559 #define WD_CTL_DECODE_TYPE(IoControlCode) _IOC_TYPE(IoControlCode)
1562 #define WD_CTL_CODE(wFuncNum) (wFuncNum)
1563 #define WD_CTL_DECODE_FUNC(IoControlCode) (IoControlCode)
1564 #define WD_CTL_DECODE_TYPE(IoControlCode) (WD_TYPE)
1567 #define WD_TYPE 38200
1568 #if defined(KERNEL_64BIT)
1569 #define FUNC_MASK 0x400
1571 #define FUNC_MASK 0x0
1573 #define WD_CTL_CODE(wFuncNum) CTL_CODE(WD_TYPE, (wFuncNum | FUNC_MASK), \
1574 METHOD_NEITHER, FILE_ANY_ACCESS)
1575 #define WD_CTL_DECODE_FUNC(IoControlCode) ((IoControlCode >> 2) & 0xfff)
1576 #define WD_CTL_DECODE_TYPE(IoControlCode) \
1577 DEVICE_TYPE_FROM_CTL_CODE(IoControlCode)
1581 #define WD_CTL_IS_64BIT_AWARE(IoControlCode) \
1582 (_IOC_DIR(IoControlCode) & (_IOC_READ|_IOC_WRITE))
1584 #define WD_CTL_IS_64BIT_AWARE(IoControlCode) TRUE
1586 #define WD_CTL_IS_64BIT_AWARE(IoControlCode) \
1587 (WD_CTL_DECODE_FUNC(IoControlCode) & FUNC_MASK)
1593 #define IOCTL_WD_KERNEL_BUF_LOCK WD_CTL_CODE(0x9f3)
1594 #define IOCTL_WD_KERNEL_BUF_UNLOCK WD_CTL_CODE(0x9f4)
1595 #define IOCTL_WD_DMA_LOCK WD_CTL_CODE(0x9be)
1596 #define IOCTL_WD_DMA_UNLOCK WD_CTL_CODE(0x902)
1597 #define IOCTL_WD_TRANSFER WD_CTL_CODE(0x98c)
1598 #define IOCTL_WD_MULTI_TRANSFER WD_CTL_CODE(0x98d)
1599 #define IOCTL_WD_PCI_SCAN_CARDS WD_CTL_CODE(0x9fa)
1600 #define IOCTL_WD_PCI_GET_CARD_INFO WD_CTL_CODE(0x9e8)
1601 #define IOCTL_WD_VERSION WD_CTL_CODE(0x910)
1602 #define IOCTL_WD_PCI_CONFIG_DUMP WD_CTL_CODE(0x91a)
1603 #define IOCTL_WD_KERNEL_PLUGIN_OPEN WD_CTL_CODE(0x91b)
1604 #define IOCTL_WD_KERNEL_PLUGIN_CLOSE WD_CTL_CODE(0x91c)
1605 #define IOCTL_WD_KERNEL_PLUGIN_CALL WD_CTL_CODE(0x91d)
1606 #define IOCTL_WD_INT_ENABLE WD_CTL_CODE(0x9b6)
1607 #define IOCTL_WD_INT_DISABLE WD_CTL_CODE(0x9bb)
1608 #define IOCTL_WD_INT_COUNT WD_CTL_CODE(0x9ba)
1609 #define IOCTL_WD_SLEEP WD_CTL_CODE(0x927)
1610 #define IOCTL_WD_DEBUG WD_CTL_CODE(0x928)
1611 #define IOCTL_WD_DEBUG_DUMP WD_CTL_CODE(0x929)
1612 #define IOCTL_WD_CARD_UNREGISTER WD_CTL_CODE(0x9e7)
1613 #define IOCTL_WD_CARD_REGISTER WD_CTL_CODE(0x9e6)
1614 #define IOCTL_WD_INT_WAIT WD_CTL_CODE(0x9b9)
1615 #define IOCTL_WD_LICENSE WD_CTL_CODE(0x9f9)
1616 #define IOCTL_WD_EVENT_REGISTER WD_CTL_CODE(0x9ef)
1617 #define IOCTL_WD_EVENT_UNREGISTER WD_CTL_CODE(0x9f0)
1618 #define IOCTL_WD_EVENT_PULL WD_CTL_CODE(0x9f1)
1619 #define IOCTL_WD_EVENT_SEND WD_CTL_CODE(0x9f2)
1620 #define IOCTL_WD_DEBUG_ADD WD_CTL_CODE(0x964)
1621 #define IOCTL_WD_USAGE WD_CTL_CODE(0x976)
1622 #define IOCTL_WDU_GET_DEVICE_DATA WD_CTL_CODE(0x9a7)
1623 #define IOCTL_WDU_SET_INTERFACE WD_CTL_CODE(0x981)
1624 #define IOCTL_WDU_RESET_PIPE WD_CTL_CODE(0x982)
1625 #define IOCTL_WDU_TRANSFER WD_CTL_CODE(0x983)
1626 #define IOCTL_WDU_HALT_TRANSFER WD_CTL_CODE(0x985)
1627 #define IOCTL_WDU_WAKEUP WD_CTL_CODE(0x98a)
1628 #define IOCTL_WDU_RESET_DEVICE WD_CTL_CODE(0x98b)
1629 #define IOCTL_WD_GET_DEVICE_PROPERTY WD_CTL_CODE(0x990)
1630 #define IOCTL_WD_CARD_CLEANUP_SETUP WD_CTL_CODE(0x995)
1631 #define IOCTL_WD_DMA_SYNC_CPU WD_CTL_CODE(0x99f)
1632 #define IOCTL_WD_DMA_SYNC_IO WD_CTL_CODE(0x9a0)
1633 #define IOCTL_WDU_STREAM_OPEN WD_CTL_CODE(0x9a8)
1634 #define IOCTL_WDU_STREAM_CLOSE WD_CTL_CODE(0x9a9)
1635 #define IOCTL_WDU_STREAM_START WD_CTL_CODE(0x9af)
1636 #define IOCTL_WDU_STREAM_STOP WD_CTL_CODE(0x9b0)
1637 #define IOCTL_WDU_STREAM_FLUSH WD_CTL_CODE(0x9aa)
1638 #define IOCTL_WDU_STREAM_GET_STATUS WD_CTL_CODE(0x9b5)
1639 #define IOCTL_WDU_SELECTIVE_SUSPEND WD_CTL_CODE(0x9ae)
1640 #define IOCTL_WD_PCI_SCAN_CAPS WD_CTL_CODE(0x9e5)
1641 #define IOCTL_WD_IPC_REGISTER WD_CTL_CODE(0x9eb)
1642 #define IOCTL_WD_IPC_UNREGISTER WD_CTL_CODE(0x9ec)
1643 #define IOCTL_WD_IPC_SCAN_PROCS WD_CTL_CODE(0x9ed)
1644 #define IOCTL_WD_IPC_SEND WD_CTL_CODE(0x9ee)
1645 #define IOCTL_WD_PCI_SRIOV_ENABLE WD_CTL_CODE(0x9f5)
1646 #define IOCTL_WD_PCI_SRIOV_DISABLE WD_CTL_CODE(0x9f6)
1647 #define IOCTL_WD_PCI_SRIOV_GET_NUMVFS WD_CTL_CODE(0x9f7)
1648 #define IOCTL_WD_IPC_SHARED_INT_ENABLE WD_CTL_CODE(0x9fc)
1649 #define IOCTL_WD_IPC_SHARED_INT_DISABLE WD_CTL_CODE(0x9fd)
1650 #define IOCTL_WD_DMA_TRANSACTION_INIT WD_CTL_CODE(0x9fe)
1651 #define IOCTL_WD_DMA_TRANSACTION_EXECUTE WD_CTL_CODE(0x9ff)
1652 #define IOCTL_WD_DMA_TRANSFER_COMPLETED_AND_CHECK WD_CTL_CODE(0xa00)
1653 #define IOCTL_WD_DMA_TRANSACTION_RELEASE WD_CTL_CODE(0xa01)
1664 #define WD_IOCTL_HEADER_CODE 0xa410b413UL
1667 #if defined(__KERNEL__)
1670 DWORD __cdecl KP_DeviceIoControl(DWORD dwFuncNum, HANDLE h, PVOID pParam,
1672 #define WD_FUNCTION(wFuncNum, h, pParam, dwSize, fWait) \
1673 KP_DeviceIoControl((DWORD)wFuncNum, h, (PVOID)pParam, (DWORD)dwSize)
1675 #define REGKEY_BUFSIZE 256
1676 #define OS_CAN_NOT_DETECT_TEXT "OS CAN NOT DETECT"
1677 #define INSTALLATION_TYPE_NOT_DETECT_TEXT "unknown"
1686 DWORD dwMajorVersion;
1687 DWORD dwMinorVersion;
1716 DWORD WD_FUNCTION_LOCAL(
int wFuncNum, HANDLE h,
1717 PVOID pParam, DWORD dwSize, BOOL fWait);
1723 #define WD_OpenStreamLocal(read,sync) INVALID_HANDLE_VALUE
1725 #define WD_UStreamRead(hFile, pBuffer, dwNumberOfBytesToRead, \
1726 dwNumberOfBytesRead)\
1729 #define WD_UStreamWrite(hFile, pBuffer, dwNumberOfBytesToWrite, \
1730 dwNumberOfBytesWritten)\
1733 #if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 120000
1734 #define IO_MASTER_PORT IOMainPort
1736 #define IO_MASTER_PORT IOMasterPort
1740 static inline ULONG WD_FUNCTION_LOCAL(
int wFuncNum, HANDLE h,
1741 PVOID pParam, DWORD dwSize, BOOL fWait)
1743 WD_IOCTL_HEADER ioctl_hdr;
1746 ioctl_hdr.dwHeader = WD_IOCTL_HEADER_CODE;
1747 ioctl_hdr.dwSize = dwSize;
1748 ioctl_hdr.pData = pParam;
1751 return (ULONG)ioctl((
int)(
long)h, wFuncNum, &ioctl_hdr);
1755 #define WD_OpenLocal()\
1756 ((HANDLE)(long)open(WD_DRIVER_NAME, O_RDWR | O_SYNC))
1757 #define WD_OpenStreamLocal(read,sync) \
1758 ((HANDLE)(long)open(WD_DRIVER_NAME, \
1759 ((read) ? O_RDONLY : O_WRONLY) | \
1760 ((sync) ? O_SYNC : O_NONBLOCK)))
1762 #define WD_CloseLocal(h) close((int)(long)(h))
1764 #define WD_UStreamRead(hFile, pBuffer, dwNumberOfBytesToRead, \
1765 dwNumberOfBytesRead)\
1768 #define WD_UStreamWrite(hFile, pBuffer, dwNumberOfBytesToWrite, \
1769 dwNumberOfBytesWritten)\
1772 #elif defined(WIN32)
1773 #define WD_CloseLocal(h) CloseHandle(h)
1775 #define WD_UStreamRead(hFile, pBuffer, dwNumberOfBytesToRead, \
1776 dwNumberOfBytesRead)\
1777 ReadFile(hFile, pBuffer, dwNumberOfBytesToRead, \
1778 dwNumberOfBytesRead, NULL) ? WD_STATUS_SUCCESS : \
1781 #define WD_UStreamWrite(hFile, pBuffer, dwNumberOfBytesToWrite, \
1782 dwNumberOfBytesWritten)\
1783 WriteFile(hFile, pBuffer, dwNumberOfBytesToWrite, \
1784 dwNumberOfBytesWritten, NULL) ? WD_STATUS_SUCCESS : \
1788 #define WD_OpenLocal()\
1792 FILE_SHARE_READ | FILE_SHARE_WRITE,\
1793 NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL)
1795 #define WD_OpenStreamLocal(read,sync) \
1798 (read) ? GENERIC_READ : GENERIC_WRITE,\
1799 FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, \
1800 (sync) ? 0 : FILE_FLAG_OVERLAPPED, NULL)
1802 static DWORD WD_FUNCTION_LOCAL(
int wFuncNum, HANDLE h, PVOID pParam,
1803 DWORD dwSize, BOOL fWait)
1812 DeviceIoControl(hWD, (DWORD)wFuncNum, pParam, dwSize, &rc,
1813 sizeof(DWORD), &dwTmp,
NULL);
1823 #define WD_FUNCTION WD_FUNCTION_LOCAL
1824 #define WD_Close WD_CloseLocal
1825 #define WD_Open WD_OpenLocal
1826 #define WD_StreamOpen WD_OpenStreamLocal
1827 #define WD_StreamClose WD_CloseLocal
1830 #define SIZE_OF_WD_DMA(pDma) \
1831 ((DWORD)(sizeof(WD_DMA) + ((pDma)->dwPages <= WD_DMA_PAGES ? \
1832 0 : ((pDma)->dwPages - WD_DMA_PAGES) * sizeof(WD_DMA_PAGE))))
1833 #define SIZE_OF_WD_EVENT(pEvent) \
1834 ((DWORD)(sizeof(WD_EVENT) + ((pEvent)->dwNumMatchTables > 0 ? \
1835 sizeof(WDU_MATCH_TABLE) * ((pEvent)->dwNumMatchTables - 1) : 0)))
1848 #define WD_Debug(h,pDebug)\
1849 WD_FUNCTION(IOCTL_WD_DEBUG, h, pDebug, sizeof(WD_DEBUG), FALSE)
1862 #define WD_DebugDump(h,pDebugDump)\
1863 WD_FUNCTION(IOCTL_WD_DEBUG_DUMP, h, pDebugDump, sizeof(WD_DEBUG_DUMP), \
1877 #define WD_DebugAdd(h, pDebugAdd)\
1878 WD_FUNCTION(IOCTL_WD_DEBUG_ADD, h, pDebugAdd, sizeof(WD_DEBUG_ADD), FALSE)
1892 #define WD_Transfer(h,pTransfer)\
1893 WD_FUNCTION(IOCTL_WD_TRANSFER, h, pTransfer, sizeof(WD_TRANSFER), FALSE)
1911 #define WD_MultiTransfer(h, pTransferArray, dwNumTransfers) \
1912 WD_FUNCTION(IOCTL_WD_MULTI_TRANSFER, h, pTransferArray, \
1913 sizeof(WD_TRANSFER) * (dwNumTransfers), FALSE)
1928 #define WD_KernelBufLock(h, pKerBuf)\
1929 WD_FUNCTION(IOCTL_WD_KERNEL_BUF_LOCK, h, pKerBuf, \
1930 sizeof(WD_KERNEL_BUFFER), FALSE)
1943 #define WD_KernelBufUnlock(h, pKerBuf)\
1944 WD_FUNCTION(IOCTL_WD_KERNEL_BUF_UNLOCK, h, pKerBuf, \
1945 sizeof(WD_KERNEL_BUFFER), FALSE)
2009 #define WD_DMALock(h,pDma)\
2010 WD_FUNCTION(IOCTL_WD_DMA_LOCK, h, pDma, SIZE_OF_WD_DMA(pDma), FALSE)
2024 #define WD_DMAUnlock(h,pDma)\
2025 WD_FUNCTION(IOCTL_WD_DMA_UNLOCK, h, pDma, SIZE_OF_WD_DMA(pDma), FALSE)
2040 #define WD_DMATransactionInit(h,pDma)\
2041 WD_FUNCTION(IOCTL_WD_DMA_TRANSACTION_INIT, h, pDma, SIZE_OF_WD_DMA(pDma), \
2054 #define WD_DMATransactionExecute(h,pDma)\
2055 WD_FUNCTION(IOCTL_WD_DMA_TRANSACTION_EXECUTE, h, pDma, \
2056 SIZE_OF_WD_DMA(pDma), FALSE)
2068 #define WD_DMATransferCompletedAndCheck(h,pDma)\
2069 WD_FUNCTION(IOCTL_WD_DMA_TRANSFER_COMPLETED_AND_CHECK, h, pDma, \
2070 SIZE_OF_WD_DMA(pDma), FALSE)
2083 #define WD_DMATransactionRelease(h,pDma)\
2084 WD_FUNCTION(IOCTL_WD_DMA_TRANSACTION_RELEASE, h, pDma, \
2085 SIZE_OF_WD_DMA(pDma), FALSE)
2098 #define WD_DMATransactionUninit(h,pDma)\
2099 WD_FUNCTION(IOCTL_WD_DMA_UNLOCK, h, pDma, SIZE_OF_WD_DMA(pDma), FALSE)
2124 #define WD_DMASyncCpu(h,pDma)\
2125 WD_FUNCTION(IOCTL_WD_DMA_SYNC_CPU, h, pDma, SIZE_OF_WD_DMA(pDma), FALSE)
2151 #define WD_DMASyncIo(h,pDma)\
2152 WD_FUNCTION(IOCTL_WD_DMA_SYNC_IO, h, pDma, SIZE_OF_WD_DMA(pDma), FALSE)
2202 #define WD_CardRegister(h,pCard)\
2203 WD_FUNCTION(IOCTL_WD_CARD_REGISTER, h, pCard, sizeof(WD_CARD_REGISTER),\
2218 #define WD_CardUnregister(h,pCard)\
2219 WD_FUNCTION(IOCTL_WD_CARD_UNREGISTER, h, pCard, sizeof(WD_CARD_REGISTER),\
2243 #define WD_IpcRegister(h, pIpcRegister) \
2244 WD_FUNCTION(IOCTL_WD_IPC_REGISTER, h, pIpcRegister, \
2245 sizeof(WD_IPC_REGISTER), FALSE)
2259 #define WD_IpcUnRegister(h, pProcInfo) \
2260 WD_FUNCTION(IOCTL_WD_IPC_UNREGISTER, h, pProcInfo, sizeof(WD_IPC_PROCESS), \
2276 #define WD_IpcScanProcs(h, pIpcScanProcs) \
2277 WD_FUNCTION(IOCTL_WD_IPC_SCAN_PROCS, h, pIpcScanProcs, \
2278 sizeof(WD_IPC_SCAN_PROCS), FALSE)
2293 #define WD_IpcSend(h, pIpcSend) \
2294 WD_FUNCTION(IOCTL_WD_IPC_SEND, h, pIpcSend, sizeof(WD_IPC_SEND), FALSE)
2313 #define WD_SharedIntEnable(h, pIpcRegister) \
2314 WD_FUNCTION(IOCTL_WD_IPC_SHARED_INT_ENABLE, h, pIpcRegister, \
2315 sizeof(WD_IPC_REGISTER), FALSE)
2328 #define WD_SharedIntDisable(h) \
2329 WD_FUNCTION(IOCTL_WD_IPC_SHARED_INT_DISABLE, h, 0, 0, FALSE)
2344 #define WD_PciSriovEnable(h,pPciSRIOV) \
2345 WD_FUNCTION(IOCTL_WD_PCI_SRIOV_ENABLE, h, pPciSRIOV, \
2346 sizeof(WD_PCI_SRIOV), FALSE)
2361 #define WD_PciSriovDisable(h,pPciSRIOV) \
2362 WD_FUNCTION(IOCTL_WD_PCI_SRIOV_DISABLE, h, pPciSRIOV, \
2363 sizeof(WD_PCI_SRIOV), FALSE)
2380 #define WD_PciSriovGetNumVFs(h,pPciSRIOV) \
2381 WD_FUNCTION(IOCTL_WD_PCI_SRIOV_GET_NUMVFS, h, pPciSRIOV, \
2382 sizeof(WD_PCI_SRIOV), FALSE)
2406 #define WD_CardCleanupSetup(h,pCardCleanup)\
2407 WD_FUNCTION(IOCTL_WD_CARD_CLEANUP_SETUP, h, pCardCleanup, \
2408 sizeof(WD_CARD_CLEANUP), FALSE)
2424 #define WD_PciScanCards(h,pPciScan)\
2425 WD_FUNCTION(IOCTL_WD_PCI_SCAN_CARDS, h, pPciScan,\
2426 sizeof(WD_PCI_SCAN_CARDS), FALSE)
2441 #define WD_PciScanCaps(h,pPciScanCaps) \
2442 WD_FUNCTION(IOCTL_WD_PCI_SCAN_CAPS, h, pPciScanCaps, \
2443 sizeof(WD_PCI_SCAN_CAPS), FALSE)
2458 #define WD_PciGetCardInfo(h,pPciCard)\
2459 WD_FUNCTION(IOCTL_WD_PCI_GET_CARD_INFO, h, pPciCard, \
2460 sizeof(WD_PCI_CARD_INFO), FALSE)
2476 #define WD_PciConfigDump(h,pPciConfigDump)\
2477 WD_FUNCTION(IOCTL_WD_PCI_CONFIG_DUMP, h, pPciConfigDump, \
2478 sizeof(WD_PCI_CONFIG_DUMP), FALSE)
2492 #define WD_Version(h,pVerInfo)\
2493 WD_FUNCTION(IOCTL_WD_VERSION, h, pVerInfo, sizeof(WD_VERSION), FALSE)
2515 #define WD_License(h,pLicense)\
2516 WD_FUNCTION(IOCTL_WD_LICENSE, h, pLicense, sizeof(WD_LICENSE), FALSE)
2531 #define WD_KernelPlugInOpen(h,pKernelPlugIn)\
2532 WD_FUNCTION(IOCTL_WD_KERNEL_PLUGIN_OPEN, h, pKernelPlugIn, \
2533 sizeof(WD_KERNEL_PLUGIN), FALSE)
2547 #define WD_KernelPlugInClose(h,pKernelPlugIn)\
2548 WD_FUNCTION(IOCTL_WD_KERNEL_PLUGIN_CLOSE, h, pKernelPlugIn, \
2549 sizeof(WD_KERNEL_PLUGIN), FALSE)
2570 #define WD_KernelPlugInCall(h,pKernelPlugInCall)\
2571 WD_FUNCTION(IOCTL_WD_KERNEL_PLUGIN_CALL, h, pKernelPlugInCall, \
2572 sizeof(WD_KERNEL_PLUGIN_CALL), FALSE)
2597 #define WD_IntEnable(h,pInterrupt)\
2598 WD_FUNCTION(IOCTL_WD_INT_ENABLE, h, pInterrupt, sizeof(WD_INTERRUPT), FALSE)
2611 #define WD_IntDisable(h,pInterrupt)\
2612 WD_FUNCTION(IOCTL_WD_INT_DISABLE, h, pInterrupt, sizeof(WD_INTERRUPT), \
2626 #define WD_IntCount(h,pInterrupt)\
2627 WD_FUNCTION(IOCTL_WD_INT_COUNT, h, pInterrupt, sizeof(WD_INTERRUPT), FALSE)
2645 #define WD_IntWait(h,pInterrupt)\
2646 WD_FUNCTION(IOCTL_WD_INT_WAIT, h, pInterrupt, sizeof(WD_INTERRUPT), TRUE)
2662 #define WD_Sleep(h,pSleep)\
2663 WD_FUNCTION(IOCTL_WD_SLEEP, h, pSleep, sizeof(WD_SLEEP), FALSE)
2666 #define WD_EventRegister(h, pEvent) \
2667 WD_FUNCTION(IOCTL_WD_EVENT_REGISTER, h, pEvent, SIZE_OF_WD_EVENT(pEvent), \
2669 #define WD_EventUnregister(h, pEvent) \
2670 WD_FUNCTION(IOCTL_WD_EVENT_UNREGISTER, h, pEvent, \
2671 SIZE_OF_WD_EVENT(pEvent), FALSE)
2672 #define WD_EventPull(h,pEvent) \
2673 WD_FUNCTION(IOCTL_WD_EVENT_PULL, h, pEvent, SIZE_OF_WD_EVENT(pEvent), FALSE)
2674 #define WD_EventSend(h,pEvent) \
2675 WD_FUNCTION(IOCTL_WD_EVENT_SEND, h, pEvent, SIZE_OF_WD_EVENT(pEvent), FALSE)
2676 #define WD_Usage(h, pStop) \
2677 WD_FUNCTION(IOCTL_WD_USAGE, h, pStop, sizeof(WD_USAGE), FALSE)
2679 #define WD_UGetDeviceData(h, pGetDevData) \
2680 WD_FUNCTION(IOCTL_WDU_GET_DEVICE_DATA, h, pGetDevData, \
2681 sizeof(WDU_GET_DEVICE_DATA), FALSE);
2682 #define WD_GetDeviceProperty(h, pGetDevProperty) \
2683 WD_FUNCTION(IOCTL_WD_GET_DEVICE_PROPERTY, h, pGetDevProperty, \
2684 sizeof(WD_GET_DEVICE_PROPERTY), FALSE);
2685 #define WD_USetInterface(h, pSetIfc) \
2686 WD_FUNCTION(IOCTL_WDU_SET_INTERFACE, h, pSetIfc, \
2687 sizeof(WDU_SET_INTERFACE), FALSE);
2688 #define WD_UResetPipe(h, pResetPipe) \
2689 WD_FUNCTION(IOCTL_WDU_RESET_PIPE, h, pResetPipe, sizeof(WDU_RESET_PIPE), \
2691 #define WD_UTransfer(h, pTrans) \
2692 WD_FUNCTION(IOCTL_WDU_TRANSFER, h, pTrans, sizeof(WDU_TRANSFER), TRUE);
2693 #define WD_UHaltTransfer(h, pHaltTrans) \
2694 WD_FUNCTION(IOCTL_WDU_HALT_TRANSFER, h, pHaltTrans, \
2695 sizeof(WDU_HALT_TRANSFER), FALSE);
2696 #define WD_UWakeup(h, pWakeup) \
2697 WD_FUNCTION(IOCTL_WDU_WAKEUP, h, pWakeup, sizeof(WDU_WAKEUP), FALSE);
2698 #define WD_USelectiveSuspend(h, pSelectiveSuspend) \
2699 WD_FUNCTION(IOCTL_WDU_SELECTIVE_SUSPEND, h, pSelectiveSuspend, \
2700 sizeof(WDU_SELECTIVE_SUSPEND), FALSE);
2701 #define WD_UResetDevice(h, pResetDevice) \
2702 WD_FUNCTION(IOCTL_WDU_RESET_DEVICE, h, pResetDevice, \
2703 sizeof(WDU_RESET_DEVICE), FALSE);
2704 #define WD_UStreamOpen(h, pStream) \
2705 WD_FUNCTION(IOCTL_WDU_STREAM_OPEN, h, pStream, sizeof(WDU_STREAM), FALSE);
2706 #define WD_UStreamClose(h, pStream) \
2707 WD_FUNCTION(IOCTL_WDU_STREAM_CLOSE, h, pStream, sizeof(WDU_STREAM), FALSE);
2708 #define WD_UStreamStart(h, pStream) \
2709 WD_FUNCTION(IOCTL_WDU_STREAM_START, h, pStream, sizeof(WDU_STREAM), FALSE);
2710 #define WD_UStreamStop(h, pStream) \
2711 WD_FUNCTION(IOCTL_WDU_STREAM_STOP, h, pStream, sizeof(WDU_STREAM), FALSE);
2712 #define WD_UStreamFlush(h, pStream) \
2713 WD_FUNCTION(IOCTL_WDU_STREAM_FLUSH, h, pStream, sizeof(WDU_STREAM), FALSE);
2714 #define WD_UStreamGetStatus(h, pStreamStatus) \
2715 WD_FUNCTION(IOCTL_WDU_STREAM_GET_STATUS, h, pStreamStatus, \
2716 sizeof(WDU_STREAM_STATUS), FALSE);
2718 #define __ALIGN_DOWN(val,alignment) ( (val) & ~((alignment) - 1) )
2719 #define __ALIGN_UP(val,alignment) \
2720 ( ((val) + (alignment) - 1) & ~((alignment) - 1) )
2727 #define MIN(a,b) ((a) > (b) ? (b) : (a))
2730 #define MAX(a,b) ((a) > (b) ? (a) : (b))
2732 #define SAFE_STRING(s) ((s) ? (s) : "")
2734 #define UNUSED_VAR(x) (void)x
@ ITEM_INTERRUPT
Interrupt.
struct WD_KERNEL_PLUGIN_CALL WD_KERNEL_PLUGIN_CALL_V40
struct WD_PCI_CARD_INFO WD_PCI_CARD_INFO_V118
@ WD_ITEM_MEM_DO_NOT_MAP_KERNEL
Skip the mapping of physical memory to the kernel address space.
@ WD_ITEM_MEM_ALLOW_CACHE
Map physical memory as cached; applicable only to host RAM, not to local memory on the card.
@ WD_ITEM_MEM_USER_MAP
Map physical memory from user mode, Linux only.
WD_GET_DEVICE_PROPERTY_OPTION
IOCTL Structures.
struct WD_ITEMS WD_ITEMS_V118
struct WD_DEBUG_ADD WD_DEBUG_ADD_V503
#define WD_VERSION_STR_LENGTH
struct WD_IPC_SCAN_PROCS WD_IPC_SCAN_PROCS_V121
struct WD_TRANSFER WD_TRANSFER_V61
struct WD_KERNEL_BUFFER WD_KERNEL_BUFFER_V121
@ KER_BUF_ALLOC_NON_CONTIG
@ KER_BUF_GET_EXISTING_BUF
struct WD_SLEEP WD_SLEEP_V40
#define WD_LICENSE_LENGTH
@ WD_INVALID_32BIT_APP
[0x20000021] Invalid 32 Bit User Application.
@ WD_TRY_AGAIN
[0x2000001d] Try Again.
@ WD_USBD_STATUS_DATA_TOGGLE_MISMATCH
[0xC0000003] HC status: Data toggle mismatch
@ WD_RESOURCE_OVERLAP
[0x2000000e] Resource Overlap.
@ WD_FAILED_KERNEL_MAPPING
[0x20000018] Failed to map memory to Kernel Space.
@ WD_WINDRIVER_STATUS_ERROR
[0x20000000]
@ WD_USBD_STATUS_UNEXPECTED_PID
[0xC0000007] HC status: Unexpected PID
@ WD_USBD_STATUS_REQUEST_FAILED
[0x80000500] Returned by USBD if it cannot complete a URB request.
@ WD_USBD_STATUS_INTERFACE_NOT_FOUND
[0xC0004000] USBD: Interface not found
@ WD_USBD_STATUS_INAVLID_CONFIGURATION_DESCRIPTOR
[0xC0000F00] USBD: Invalid configuration descriptor
@ WD_TOO_MANY_HANDLES
[0x20000022] Too Many Handles.
@ WD_USBD_STATUS_ISO_NOT_ACCESSED_LATE
[0xC0050000] The packet was not sent because the client submitted it too late to transmit:
@ WD_USBD_STATUS_INVALID_URB_FUNCTION
[0x80000200] USBD: Invalid URB function
@ WD_USBD_STATUS_NOT_ACCESSED
[0xC000000F] HC status: Not accessed
@ WD_INTERRUPT_NOT_ENABLED
[0x2000000d] Interrupt not enabled.
@ WD_USBD_STATUS_ERROR_BUSY
[0x80000400] Returned if client driver attempts to close an endpoint/interface or configuration with ...
@ WD_USBD_STATUS_XACT_ERROR
[0xC0000011] HC status: The host controller has set the Transaction Error (XactErr) bit in the transf...
@ WD_MORE_PROCESSING_REQUIRED
[0xC0000016] More Processing Required.
@ WD_UNKNOWN_PIPE_TYPE
[0x20000006] Obsolete.
@ WD_INVALID_HANDLE
[0x20000001] Invalid WinDriver handle.
@ WD_USBD_STATUS_DATA_UNDERRUN
[0xC0000009] HC status: Data underrrun
@ WD_OPERATION_FAILED
[0x20000020] Operation Failed.
@ WD_USB_DESCRIPTOR_ERROR
[0x20000012] USB Descriptor Error.
@ WD_USBD_STATUS_RESERVED1
[0xC000000A] HC status: Reserved1
@ WD_USBD_STATUS_RESERVED2
[0xC000000B] HC status: Reserved1
@ WD_USBD_STATUS_NOT_SUPPORTED
[0xC0000E00] Returned for APIS not supported/implemented
@ WD_USBD_STATUS_DEVICE_GONE
[0xC0007000] USBD: Device Gone
@ WD_USBD_STATUS_ISO_NOT_ACCESSED_BY_HW
Extended isochronous error codes returned by USBD.
@ WD_USBD_STATUS_DATA_BUFFER_ERROR
[0xC0000013] HC status: Data buffer error
@ WD_USBD_STATUS_ISO_TD_ERROR
[0xC0030000] Controller reported an error in the TD.
@ WD_USBD_STATUS_DEV_NOT_RESPONDING
[0xC0000005] HC status: Device not responding
@ WD_USBD_STATUS_FIFO
[0xC0000010] HC status: FIFO
@ WD_NO_LICENSE
0x[20000009] No License.
@ WD_INVALID_PARAMETER
[0x2000001b] Invalid Parameter.
@ WD_WRONG_UNIQUE_ID
[0x20000010] Wrong unique ID (USB).
@ WD_USBD_STATUS_INVALID_PARAMETER
[0x80000300] USBD: Invalid parameter
@ WD_USBD_STATUS_BAD_START_FRAME
[0x80000A00] Returned if the requested start frame is not within
@ WD_USBD_STATUS_SUCCESS
[0x00000000] Success
@ WD_USBD_STATUS_ERROR
[0x80000000] Error
@ WD_DATA_MISMATCH
[0x20000008] Data Mismatch.
@ WD_NO_RESOURCES_ON_DEVICE
[0x20000019] No Resources On Device.
@ WD_NO_EVENTS
[0x2000001a] No Events.
@ WD_USBD_STATUS_NO_BANDWIDTH
[0x80000700] Returned when there is not enough bandwidth available
@ WD_USBD_STATUS_BUFFER_UNDERRUN
[0xC000000D] HC status: Buffer underrun
@ WD_NOT_IMPLEMENTED
[0x2000000a] Function not implemented.
@ WD_READ_WRITE_CONFLICT
[0x20000003] Request to read from an OUT (write) pipe or request to write to an IN (read) pipe
@ WD_USBD_STATUS_FRAME_CONTROL_NOT_OWNED
[0xC0000D00] Returned by USBD if the caller does not own frame length control and attempts to release...
@ WD_DEVICE_NOT_FOUND
[0x2000000f] Device not found.
@ WD_NO_DEVICE_OBJECT
[0x20000023] No Device Object.
@ WD_USBD_STATUS_CANCELED
[0xC0010000] USBD: Transfer canceled
@ WD_INCORRECT_VERSION
[0x2000001c] Incorrect version.
@ WD_USBD_STATUS_PENDING
[0x40000000] Operation pending
@ WD_USBD_STATUS_TIMEOUT
[0xC0006000] USBD: Timeout
@ WD_USBD_STATUS_ISOCH_REQUEST_FAILED
[0xC0000B00] Returned by HCD (Host Controller Driver) if all packets in an isochronous transfer compl...
@ WD_FAILED_ENABLING_INTERRUPT
[0x2000000c] Failed Enabling Interrupts.
@ WD_KERPLUG_FAILURE
[0x2000000b] Kernel PlugIn failure.
@ WD_WINDRIVER_NOT_FOUND
[0x2000001e] Obsolete
@ WD_SET_CONFIGURATION_FAILED
[0x20000013] Set Configuration Failed (USB).
@ WD_USBD_STATUS_CRC
[0xC0000001] HC status: CRC
@ WD_USBD_STATUS_ENDPOINT_HALTED
Returned by HCD (Host Controller Driver) if a transfer is submitted to an endpoint that is stalled:
@ WD_USBD_STATUS_INTERNAL_HC_ERROR
[0x80000800] Generic HC (Host Controller) error:
@ WD_FAILED_USER_MAPPING
[0x20000017] Failed to map memory to User Space.
@ WD_USBD_STATUS_INVALID_PIPE_HANDLE
[80000600] USBD: Invalid pipe handle
@ WD_STATUS_SUCCESS
[0] Operation completed successfully
@ WD_USBD_STATUS_INAVLID_PIPE_FLAGS
[0xC0005000] USBD: Invalid pipe flags
@ WD_INVALID_IOCTL
[0x2000001f] Invalid IOCTL.
@ WD_TIME_OUT_EXPIRED
[0x20000015] Time Out Expired.
@ WD_SYSTEM_INTERNAL_ERROR
[0x20000007] Internal System Error
@ WD_USBD_STATUS_BUFFER_TOO_SMALL
[0xC0003000] USBD: Buffer too small
@ WD_USBD_STATUS_INSUFFICIENT_RESOURCES
[0xC0001000] USBD: Insufficient resources
@ WD_USBD_STATUS_DATA_OVERRUN
[0xC0000008] HC status: Data overrun
@ WD_ZERO_PACKET_SIZE
[0x20000004] Maximum packet size is zero
@ WD_USBD_STATUS_ERROR_SHORT_TRANSFER
[0x80000900] Returned when a short packet terminates the transfer
@ WD_USBD_STATUS_STALL_PID
[0xC0000004] HC status: PID stall
@ WD_USBD_STATUS_PID_CHECK_FAILURE
[0xC0000006] HC status: PID check failed
@ WD_USBD_STATUS_ISO_NA_LATE_USBPORT
[0xC0040000] The packet was submitted in time by the client but
@ WD_CANT_OBTAIN_PDO
[0x20000014] Obsolete
@ WD_USBD_STATUS_BABBLE_DETECTED
[0xC0000012] HC status: Babble detected
@ WD_USBD_STATUS_HALTED
[0xC0000000] Halted
@ WD_INSUFFICIENT_RESOURCES
[0x20000005] Insufficient resources.
@ WD_USBD_STATUS_FRAME_CONTROL_OWNED
[0xC0000C00] Returned by USBD if the frame length control for a given
@ WD_USBD_STATUS_BTSTUFF
[0xC0000002] HC status: Bit stuffing
@ WD_USBD_STATUS_BUFFER_OVERRUN
[0xC000000C] HC status: Buffer overrun
@ WD_USBD_STATUS_SET_CONFIG_FAILED
[0xC0002000] USBD: Set configuration failed
@ WD_IRP_CANCELED
[0x20000016] IRP Cancelled.
@ WD_INVALID_PIPE_NUMBER
[0x20000002] USB: Invalid Pipe Number.
@ WD_OPERATION_ALREADY_DONE
[0x20000011] Operation Already Done.
@ WD_USBD_STATUS_STATUS_NOT_MAPPED
[0xC0008000] USBD: Status not mapped
@ WD_STATUS_INVALID_WD_HANDLE
[0xffffffff]
@ WD_USBD_STATUS_NO_MEMORY
[0x80000100] USBD: Out of memory
struct WD_VERSION WD_VERSION_V30
struct WD_LICENSE WD_LICENSE_V122
@ WD_PCI_SCAN_BY_TOPOLOGY
@ WD_PCI_SCAN_INCLUDE_DOMAINS
WD_TRANSFER_CMD
IN WD_TRANSFER_CMD and WD_Transfer() DWORD stands for 32 bits and QWORD is 64 bit.
@ WM_SWORD
Write memory string word.
@ WM_SBYTE
Write memory string byte.
@ RP_SDWORD
Read port string dword.
@ WM_BYTE
Write memory byte.
@ WM_SQWORD
Write memory string quad word.
@ RM_DWORD
Read memory dword.
@ WP_DWORD
Write port dword.
@ WM_SDWORD
Write memory string dword.
@ RM_WORD
Read memory word.
@ RM_SBYTE
Read memory string byte.
@ WP_SQWORD
Write port string qword.
@ RM_BYTE
Read memory byte.
@ WP_SBYTE
Write port string byte.
@ WP_SWORD
Write port string word.
@ RM_SWORD
Read memory string word.
@ CMD_MASK
Interrupt Mask.
@ WM_DWORD
Write memory dword.
@ RP_DWORD
Read port dword.
@ WP_BYTE
Write port byte.
@ RP_QWORD
Read port qword.
@ WM_QWORD
Write memory qword.
@ RM_SDWORD
Read memory string dword.
@ RM_QWORD
Read memory qword.
@ WP_WORD
Write port word.
@ WP_SDWORD
Write port string dword.
@ RM_SQWORD
Read memory string quad word.
@ RP_SWORD
Read port string word.
@ WM_WORD
Write memory word.
@ RP_SBYTE
Read port string byte.
@ WP_QWORD
Write port qword.
@ RP_SQWORD
Read port string qword.
#define INVALID_HANDLE_VALUE
#define WD_MAX_KP_NAME_LENGTH
@ WD_IPC_SUBGROUP_MULTICAST
@ WD_ACCEPT_CONTROL
used in WD_EVENT_SEND (acknowledge)
@ WD_PCI_SCAN_CAPS_BASIC
Scan basic PCI capabilities.
@ WD_PCI_SCAN_CAPS_EXTENDED
Scan extended (PCIe) PCI capabilities.
struct WD_DEBUG WD_DEBUG_V40
struct WD_DEBUG_DUMP WD_DEBUG_DUMP_V40
@ INTERRUPT_MESSAGE
Message-Signaled Interrupts (MSI).
@ INTERRUPT_CMD_RETURN_VALUE
Obsolete.
@ INTERRUPT_LATCHED
Legacy Latched Interrupts .
@ INTERRUPT_MESSAGE_X
Extended Message-Signaled Interrupts (MSI-X).
@ INTERRUPT_CMD_COPY
Copy any data read in the kernel as a result of a read transfer command, and return it to the user wi...
@ INTERRUPT_LEVEL_SENSITIVE
Legacy Level Sensitive Interrupts.
@ INTERRUPT_CE_INT_ID
Obsolete.
@ INTERRUPT_DONT_GET_MSI_MESSAGE
Linux Only.
struct WD_PCI_SCAN_CAPS WD_PCI_SCAN_CAPS_V118
struct WD_DMA_PAGE WD_DMA_PAGE_V80
struct WD_EVENT WD_EVENT_V121
struct WD_IPC_REGISTER WD_IPC_REGISTER_V121
struct WD_KERNEL_PLUGIN WD_KERNEL_PLUGIN_V40
DWORD DLLCALLCONV check_secureBoot_enabled(void)
Checks whether the Secure Boot feature is enabled on the system.
void(DLLCALLCONV * DMA_TRANSACTION_CALLBACK)(PVOID pData)
struct WD_PCI_SRIOV WD_PCI_SRIOV_V122
struct WD_IPC_SEND WD_IPC_SEND_V121
#define WD_PROCESS_NAME_LENGTH
@ WD_BUS_EISA
EISA, including ISA PnP.
@ WD_BUS_UNKNOWN
Unknown bus type.
const char *DLLCALLCONV WD_DriverName(const char *sName)
Sets the name of the WinDriver kernel module, which will be used by the calling application.
@ WD_POWER_SYSTEM_WORKING
@ WD_POWER_SYSTEM_SLEEPING3
@ WD_POWER_SYSTEM_HIBERNATE
@ WD_POWER_CHANGED_D0
Power states for the power management.
@ WD_POWER_SYSTEM_SLEEPING2
@ WD_POWER_SYSTEM_SHUTDOWN
@ WD_POWER_SYSTEM_SLEEPING1
struct WD_PCI_SCAN_CARDS WD_PCI_SCAN_CARDS_V124
@ DMA_KERNEL_BUFFER_ALLOC
The system allocates a contiguous buffer.
@ DMA_DISABLE_MERGE_ADJACENT_PAGES
Disable merge adjacent pages.
@ DMA_TRANSACTION
Use this flag to use the DMA transaction mechanism.
@ DMA_TO_DEVICE
memory pages are locked to be read by device
@ DMA_KBUF_BELOW_16M
If DMA_KERNEL_BUFFER_ALLOC is used, this will make sure it is under 16M.
@ DMA_ALLOW_NO_HCARD
Allow memory lock without hCard.
@ DMA_FROM_DEVICE
memory pages are locked to be written by device
@ DMA_GET_PREALLOCATED_BUFFERS_ONLY
Windows: Try to allocate buffers from preallocated buffers pool ONLY (if none of them are available,...
@ DMA_GET_EXISTING_BUF
Get existing buffer by hDma handle.
@ DMA_ALLOW_64BIT_ADDRESS
Use this value for devices that support 64-bit DMA addressing.
@ DMA_TO_FROM_DEVICE
memory pages are locked for both read and write
@ DMA_LARGE_BUFFER
If DMA_LARGE_BUFFER is used, the maximum number of pages are dwPages, and not WD_DMA_PAGES.
@ DMA_GPUDIRECT
Linux only.
@ DMA_ALLOW_CACHE
Allow caching of contiguous memory.
@ DMA_KERNEL_ONLY_MAP
Only map to kernel, dont map to user-mode.
@ DMA_KBUF_ALLOC_SPECIFY_ADDRESS_WIDTH
When using this flag, the width of the address must be entered in the fourth byte of dwOptions and th...
@ WD_MATCH_EXCLUDE
Exclude if there is a match.
#define DEBUG_USER_BUF_LEN
struct WD_CARD_REGISTER WD_CARD_REGISTER_V118
@ INTERRUPT_INTERRUPTED
Wait was interrupted before an actual hardware interrupt was received.
@ INTERRUPT_RECEIVED
Interrupt was received.
@ INTERRUPT_STOPPED
Interrupt was disabled during wait.
struct WD_IPC_PROCESS WD_IPC_PROCESS_V121
WD_OS_INFO DLLCALLCONV get_os_type(void)
Retrieves the type of the operating system in section.