AJA NTV2 SDK  17.5.0.1492
NTV2 SDK 17.5.0.1492
ntv2windriverinterface.cpp
Go to the documentation of this file.
1 /* SPDX-License-Identifier: MIT */
10 #include "ntv2publicinterface.h"
11 #include "ntv2nubtypes.h"
12 #include "ntv2debug.h"
13 #include "winioctl.h"
14 #include "ajabase/system/debug.h"
15 #include <sstream>
16 
17 using namespace std;
18 
19 #ifdef _AJA_COMPILE_WIN2K_SOFT_LINK
20 typedef WINSETUPAPI
21 HDEVINFO
22 (WINAPI *
23 pfcnSetupDiGetClassDevsA)(
24  IN CONST GUID *ClassGuid, OPTIONAL
25  IN PCSTR Enumerator, OPTIONAL
26  IN HWND hwndParent, OPTIONAL
27  IN DWORD Flags
28  );
29 
30 typedef WINSETUPAPI
31 HDEVINFO
32 (WINAPI *
33 pfcnSetupDiGetClassDevsW)(
34  IN CONST GUID *ClassGuid, OPTIONAL
35  IN PCWSTR Enumerator, OPTIONAL
36  IN HWND hwndParent, OPTIONAL
37  IN DWORD Flags
38  );
39 #ifdef UNICODE
40 #define pfcnSetupDiGetClassDevs pfcnSetupDiGetClassDevsW
41 #else
42 #define pfcnSetupDiGetClassDevs pfcnSetupDiGetClassDevsA
43 #endif
44 
45 typedef WINSETUPAPI
46 BOOL
47 (WINAPI *
48 pfcnSetupDiEnumDeviceInterfaces)(
49  IN HDEVINFO DeviceInfoSet,
50  IN PSP_DEVINFO_DATA DeviceInfoData, OPTIONAL
51  IN CONST GUID *InterfaceClassGuid,
52  IN DWORD MemberIndex,
53  OUT PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData
54  );
55 
56 
57 typedef WINSETUPAPI
58 BOOL
59 (WINAPI *
60 pfcnSetupDiGetDeviceInterfaceDetailA)(
61  IN HDEVINFO DeviceInfoSet,
62  IN PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData,
63  OUT PSP_DEVICE_INTERFACE_DETAIL_DATA_A DeviceInterfaceDetailData, OPTIONAL
64  IN DWORD DeviceInterfaceDetailDataSize,
65  OUT PDWORD RequiredSize, OPTIONAL
66  OUT PSP_DEVINFO_DATA DeviceInfoData OPTIONAL
67  );
68 
69 typedef WINSETUPAPI
70 BOOL
71 (WINAPI *
72 pfcnSetupDiGetDeviceInterfaceDetailW)(
73  IN HDEVINFO DeviceInfoSet,
74  IN PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData,
75  OUT PSP_DEVICE_INTERFACE_DETAIL_DATA_W DeviceInterfaceDetailData, OPTIONAL
76  IN DWORD DeviceInterfaceDetailDataSize,
77  OUT PDWORD RequiredSize, OPTIONAL
78  OUT PSP_DEVINFO_DATA DeviceInfoData OPTIONAL
79  );
80 #ifdef UNICODE
81 #define pfcnSetupDiGetDeviceInterfaceDetail pfcnSetupDiGetDeviceInterfaceDetailW
82 #else
83 #define pfcnSetupDiGetDeviceInterfaceDetail pfcnSetupDiGetDeviceInterfaceDetailA
84 #endif
85 
86 typedef WINSETUPAPI
87 BOOL
88 (WINAPI *
89  pfcnSetupDiDestroyDeviceInfoList)(
90  IN HDEVINFO DeviceInfoSet
91  );
92 
93 typedef WINSETUPAPI
94 BOOL
95 (WINAPI *
96  pfcnSetupDiDestroyDriverInfoList)(
97  IN HDEVINFO DeviceInfoSet,
98  IN PSP_DEVINFO_DATA DeviceInfoData, OPTIONAL
99  IN DWORD DriverType
100  );
101 
102 static pfcnSetupDiGetClassDevs pSetupDiGetClassDevs = NULL;
103 static pfcnSetupDiEnumDeviceInterfaces pSetupDiEnumDeviceInterfaces = NULL;
104 static pfcnSetupDiGetDeviceInterfaceDetail pSetupDiGetDeviceInterfaceDetail = NULL;
105 static pfcnSetupDiDestroyDeviceInfoList pSetupDiDestroyDeviceInfoList = NULL;
106 static pfcnSetupDiDestroyDriverInfoList pSetupDiDestroyDriverInfoList = NULL;
107 
108 HINSTANCE hSetupAPI = NULL;
109 
110 #endif
111 
112 static std::string GetKernErrStr (const DWORD inError)
113 {
114  LPVOID lpMsgBuf(NULL);
115  FormatMessage ( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
116  NULL,
117  inError,
118  MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
119  (LPTSTR) &lpMsgBuf,
120  0,
121  NULL);
122  string result (lpMsgBuf ? reinterpret_cast<const char*>(lpMsgBuf) : "");
123  LocalFree (lpMsgBuf);
124 // Truncate at <CR><LF>...
125  const size_t crPos(result.find(".\r"));
126  if (crPos != string::npos)
127  result.resize(crPos);
128  return result;
129 }
130 
131 
132 // WinDriverInterface Logging Macros
133 #define HEX2(__x__) "0x" << hex << setw(2) << setfill('0') << (0xFF & uint8_t (__x__)) << dec
134 #define HEX4(__x__) "0x" << hex << setw(4) << setfill('0') << (0xFFFF & uint16_t(__x__)) << dec
135 #define HEX8(__x__) "0x" << hex << setw(8) << setfill('0') << (0xFFFFFFFF & uint32_t(__x__)) << dec
136 #define HEX16(__x__) "0x" << hex << setw(16) << setfill('0') << uint64_t(__x__) << dec
137 #define KR(_kr_) "kernResult=" << HEX8(_kr_) << "(" << GetKernErrStr(_kr_) << ")"
138 #define INSTP(_p_) HEX16(uint64_t(_p_))
139 
140 #define WDIFAIL(__x__) AJA_sERROR (AJA_DebugUnit_DriverInterface, INSTP(this) << "::" << AJAFUNC << ": " << __x__)
141 #define WDIWARN(__x__) AJA_sWARNING(AJA_DebugUnit_DriverInterface, INSTP(this) << "::" << AJAFUNC << ": " << __x__)
142 #define WDINOTE(__x__) AJA_sNOTICE (AJA_DebugUnit_DriverInterface, INSTP(this) << "::" << AJAFUNC << ": " << __x__)
143 #define WDIINFO(__x__) AJA_sINFO (AJA_DebugUnit_DriverInterface, INSTP(this) << "::" << AJAFUNC << ": " << __x__)
144 #define WDIDBG(__x__) AJA_sDEBUG (AJA_DebugUnit_DriverInterface, INSTP(this) << "::" << AJAFUNC << ": " << __x__)
145 
146 
148  : _pspDevIFaceDetailData (AJA_NULL)
149  ,_hDevInfoSet (INVALID_HANDLE_VALUE)
150  ,_hDevice (INVALID_HANDLE_VALUE)
151  ,_previousAudioState (0)
152  ,_previousAudioSelection (0)
153 #if !defined(NTV2_DEPRECATE_16_0)
154  ,_vecDmaLocked ()
155 #endif // !defined(NTV2_DEPRECATE_16_0)
156 {
157  ::memset(&_spDevInfoData, 0, sizeof(_spDevInfoData));
158  ::memset(&_GUID_PROPSET, 0, sizeof(_GUID_PROPSET));
159 }
160 
162 {
163  if (IsOpen())
164  Close();
165 }
166 
167 
168 #if !defined(NTV2_NULL_DEVICE)
169 // Board Open / Close methods
172 
174 {
175  NTV2_ASSERT(!IsRemote());
176  NTV2_ASSERT(!IsOpen());
178  string boardStr;
179 
180  {
181  DEFINE_GUIDSTRUCT("844B39E5-C98E-45a1-84DE-3BAF3F4F9F14", AJAVIDEO_NTV2_PROPSET);
182 #define AJAVIDEO_NTV2_PROPSET DEFINE_GUIDNAMED(AJAVIDEO_NTV2_PROPSET)
184  }
185 
186  REFGUID refguid = _GUID_PROPSET;
187  _boardNumber = inDeviceIndex;
188 
189  DWORD dwShareMode (GetShareMode() ? FILE_SHARE_READ | FILE_SHARE_WRITE : 0);
190  DWORD dwFlagsAndAttributes = FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED;
191  DWORD dwReqSize=0;
192  SP_DEVICE_INTERFACE_DATA spDevIFaceData;
193  memset(&spDevIFaceData, 0, sizeof(SP_DEVICE_INTERFACE_DATA));
194  GUID myguid = refguid; // an un-const guid for compiling with new Platform SDK!
195  _hDevInfoSet = SetupDiGetClassDevs(&myguid, NULL, NULL, DIGCF_PRESENT | DIGCF_DEVICEINTERFACE);
197  return false;
198  spDevIFaceData.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA);
199  myguid = refguid;
200  if (!SetupDiEnumDeviceInterfaces(_hDevInfoSet, NULL, &myguid, _boardNumber, &spDevIFaceData))
201  {
202  SetupDiDestroyDeviceInfoList(_hDevInfoSet);
203  return false;
204  }
205 
206  if (SetupDiGetDeviceInterfaceDetail(_hDevInfoSet, &spDevIFaceData, NULL, 0, &dwReqSize, NULL))
207  {
208  SetupDiDestroyDeviceInfoList(_hDevInfoSet);
209  return false; //should have failed!
210  }
211  if (GetLastError() != ERROR_INSUFFICIENT_BUFFER)
212  {
213  SetupDiDestroyDeviceInfoList(_hDevInfoSet);
214  return false;
215  }
216  _pspDevIFaceDetailData = PSP_DEVICE_INTERFACE_DETAIL_DATA(new BYTE[dwReqSize]);
218  {
219  SetupDiDestroyDeviceInfoList(_hDevInfoSet);
220  return false; // out of memory
221  }
222 
223  memset(&_spDevInfoData, 0, sizeof(SP_DEVINFO_DATA));
224  _spDevInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
225  _pspDevIFaceDetailData->cbSize = sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA);
226  //now we are setup to get the info we want!
227  if (!SetupDiGetDeviceInterfaceDetail(_hDevInfoSet, &spDevIFaceData, _pspDevIFaceDetailData, dwReqSize, NULL, &_spDevInfoData))
228  {
229  delete [] _pspDevIFaceDetailData;
231  SetupDiDestroyDeviceInfoList(_hDevInfoSet);
232  return false; // out of memory
233  }
234 
235  ULONG deviceInstanceSize = 0;
236  CM_Get_Device_ID_Size(&deviceInstanceSize, _spDevInfoData.DevInst, 0);
237  char* deviceInstance = (char*)new BYTE[deviceInstanceSize*2];
238  CM_Get_Device_IDA(_spDevInfoData.DevInst, deviceInstance, deviceInstanceSize*2, 0);
239  boardStr = deviceInstance;
240  delete [] deviceInstance;
241 
242  _hDevice = CreateFile(_pspDevIFaceDetailData->DevicePath, GENERIC_READ | GENERIC_WRITE, dwShareMode, NULL, OPEN_EXISTING, dwFlagsAndAttributes, NULL);
244  {
245  WDIFAIL("CreateFile failed for '" << boardStr << "'");
246  delete [] _pspDevIFaceDetailData;
248  SetupDiDestroyDeviceInfoList(_hDevInfoSet);
249  _hDevInfoSet = NULL;
250  return false;
251  }
252 
253  _boardOpened = true;
255 
256  WDIINFO ("Opened '" << boardStr << "' deviceID=" << HEX8(_boardID) << " deviceIndex=" << DEC(_boardNumber));
257  return true;
258 } // OpenLocalPhysical
259 
260 
261 
263 {
264  NTV2_ASSERT(!IsRemote());
265  NTV2_ASSERT(IsOpen());
268  {
269  delete [] _pspDevIFaceDetailData;
271  }
272  if (_hDevInfoSet)
273  {
274 #ifndef _AJA_COMPILE_WIN2K_SOFT_LINK
275  SetupDiDestroyDeviceInfoList(_hDevInfoSet);
276 #else
277  if (pSetupDiDestroyDeviceInfoList)
278  pSetupDiDestroyDeviceInfoList(_hDevInfoSet);
279 #endif
281  }
282 
284  CloseHandle(_hDevice);
285  WDIINFO ("Closed deviceID=" << HEX8(_boardID) << " deviceIndex=" << DEC(_boardNumber));
286 
288  _boardOpened = false;
289  return true;
290 }
291 #endif // !defined(NTV2_NULL_DEVICE)
292 
293 
294 
296 // Read and Write Register methods
298 
299 bool CNTV2WinDriverInterface::ReadRegister (const ULWord inRegNum, ULWord & outValue, const ULWord inMask, const ULWord inShift)
300 {
301  if (inShift >= 32)
302  {
303  WDIFAIL("Shift " << DEC(inShift) << " > 31, reg=" << DEC(inRegNum) << " msk=" << xHEX0N(inMask,8));
304  return false;
305  }
306 #if defined(NTV2_NUB_CLIENT_SUPPORT)
307  if (IsRemote())
308  return CNTV2DriverInterface::ReadRegister (inRegNum, outValue, inMask, inShift);
309 #endif // defined(NTV2_NUB_CLIENT_SUPPORT)
310  if (!IsOpen())
311  return false;
312 
314 
316  DWORD dwBytesReturned = 0;
317  ZeroMemory(&propStruct, sizeof(KSPROPERTY_AJAPROPS_GETSETREGISTER_S));
318  propStruct.Property.Set = _GUID_PROPSET;
320  propStruct.Property.Flags = KSPROPERTY_TYPE_GET;
321  propStruct.RegisterID = inRegNum;
322  propStruct.ulRegisterMask = inMask;
323  propStruct.ulRegisterShift = inShift;
325  const bool ok = DeviceIoControl(_hDevice, IOCTL_AJAPROPS_GETSETREGISTER, &propStruct, sizeof(KSPROPERTY_AJAPROPS_GETSETREGISTER_S),
326  &propStruct, sizeof(KSPROPERTY_AJAPROPS_GETSETREGISTER_S), &dwBytesReturned, NULL);
328  if (ok)
329  {
330  outValue = propStruct.ulRegisterValue;
331  return true;
332  }
333  WDIFAIL("reg=" << DEC(inRegNum) << " val=" << xHEX0N(outValue,8) << " msk=" << xHEX0N(inMask,8) << " shf=" << DEC(inShift) << " failed: " << ::GetKernErrStr(GetLastError()));
334  return false;
335 }
336 
337 
338 bool CNTV2WinDriverInterface::WriteRegister (const ULWord inRegNum, const ULWord inValue, const ULWord inMask, const ULWord inShift)
339 {
340  if (inShift >= 32)
341  {
342  WDIFAIL("Shift " << DEC(inShift) << " > 31, reg=" << DEC(inRegNum) << " msk=" << xHEX0N(inMask,8));
343  return false;
344  }
345 #if defined(NTV2_WRITEREG_PROFILING) // Register Write Profiling
346  if (mRecordRegWrites)
347  {
348  AJAAutoLock autoLock(&mRegWritesLock);
349  mRegWrites.push_back(NTV2RegInfo(inRegNum, inValue, inMask, inShift));
350  if (mSkipRegWrites)
351  return true;
352  }
353 #endif // defined(NTV2_WRITEREG_PROFILING) // Register Write Profiling
354 #if defined(NTV2_NUB_CLIENT_SUPPORT)
355  if (IsRemote())
356  return CNTV2DriverInterface::WriteRegister(inRegNum, inValue, inMask, inShift);
357 #endif // defined(NTV2_NUB_CLIENT_SUPPORT)
358  if (!IsOpen())
359  return false;
361  DWORD dwBytesReturned = 0;
362  NTV2_ASSERT(inShift < 32);
363 
364  ZeroMemory(&propStruct,sizeof(KSPROPERTY_AJAPROPS_GETSETREGISTER_S));
365  propStruct.Property.Set = _GUID_PROPSET;
367  propStruct.Property.Flags = KSPROPERTY_TYPE_SET;
368  propStruct.RegisterID = inRegNum;
369  propStruct.ulRegisterValue = inValue;
370  propStruct.ulRegisterMask = inMask;
371  propStruct.ulRegisterShift = inShift;
373  const bool ok = DeviceIoControl(_hDevice, IOCTL_AJAPROPS_GETSETREGISTER, &propStruct, sizeof(KSPROPERTY_AJAPROPS_GETSETREGISTER_S),
374  &propStruct, sizeof(KSPROPERTY_AJAPROPS_GETSETREGISTER_S), &dwBytesReturned, NULL);
376  if (!ok)
377  {
378  WDIFAIL("reg=" << DEC(inRegNum) << " val=" << xHEX0N(inValue,8) << " msk=" << xHEX0N(inMask,8) << " shf=" << DEC(inShift) << " failed: " << ::GetKernErrStr(GetLastError()));
379  return false;
380  }
381  return true;
382 }
383 
385 // Interrupt enabling / disabling method
387 
388 // Method: ConfigureInterrupt
389 // Input: bool bEnable (turn on/off interrupt), INTERRUPT_ENUMS eInterruptType
390 // Output: bool status
391 // Purpose: Provides a 1 point connection to driver for interrupt calls
392 bool CNTV2WinDriverInterface::ConfigureInterrupt (const bool bEnable, const INTERRUPT_ENUMS eInterruptType)
393 {
394  if (IsRemote())
395  return false;
396  if (!IsOpen())
397  return false;
398  KSPROPERTY_AJAPROPS_INTERRUPTS_S propStruct; // boilerplate AVStream Property structure
399  DWORD dwBytesReturned = 0;
400  ZeroMemory (&propStruct,sizeof(KSPROPERTY_AJAPROPS_INTERRUPTS_S));
401  propStruct.Property.Set = _GUID_PROPSET;
403  propStruct.Property.Flags = bEnable ? KSPROPERTY_TYPE_GET : KSPROPERTY_TYPE_SET;
404  propStruct.eInterrupt = eInterruptType;
405 
406  if (!DeviceIoControl (_hDevice, IOCTL_AJAPROPS_INTERRUPTS, &propStruct, sizeof(KSPROPERTY_AJAPROPS_INTERRUPTS_S),
407  &propStruct, sizeof(KSPROPERTY_AJAPROPS_INTERRUPTS_S), &dwBytesReturned, NULL))
408  {
409  WDIFAIL("interruptType=" << DEC(eInterruptType) << " enable=" << (bEnable?"Y":"N") << " failed: " << ::GetKernErrStr(GetLastError()));
410  return false;
411  }
412  return true;
413 }
414 
415 // Method: ConfigureSubscriptions
416 // Input: bool bSubscribe (true if subscribing), INTERRUPT_ENUMS eInterruptType,
417 // HANDLE & hSubcription
418 // Output: HANDLE & hSubcription (if subscribing)
419 // Notes: collects all driver calls for subscriptions in one place
420 bool CNTV2WinDriverInterface::ConfigureSubscription (const bool bSubscribe, const INTERRUPT_ENUMS eInterruptType, PULWord & outSubscriptionHdl)
421 {
422  if (!IsOpen() && !IsRemote())
423  return false;
424  bool res(CNTV2DriverInterface::ConfigureSubscription (bSubscribe, eInterruptType, outSubscriptionHdl));
425  if (IsRemote())
426  return res;
427  // Check for previouse call to subscribe
428  if (bSubscribe && outSubscriptionHdl)
429  return true; // Already subscribed
430 
431  // Check for valid handle to unsubscribe
432  if (!bSubscribe && !outSubscriptionHdl)
433  return true; // Already unsubscribed
434 
435  // Assure that the avCard has been properly opened
436  HANDLE hSubscription = bSubscribe ? CreateEvent (NULL, FALSE, FALSE, NULL) : HANDLE(outSubscriptionHdl);
438  DWORD dwBytesReturned = 0;
439 
440  ZeroMemory (&propStruct,sizeof(KSPROPERTY_AJAPROPS_NEWSUBSCRIPTIONS_S));
441  propStruct.Property.Set = _GUID_PROPSET;
443  propStruct.Property.Flags = bSubscribe ? KSPROPERTY_TYPE_GET : KSPROPERTY_TYPE_SET;
444  propStruct.Handle = hSubscription;
445  propStruct.eInterrupt = eInterruptType;
446 
447  BOOL bRet = DeviceIoControl (_hDevice, IOCTL_AJAPROPS_NEWSUBSCRIPTIONS, &propStruct, sizeof(KSPROPERTY_AJAPROPS_NEWSUBSCRIPTIONS_S),
448  &propStruct, sizeof(KSPROPERTY_AJAPROPS_NEWSUBSCRIPTIONS_S), &dwBytesReturned, NULL);
449  if ((!bSubscribe && bRet) || (bSubscribe && !bRet))
450  {
451  CloseHandle(hSubscription);
452  outSubscriptionHdl = 0;
453  }
454 
455  if (!bRet)
456  {
457  WDIFAIL("interruptType=" << DEC(eInterruptType) << " subscribe=" << (bSubscribe?"Y":"N") << " failed: " << ::GetKernErrStr(GetLastError()));
458  return false;
459  }
460  if (bSubscribe)
461  outSubscriptionHdl = PULWord(hSubscription);
462  return true;
463 }
464 
465 // Method: getInterruptCount
466 // Input: NONE
467 // Output: ULONG or equivalent(i.e. ULWord).
469 {
470 #if defined(NTV2_NUB_CLIENT_SUPPORT)
471  if (IsRemote())
472  return false;
473 #endif // defined(NTV2_NUB_CLIENT_SUPPORT)
474  if (!IsOpen())
475  return false;
477  DWORD dwBytesReturned = 0;
478  ZeroMemory (&propStruct,sizeof(KSPROPERTY_AJAPROPS_NEWSUBSCRIPTIONS_S));
479  propStruct.Property.Set = _GUID_PROPSET;
481  propStruct.Property.Flags = KSPROPERTY_TYPE_GET;
482  propStruct.eInterrupt = eGetIntCount;
483  propStruct.ulIntCount = ULONG(eInterruptType);
485  const bool ok = DeviceIoControl (_hDevice, IOCTL_AJAPROPS_NEWSUBSCRIPTIONS, &propStruct, sizeof(KSPROPERTY_AJAPROPS_NEWSUBSCRIPTIONS_S),
486  &propStruct, sizeof(KSPROPERTY_AJAPROPS_NEWSUBSCRIPTIONS_S), &dwBytesReturned, NULL);
488  if (!ok)
489  {
490  WDIFAIL("interruptType=" << DEC(eInterruptType) << " failed: " << ::GetKernErrStr(GetLastError()));
491  return false;
492  }
493  outCount = propStruct.ulIntCount;
494  return true;
495 }
496 
497 static const uint32_t sIntEnumToStatKeys[] = { AJA_DebugStat_WaitForInterruptOut1, // eOutput1 // 0
499  AJA_DebugStat_WaitForInterruptIn1, // eInput1 // 2
500  AJA_DebugStat_WaitForInterruptIn2, // eInput2 // 3
502  AJA_DebugStat_WaitForInterruptUartTx1, // eUart1Tx // 14
503  AJA_DebugStat_WaitForInterruptUartRx1, // eUart1Rx // 15
505  AJA_DebugStat_WaitForInterruptIn3, // eInput3 // 24
506  AJA_DebugStat_WaitForInterruptIn4, // eInput4 // 25
507  AJA_DebugStat_WaitForInterruptUartTx2, // eUartTx2 // 26
508  AJA_DebugStat_WaitForInterruptUartRx2, // eUartRx2 // 27
510  AJA_DebugStat_WaitForInterruptIn5, // eInput5 // 29
511  AJA_DebugStat_WaitForInterruptIn6, // eInput6 // 30
512  AJA_DebugStat_WaitForInterruptIn7, // eInput7 // 31
513  AJA_DebugStat_WaitForInterruptIn8, // eInput8 // 32
515 
516 bool CNTV2WinDriverInterface::WaitForInterrupt (const INTERRUPT_ENUMS eInterruptType, const ULWord timeOutMs)
517 {
518 #if defined(NTV2_NUB_CLIENT_SUPPORT)
519  if (IsRemote())
520  return CNTV2DriverInterface::WaitForInterrupt(eInterruptType,timeOutMs);
521 #endif // defined(NTV2_NUB_CLIENT_SUPPORT)
522  if (!IsOpen())
523  return false;
524  if (!NTV2_IS_VALID_INTERRUPT_ENUM(eInterruptType))
525  return false;
526  bool bInterruptHappened = false; // return value
527 
528  HANDLE hEvent (GetInterruptEvent(eInterruptType));
529  if (NULL == hEvent)
530  {
531  // no interrupt hooked up so just use Sleep function
532  Sleep (timeOutMs);
533  }
534  else
535  {
536  // interrupt hooked up. Wait
538  DWORD status = WaitForSingleObject(hEvent, timeOutMs);
540  if ( status == WAIT_OBJECT_0 )
541  {
542  bInterruptHappened = true;
543  BumpEventCount (eInterruptType);
544  }
545  else
546  {
547  ;//MessageBox (0, "WaitForInterrupt timed out", "CNTV2WinDriverInterface", MB_ICONERROR | MB_OK);
548  }
549  }
550  return bInterruptHappened;
551 }
552 
554 // OEM Mapping to Userspace Methods
556 
557 #if !defined(NTV2_DEPRECATE_16_0)
558  // Method: MapFrameBuffers
560  {
561  if (IsRemote())
562  return false;
563  if (!IsOpen())
564  return false;
566  DWORD dwBytesReturned = 0;
567  _pFrameBaseAddress = 0;
569  ZeroMemory (&propStruct,sizeof(KSPROPERTY_AJAPROPS_MAPMEMORY_S));
570  propStruct.Property.Set = _GUID_PROPSET;
571  propStruct.Property.Id = KSPROPERTY_AJAPROPS_MAPMEMORY;
572  propStruct.Property.Flags = KSPROPERTY_TYPE_GET;
574 
575  if (!DeviceIoControl(_hDevice, IOCTL_AJAPROPS_MAPMEMORY, &propStruct, sizeof(KSPROPERTY_AJAPROPS_MAPMEMORY_S),
576  &propStruct, sizeof(KSPROPERTY_AJAPROPS_MAPMEMORY_S), &dwBytesReturned, NULL))
577  {
578  WDIFAIL("failed: " << ::GetKernErrStr(GetLastError()));
579  return false;
580  }
581  ULWord boardIDRegister;
582  ReadRegister(kRegBoardID, boardIDRegister); //unfortunately GetBoardID is in ntv2card...ooops.
583  _pFrameBaseAddress = (ULWord *) propStruct.mapMemory.Address;
586  return true;
587  }
588 
589  // Method: UnmapFrameBuffers
591  {
592  if (IsRemote())
593  return false;
594  if (!IsOpen())
595  return false;
596  ULWord boardIDRegister;
597  ReadRegister(kRegBoardID, boardIDRegister); //unfortunately GetBoardID is in ntv2card...ooops.
598  ULWord * pFrameBaseAddress;
599  pFrameBaseAddress = _pFrameBaseAddress;
600  if (!pFrameBaseAddress)
601  return true;
602 
604  DWORD dwBytesReturned = 0;
605  ZeroMemory (&propStruct,sizeof(KSPROPERTY_AJAPROPS_MAPMEMORY_S));
606  propStruct.Property.Set = _GUID_PROPSET;
607  propStruct.Property.Id = KSPROPERTY_AJAPROPS_MAPMEMORY;
608  propStruct.Property.Flags = KSPROPERTY_TYPE_SET;
610  propStruct.mapMemory.Address = pFrameBaseAddress;
611  BOOL fRet = DeviceIoControl (_hDevice, IOCTL_AJAPROPS_MAPMEMORY, &propStruct, sizeof(KSPROPERTY_AJAPROPS_MAPMEMORY_S),
612  &propStruct, sizeof(KSPROPERTY_AJAPROPS_MAPMEMORY_S), &dwBytesReturned, NULL);
613  _pFrameBaseAddress = 0;
616  if (fRet)
617  return true;
618 
619  WDIFAIL("failed: " << ::GetKernErrStr(GetLastError()));
620  return false;
621  }
622 
623  // Method: MapRegisters
625  {
626  if (IsRemote())
627  return false;
628  if (!IsOpen())
629  return false;
631  DWORD dwBytesReturned = 0;
634  ZeroMemory (&propStruct,sizeof(KSPROPERTY_AJAPROPS_MAPMEMORY_S));
635  propStruct.Property.Set=_GUID_PROPSET;
637  propStruct.Property.Flags = KSPROPERTY_TYPE_GET;
638  propStruct.bMapType = NTV2_MAPMEMORY_REGISTER;
639  if (!DeviceIoControl (_hDevice, IOCTL_AJAPROPS_MAPMEMORY, &propStruct, sizeof(KSPROPERTY_AJAPROPS_MAPMEMORY_S),
640  &propStruct, sizeof(KSPROPERTY_AJAPROPS_MAPMEMORY_S), &dwBytesReturned, NULL))
641  {
642  WDIFAIL("failed: " << ::GetKernErrStr(GetLastError()));
643  return false;
644  }
645 
648  return true;
649  }
650 
651  // Method: UnmapRegisters
653  {
654  if (IsRemote())
655  return false;
656  if (!IsOpen())
657  return false;
658  if (_pRegisterBaseAddress == 0)
659  return true;
660 
662  DWORD dwBytesReturned = 0;
663  ZeroMemory (&propStruct,sizeof(KSPROPERTY_AJAPROPS_MAPMEMORY_S));
664  propStruct.Property.Set = _GUID_PROPSET;
665  propStruct.Property.Id = KSPROPERTY_AJAPROPS_MAPMEMORY;
666  propStruct.Property.Flags = KSPROPERTY_TYPE_SET;
667  propStruct.bMapType = NTV2_MAPMEMORY_REGISTER;
669  BOOL fRet = DeviceIoControl(_hDevice, IOCTL_AJAPROPS_MAPMEMORY, &propStruct, sizeof(KSPROPERTY_AJAPROPS_MAPMEMORY_S),
670  &propStruct, sizeof(KSPROPERTY_AJAPROPS_MAPMEMORY_S), &dwBytesReturned, NULL);
673  if (fRet)
674  return true;
675  WDIFAIL("failed: " << ::GetKernErrStr(GetLastError()));
676  return false;
677  }
678 
679  // Method: MapXena2Flash
681  {
682  if (IsRemote())
683  return false;
684  if (!IsOpen())
685  return false;
687  DWORD dwBytesReturned = 0;
690  ZeroMemory (&propStruct,sizeof(KSPROPERTY_AJAPROPS_MAPMEMORY_S));
691  propStruct.Property.Set = _GUID_PROPSET;
692  propStruct.Property.Id = KSPROPERTY_AJAPROPS_MAPMEMORY;
693  propStruct.Property.Flags = KSPROPERTY_TYPE_GET;
695  if (!DeviceIoControl (_hDevice, IOCTL_AJAPROPS_MAPMEMORY, &propStruct, sizeof(KSPROPERTY_AJAPROPS_MAPMEMORY_S),
696  &propStruct, sizeof(KSPROPERTY_AJAPROPS_MAPMEMORY_S), &dwBytesReturned, NULL))
697  {
698  WDIFAIL("failed: " << ::GetKernErrStr(GetLastError()));
699  return false;
700  }
703  return true;
704  }
705 
706  // Method: UnmapXena2Flash
708  {
709  if (IsRemote())
710  return false;
711  if (!IsOpen())
712  return false;
713  if (_pRegisterBaseAddress == 0)
714  return true;
715 
717  DWORD dwBytesReturned = 0;
718  ZeroMemory (&propStruct,sizeof(KSPROPERTY_AJAPROPS_MAPMEMORY_S));
719  propStruct.Property.Set = _GUID_PROPSET;
720  propStruct.Property.Id = KSPROPERTY_AJAPROPS_MAPMEMORY;
721  propStruct.Property.Flags = KSPROPERTY_TYPE_SET;
724  BOOL fRet = DeviceIoControl (_hDevice, IOCTL_AJAPROPS_MAPMEMORY, &propStruct, sizeof(KSPROPERTY_AJAPROPS_MAPMEMORY_S),
725  &propStruct, sizeof(KSPROPERTY_AJAPROPS_MAPMEMORY_S), &dwBytesReturned, NULL);
728  if (fRet)
729  return true;
730  WDIFAIL("failed: " << ::GetKernErrStr(GetLastError()));
731  return false;
732  }
733 
734  bool CNTV2WinDriverInterface::MapMemory (PVOID pvUserVa, ULWord ulNumBytes, bool bMap, ULWord* ulUser)
735  {
736  if (IsRemote())
737  return false;
738  if (!IsOpen())
739  return false;
740 
741  KSPROPERTY_AJAPROPS_DMA_S propStruct;
742  DWORD dwBytesReturned = 0;
743  ZeroMemory (&propStruct,sizeof(KSPROPERTY_AJAPROPS_DMA_S));
744  propStruct.Property.Set = _GUID_PROPSET;
745  propStruct.Property.Id = KSPROPERTY_AJAPROPS_DMA;
746  propStruct.Property.Flags = bMap ? KSPROPERTY_TYPE_GET : KSPROPERTY_TYPE_SET;
747  propStruct.dmaEngine = NTV2_PIO;
748  propStruct.pvVidUserVa = pvUserVa;
749  propStruct.ulVidNumBytes = ulNumBytes;
750  if (!DeviceIoControl (_hDevice, IOCTL_AJAPROPS_DMA, &propStruct, sizeof(KSPROPERTY_AJAPROPS_DMA_S),
751  &propStruct, sizeof(KSPROPERTY_AJAPROPS_DMA_S), &dwBytesReturned, NULL))
752  {
753  WDIFAIL (KR(GetLastError()) << " -- numBytes=" << ulNumBytes << " map=" << (bMap?"Y":"N"));
754  return false;
755  }
756  if (ulUser)
757  *ulUser = propStruct.ulFrameOffset;
758  return true;
759  }
760 
761  // DmaUnlock
762  // Called from avclasses destructor to insure the process isn't terminating
763  // with memory still locked - a guaranteed cause of a blue screen
765  {
766  if (!IsOpen())
767  return false;
768  if (IsRemote())
769  return false;
770  // For every locked entry, try to free it
771  for (size_t ndx(0); ndx < _vecDmaLocked.size(); ndx++)
773 
774  NTV2_ASSERT(_vecDmaLocked.empty() && "_vecDmaLocked should be empty");
775  return true;
776  }
777 
779  // PrepareMemoryForDMA
780  // Passes the address of a user space allocated frame buffer and the buffer's size to the
781  // kernel, where the kernel
782  // creates a MDL and probes & locks the memory. The framebuffer's userspace address is saved
783  // in the kernel, and all subsequent DMA calls to this address will avoid the time penalties
784  // of the MDL creation and the probe & lock.
785  // NOTE: When this method is used to lock new()ed memory, this memory *should*
786  // be unlocked with the CompleteMemoryForDMA() method before calling delete(). The avclasses
787  // destructor does call DmaUnlock() which attempts to unlock all locked pages with calls
788  // to CompleteMemoryForDMA().
789  // NOTE: Any memory that is new()ed *should* be delete()ed before the process goes out of
790  // scope.
792  {
793  if (!IsOpen())
794  return false;
795  if (IsRemote())
796  return false;
797  // Use NTV2_PIO as an overloaded flag to indicate this is not a DMA transfer
798  if (!DmaTransfer (NTV2_PIO, true, 0, pFrameBuffer, 0, ulNumBytes, false))
799  return false;
800  // Succeeded -- add pFrameBuffer to the avclasses' vector of locked memory
801  _vecDmaLocked.push_back(pFrameBuffer);
802  return true;
803  }
804 
806  // CompleteMemoryForDMA: unlock and free resources
807  // The inverse of PrepareMemoryForDMA. It passes the framebuffer address to the kernel, where
808  // the kernel looks up this address and unlocks the memory, unmaps the memory, and deletes the
809  // MDL.
810  // NOTE: this method does not cleanup the call to new() which created the memory. It is the new()
811  // caller's responsibility to call delete() after calling this method to finish the cleanup.
813  {
814  if (!IsOpen())
815  return false;
816  if (IsRemote())
817  return false;
818  // Use NTV2_PIO as an overloaded flag to indicate this is not a DMA transfer
819  if (!DmaTransfer (NTV2_PIO, false, 0, pFrameBuffer, 0, 0))
820  return false;
821  // Succeeded -- remove pFrameBuffer from the avclasses' vector of locked memory
822  // Find the entry in the avclasses vector that holds this framebuffer's address
823  for (DMA_LOCKED_VEC::iterator vecIter(_vecDmaLocked.begin()); vecIter != _vecDmaLocked.end(); ++vecIter)
824  // If we've found one, erase (delete) it
825  if (*vecIter == pFrameBuffer)
826  {
827  _vecDmaLocked.erase(vecIter);
828  break;
829  }
830  return true;
831  }
832 #endif // !defined(NTV2_DEPRECATE_16_0)
833 
834 
836 // DMA
837 
839  const bool inIsRead,
840  const ULWord inFrameNumber,
841  ULWord * pFrameBuffer,
842  const ULWord inOffsetBytes,
843  const ULWord inByteCount,
844  const bool inSynchronous)
845 {
846  if (IsRemote())
847  return CNTV2DriverInterface::DmaTransfer(inDMAEngine, inIsRead, inFrameNumber, pFrameBuffer,
848  inOffsetBytes, inByteCount, inSynchronous);
849  if (!IsOpen())
850  return false;
851 
852  KSPROPERTY_AJAPROPS_DMA_S propStruct;
853  DWORD dwBytesReturned = 0;
854  ZeroMemory (&propStruct,sizeof(KSPROPERTY_AJAPROPS_DMA_S));
855  propStruct.Property.Set = _GUID_PROPSET;
856  propStruct.Property.Id = KSPROPERTY_AJAPROPS_DMA;
857  propStruct.Property.Flags = inIsRead ? KSPROPERTY_TYPE_GET : KSPROPERTY_TYPE_SET;
858  propStruct.dmaEngine = inDMAEngine;
859  propStruct.pvVidUserVa = PVOID(pFrameBuffer);
860  propStruct.ulFrameNumber = inFrameNumber;
861  propStruct.ulFrameOffset = inOffsetBytes;
862  propStruct.ulVidNumBytes = inByteCount;
863  propStruct.ulAudNumBytes = 0;
864  propStruct.bSync = inSynchronous;
866  const bool ok = DeviceIoControl(_hDevice, IOCTL_AJAPROPS_DMA, &propStruct, sizeof(KSPROPERTY_AJAPROPS_DMA_S),
867  &propStruct, sizeof(KSPROPERTY_AJAPROPS_DMA_S), &dwBytesReturned, NULL);
869  if (!ok)
870  {
871  WDIFAIL ("failed: " << ::GetKernErrStr(GetLastError()) << ": eng=" << inDMAEngine << " frm=" << inFrameNumber
872  << " off=" << HEX8(inOffsetBytes) << " len=" << HEX8(inByteCount) << " " << (inIsRead ? "Rd" : "Wr"));
873  return false;
874  }
875  return true;
876 }
877 
878 
880  const bool inIsRead,
881  const ULWord inFrameNumber,
882  ULWord * pFrameBuffer,
883  const ULWord inOffsetBytes,
884  const ULWord inByteCount,
885  const ULWord inNumSegments,
886  const ULWord inHostPitch,
887  const ULWord inCardPitch,
888  const bool inSynchronous)
889 {
890  if (IsRemote())
891  return CNTV2DriverInterface::DmaTransfer(inDMAEngine, inIsRead, inFrameNumber, pFrameBuffer,
892  inOffsetBytes, inByteCount, inNumSegments, inHostPitch, inCardPitch, inSynchronous);
893  if (!IsOpen())
894  return false;
895 
896  KSPROPERTY_AJAPROPS_DMA_EX_S propStruct;
897  DWORD dwBytesReturned = 0;
898  ZeroMemory (&propStruct,sizeof(KSPROPERTY_AJAPROPS_DMA_EX_S));
899  propStruct.Property.Set = _GUID_PROPSET;
900  propStruct.Property.Id = KSPROPERTY_AJAPROPS_DMA_EX;
901  propStruct.Property.Flags = inIsRead ? KSPROPERTY_TYPE_GET : KSPROPERTY_TYPE_SET;
902  propStruct.dmaEngine = inDMAEngine;
903  propStruct.pvVidUserVa = PVOID(pFrameBuffer);
904  propStruct.ulFrameNumber = inFrameNumber;
905  propStruct.ulFrameOffset = inOffsetBytes;
906  propStruct.ulVidNumBytes = inByteCount;
907  propStruct.ulAudNumBytes = 0;
908  propStruct.ulVidNumSegments = inNumSegments;
909  propStruct.ulVidSegmentHostPitch = inHostPitch;
910  propStruct.ulVidSegmentCardPitch = inCardPitch;
911  propStruct.bSync = inSynchronous;
913  const bool ok = DeviceIoControl(_hDevice, IOCTL_AJAPROPS_DMA_EX, &propStruct, sizeof(KSPROPERTY_AJAPROPS_DMA_EX_S),
914  &propStruct, sizeof(KSPROPERTY_AJAPROPS_DMA_EX_S), &dwBytesReturned, NULL);
916  if (!ok)
917  {
918  WDIFAIL ("failed: " << ::GetKernErrStr(GetLastError()) << ": eng=" << inDMAEngine << " frm=" << inFrameNumber
919  << " off=" << HEX8(inOffsetBytes) << " len=" << HEX8(inByteCount) << " " << (inIsRead ? "Rd" : "Wr"));
920  return false;
921  }
922  return true;
923 }
924 
926  const NTV2Channel inDMAChannel,
927  const bool inIsTarget,
928  const ULWord inFrameNumber,
929  const ULWord inCardOffsetBytes,
930  const ULWord inByteCount,
931  const ULWord inNumSegments,
932  const ULWord inHostPitch,
933  const ULWord inCardPitch,
934  const PCHANNEL_P2P_STRUCT & inP2PData)
935 {
936  if (IsRemote())
937  return CNTV2DriverInterface::DmaTransfer(inDMAEngine, inDMAChannel, inIsTarget, inFrameNumber, inCardOffsetBytes,
938  inByteCount, inNumSegments, inHostPitch, inCardPitch, inP2PData);
939  if (!IsOpen())
940  return false;
941  if (!inP2PData)
942  {
943  WDIFAIL ("pP2PData == NULL");
944  return false;
945  }
946 
947  DWORD dwBytesReturned(0);
949  ZeroMemory (&propStruct,sizeof(KSPROPERTY_AJAPROPS_DMA_P2P_S));
950 
951  propStruct.Property.Set = _GUID_PROPSET;
952  propStruct.Property.Id = KSPROPERTY_AJAPROPS_DMA_P2P;
953  if (inIsTarget)
954  { // reset p2p struct
955  memset(inP2PData, 0, sizeof(CHANNEL_P2P_STRUCT));
956  inP2PData->p2pSize = sizeof(CHANNEL_P2P_STRUCT);
957  propStruct.Property.Flags = KSPROPERTY_TYPE_GET; // get does target
958  }
959  else
960  { // check for valid p2p struct
961  if (inP2PData->p2pSize != sizeof(CHANNEL_P2P_STRUCT))
962  {
963  WDIFAIL ("p2pSize=" << inP2PData->p2pSize << " != sizeof(CHANNEL_P2P_STRUCT) " << sizeof(CHANNEL_P2P_STRUCT));
964  return false;
965  }
966  propStruct.Property.Flags = KSPROPERTY_TYPE_SET; // set does transfer
967  }
968 
969  propStruct.dmaEngine = inDMAEngine;
970  propStruct.dmaChannel = inDMAChannel;
971  propStruct.ulFrameNumber = inFrameNumber;
972  propStruct.ulFrameOffset = inCardOffsetBytes;
973  propStruct.ulVidNumBytes = inByteCount;
974  propStruct.ulVidNumSegments = inNumSegments;
975  propStruct.ulVidSegmentHostPitch = inHostPitch;
976  propStruct.ulVidSegmentCardPitch = inCardPitch;
977  propStruct.ullVideoBusAddress = inP2PData->videoBusAddress;
978  propStruct.ullMessageBusAddress = inP2PData->messageBusAddress;
979  propStruct.ulVideoBusSize = inP2PData->videoBusSize;
980  propStruct.ulMessageData = inP2PData->messageData;
982  const bool ok = DeviceIoControl(_hDevice, IOCTL_AJAPROPS_DMA_P2P, &propStruct, sizeof(KSPROPERTY_AJAPROPS_DMA_P2P_S),
983  &propStruct, sizeof(KSPROPERTY_AJAPROPS_DMA_P2P_S), &dwBytesReturned, NULL);
985  if (!ok)
986  {
987  WDIFAIL ("Failed: " << ::GetKernErrStr(GetLastError()) << ": eng=" << inDMAEngine << " ch=" << inDMAChannel
988  << " frm=" << inFrameNumber << " off=" << HEX8(inCardOffsetBytes) << " siz=" << HEX8(inByteCount)
989  << " #segs=" << inNumSegments << " hostPitch=" << inHostPitch << " cardPitch=" << inCardPitch
990  << " target=" << (inIsTarget?"Y":"N"));
991  return false;
992  }
993  if (inIsTarget)
994  {
995  // check for data returned
996  if (dwBytesReturned != sizeof(KSPROPERTY_AJAPROPS_DMA_P2P_S))
997  {
998  WDIFAIL ("Target failed: " << ::GetKernErrStr(GetLastError()) << " eng=" << inDMAEngine << " ch=" << inDMAChannel
999  << " frm=" << inFrameNumber << " off=" << HEX8(inCardOffsetBytes) << " vSiz=" << HEX8(inByteCount)
1000  << " segs=" << inNumSegments << " hostPitch=" << inHostPitch << " cardPitch=" << inCardPitch
1001  << " target=" << (inIsTarget?"Y":"N") << " p2pBytesRet=" << HEX8(dwBytesReturned)
1002  << " p2pSize=" << HEX8(sizeof(KSPROPERTY_AJAPROPS_DMA_P2P_S)));
1003  return false;
1004  }
1005 
1006  // fill in p2p data
1007  inP2PData->videoBusAddress = propStruct.ullVideoBusAddress;
1008  inP2PData->messageBusAddress = propStruct.ullMessageBusAddress;
1009  inP2PData->videoBusSize = propStruct.ulVideoBusSize;
1010  inP2PData->messageData = propStruct.ulMessageData;
1011  }
1012  return true;
1013 }
1014 
1015 
1017 // AutoCirculate
1019 {
1020  if (IsRemote())
1021  return CNTV2DriverInterface::AutoCirculate(autoCircData);
1022  bool bRes(true);
1023  DWORD dwBytesReturned(0);
1024 
1025  switch (autoCircData.eCommand)
1026  {
1027  case eInitAutoCirc:
1028  {
1029  if (autoCircData.lVal4 <= 1 && autoCircData.lVal5 == 0 && autoCircData.lVal6 == 0)
1030  {
1032  memset(&autoCircControl, 0, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_S));
1033  autoCircControl.Property.Set = _GUID_PROPSET;
1034  autoCircControl.Property.Id = KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL;
1035  autoCircControl.Property.Flags = KSPROPERTY_TYPE_SET;
1036  autoCircControl.channelSpec = autoCircData.channelSpec;
1037  autoCircControl.eCommand = autoCircData.eCommand;
1038 
1039  autoCircControl.lVal1 = autoCircData.lVal1;
1040  autoCircControl.lVal2 = autoCircData.lVal2;
1041  autoCircControl.lVal3 = autoCircData.lVal3;
1042  autoCircControl.bVal1 = autoCircData.bVal1;
1043  autoCircControl.bVal2 = autoCircData.bVal2;
1044  autoCircControl.bVal3 = autoCircData.bVal3;
1045  autoCircControl.bVal4 = autoCircData.bVal4;
1046  autoCircControl.bVal5 = autoCircData.bVal5;
1047  autoCircControl.bVal6 = autoCircData.bVal6;
1048  autoCircControl.bVal7 = autoCircData.bVal7;
1049  autoCircControl.bVal8 = autoCircData.bVal8;
1051  bRes = DeviceIoControl(_hDevice, IOCTL_AJAPROPS_AUTOCIRC_CONTROL, &autoCircControl, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_S),
1052  &autoCircControl, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_S), &dwBytesReturned, NULL);
1054  if (!bRes)
1055  WDIFAIL("ACInit failed: " << ::GetKernErrStr(GetLastError()));
1056  }
1057  else
1058  {
1060  memset(&autoCircControl, 0, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_EX_S));
1061  autoCircControl.Property.Set = _GUID_PROPSET;
1063  autoCircControl.Property.Flags = KSPROPERTY_TYPE_SET;
1064  autoCircControl.channelSpec = autoCircData.channelSpec;
1065  autoCircControl.eCommand = autoCircData.eCommand;
1066 
1067  autoCircControl.lVal1 = autoCircData.lVal1;
1068  autoCircControl.lVal2 = autoCircData.lVal2;
1069  autoCircControl.lVal3 = autoCircData.lVal3;
1070  autoCircControl.lVal4 = autoCircData.lVal4;
1071  autoCircControl.lVal5 = autoCircData.lVal5;
1072  autoCircControl.lVal6 = autoCircData.lVal6;
1073  autoCircControl.bVal1 = autoCircData.bVal1;
1074  autoCircControl.bVal2 = autoCircData.bVal2;
1075  autoCircControl.bVal3 = autoCircData.bVal3;
1076  autoCircControl.bVal4 = autoCircData.bVal4;
1077  autoCircControl.bVal5 = autoCircData.bVal5;
1078  autoCircControl.bVal6 = autoCircData.bVal6;
1079  autoCircControl.bVal7 = autoCircData.bVal7;
1080  autoCircControl.bVal8 = autoCircData.bVal8;
1082  bRes = DeviceIoControl(_hDevice, IOCTL_AJAPROPS_AUTOCIRC_CONTROL_EX, &autoCircControl, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_EX_S),
1083  &autoCircControl, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_EX_S), &dwBytesReturned, NULL);
1085  if (!bRes)
1086  WDIFAIL("ACInitEx failed: " << ::GetKernErrStr(GetLastError()));
1087  }
1088  break;
1089  } // eInitAutoCirc
1090 
1091  case eStartAutoCirc:
1092  case eStopAutoCirc:
1093  case eAbortAutoCirc:
1094  case ePauseAutoCirc:
1095  case eFlushAutoCirculate:
1096  case ePrerollAutoCirculate:
1097  case eStartAutoCircAtTime:
1098  {
1100  memset(&autoCircControl, 0, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_S));
1101  autoCircControl.Property.Set = _GUID_PROPSET;
1102  autoCircControl.Property.Id = KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL;
1103  autoCircControl.Property.Flags = KSPROPERTY_TYPE_SET;
1104  autoCircControl.channelSpec = autoCircData.channelSpec;
1105  autoCircControl.eCommand = autoCircData.eCommand;
1106 
1107  switch (autoCircData.eCommand)
1108  {
1109  case ePauseAutoCirc:
1110  autoCircControl.bVal1 = autoCircData.bVal1;
1111  break;
1112 
1113  case ePrerollAutoCirculate:
1114  autoCircControl.lVal1 = autoCircData.lVal1;
1115  break;
1116 
1117  case eStartAutoCircAtTime:
1118  autoCircControl.lVal1 = autoCircData.lVal1;
1119  autoCircControl.lVal2 = autoCircData.lVal2;
1120  break;
1121 
1122  default: break; //NTV2_ASSERT(false && "Bad eCommand");
1123  }
1125  bRes = DeviceIoControl(_hDevice, IOCTL_AJAPROPS_AUTOCIRC_CONTROL, &autoCircControl, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_S),
1126  &autoCircControl, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_S), &dwBytesReturned, NULL);
1128  if (!bRes)
1129  WDIFAIL("ACInitEx failed: " << ::GetKernErrStr(GetLastError()));
1130  break;
1131  } // eStartAutoCirc, eStopAutoCirc, etc.
1132 
1133  case eGetAutoCirc:
1134  {
1136  memset(&autoCircStatus, 0, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_STATUS_S));
1137  autoCircStatus.Property.Set = _GUID_PROPSET;
1138  autoCircStatus.Property.Id = KSPROPERTY_AJAPROPS_AUTOCIRC_STATUS;
1139  autoCircStatus.Property.Flags = KSPROPERTY_TYPE_GET;
1140  autoCircStatus.channelSpec = autoCircData.channelSpec;
1141  autoCircStatus.eCommand = autoCircData.eCommand;
1142  if (autoCircData.pvVal1)
1143  {
1145  bRes = DeviceIoControl(_hDevice, IOCTL_AJAPROPS_AUTOCIRC_STATUS, &autoCircStatus, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_STATUS_S),
1146  &autoCircStatus, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_STATUS_S), &dwBytesReturned, NULL);
1148  if (bRes)
1149  *(AUTOCIRCULATE_STATUS_STRUCT *)autoCircData.pvVal1 = autoCircStatus.autoCircStatus;
1150  else
1151  WDIFAIL("GetAC failed: " << ::GetKernErrStr(GetLastError()));
1152  }
1153  else
1154  {bRes = false; WDIFAIL("GetAC failed: NULL pvVal1");}
1155  break;
1156  } // eGetAutoCirc
1157 
1158  case eGetFrameStamp:
1159  {
1161  memset(&autoCircFrame, 0, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME_S));
1162  autoCircFrame.Property.Set = _GUID_PROPSET;
1163  autoCircFrame.Property.Id = KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME;
1164  autoCircFrame.Property.Flags = KSPROPERTY_TYPE_GET;
1165  autoCircFrame.channelSpec = autoCircData.channelSpec;
1166  autoCircFrame.eCommand = autoCircData.eCommand;
1167  autoCircFrame.lFrameNum = autoCircData.lVal1;
1168 
1169  if (autoCircData.pvVal1)
1170  {
1171  autoCircFrame.frameStamp = *(FRAME_STAMP_STRUCT *) autoCircData.pvVal1;
1173  bRes = DeviceIoControl(_hDevice, IOCTL_AJAPROPS_AUTOCIRC_FRAME, &autoCircFrame, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME_S),
1174  &autoCircFrame, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME_S), &dwBytesReturned, NULL);
1176  if (bRes)
1177  *(FRAME_STAMP_STRUCT *)autoCircData.pvVal1 = autoCircFrame.frameStamp;
1178  else
1179  WDIFAIL("GetFrameStamp failed: " << ::GetKernErrStr(GetLastError()));
1180  }
1181  else
1182  {bRes = false; WDIFAIL("GetFrameStamp failed: NULL pvVal1");}
1183  break;
1184  } // eGetFrameStamp
1185 
1186  case eGetFrameStampEx2:
1187  {
1189  memset(&autoCircFrame, 0, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME_EX2_S));
1190  autoCircFrame.Property.Set = _GUID_PROPSET;
1192  autoCircFrame.Property.Flags = KSPROPERTY_TYPE_GET;
1193  autoCircFrame.channelSpec = autoCircData.channelSpec;
1194  autoCircFrame.eCommand = autoCircData.eCommand;
1195  autoCircFrame.lFrameNum = autoCircData.lVal1;
1196 
1197  if (autoCircData.pvVal1)
1198  {
1199  autoCircFrame.frameStamp = *(FRAME_STAMP_STRUCT *) autoCircData.pvVal1;
1200  if (autoCircData.pvVal2)
1201  autoCircFrame.acTask = *(AUTOCIRCULATE_TASK_STRUCT *) autoCircData.pvVal2;
1202 
1204  bRes = DeviceIoControl(_hDevice, IOCTL_AJAPROPS_AUTOCIRC_FRAME_EX2, &autoCircFrame, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME_EX2_S),
1205  &autoCircFrame, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME_EX2_S), &dwBytesReturned, NULL);
1207  if (bRes)
1208  {
1209  *(FRAME_STAMP_STRUCT *)autoCircData.pvVal1 = autoCircFrame.frameStamp;
1210  if (autoCircData.pvVal2)
1211  *(AUTOCIRCULATE_TASK_STRUCT *) autoCircData.pvVal2 = autoCircFrame.acTask;
1212  }
1213  else
1214  WDIFAIL("GetFrameStampEx2 failed: " << ::GetKernErrStr(GetLastError()));
1215  }
1216  else
1217  {bRes = false; WDIFAIL("GetFrameStampEx2 failed: NULL pvVal1");}
1218  break;
1219  }
1220 
1222  {
1224  memset(&acXfer, 0, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_TRANSFER_S));
1225  acXfer.Property.Set = _GUID_PROPSET;
1227  acXfer.Property.Flags = KSPROPERTY_TYPE_GET;
1228  acXfer.eCommand = autoCircData.eCommand;
1229 
1230  if (!autoCircData.pvVal1 || !autoCircData.pvVal2)
1231  {bRes = false; WDIFAIL("ACXfer failed: pvVal1 or pvVal2 NULL"); break;}
1232  acXfer.acTransfer = *(PAUTOCIRCULATE_TRANSFER_STRUCT) autoCircData.pvVal1; // Reqd XferStruct
1233  AUTOCIRCULATE_TRANSFER_STATUS_STRUCT acStatus = *(PAUTOCIRCULATE_TRANSFER_STATUS_STRUCT) autoCircData.pvVal2; // Reqd XferStatusStruct
1234 
1235  // Ensure audio buffer alignment OK
1236  if (acXfer.acTransfer.audioBufferSize && (acXfer.acTransfer.audioBufferSize % 4))
1237  {bRes = false; WDIFAIL("ACXfer failed: audio buffer size " << DEC(acXfer.acTransfer.audioBufferSize) << " not mod 4"); break;}
1238  if (acXfer.acTransfer.audioBuffer && (ULWord64(acXfer.acTransfer.audioBuffer) % 4))
1239  {bRes = false; WDIFAIL("ACXfer failed: audio buffer addr " << xHEX0N(acXfer.acTransfer.audioBuffer,16) << " not DWORD-aligned"); break;}
1240 
1242  bRes = DeviceIoControl(_hDevice, IOCTL_AJAPROPS_AUTOCIRC_TRANSFER, &acXfer, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_TRANSFER_S),
1243  &acStatus, sizeof (AUTOCIRCULATE_TRANSFER_STATUS_STRUCT), &dwBytesReturned, NULL);
1245  if (bRes)
1246  *(PAUTOCIRCULATE_TRANSFER_STATUS_STRUCT)autoCircData.pvVal2 = acStatus;
1247  else
1248  WDIFAIL("ACXfer failed: " << ::GetKernErrStr(GetLastError()));
1249  break;
1250  } // eTransferAutoCirculate
1251 
1253  {
1255  memset(&acXfer, 0, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_TRANSFER_EX_S));
1256  acXfer.Property.Set = _GUID_PROPSET;
1258  acXfer.Property.Flags = KSPROPERTY_TYPE_GET;
1259  acXfer.eCommand = autoCircData.eCommand;
1260 
1261  if (!autoCircData.pvVal1 || !autoCircData.pvVal2)
1262  {bRes = false; WDIFAIL("ACXferEx failed: NULL XferStruct or XferStatusStruct"); break;}
1263  acXfer.acTransfer = *(PAUTOCIRCULATE_TRANSFER_STRUCT) autoCircData.pvVal1; // Reqd XferStruct
1264  AUTOCIRCULATE_TRANSFER_STATUS_STRUCT acStatus = *(PAUTOCIRCULATE_TRANSFER_STATUS_STRUCT) autoCircData.pvVal2; // Reqd XferStatusStruct
1265  if (autoCircData.pvVal3)
1266  acXfer.acTransferRoute = *(NTV2RoutingTable*) autoCircData.pvVal3; // Optional RoutingTable
1267 
1268  // Ensure audio buffer alignment OK
1269  if (acXfer.acTransfer.audioBufferSize && (acXfer.acTransfer.audioBufferSize % 4))
1270  {bRes = false; WDIFAIL("ACXferEx failed: audio buffer size " << DEC(acXfer.acTransfer.audioBufferSize) << " not mod 4"); break;}
1271  if (acXfer.acTransfer.audioBuffer && (ULWord64(acXfer.acTransfer.audioBuffer) % 4))
1272  {bRes = false; WDIFAIL("ACXferEx failed: audio buffer addr " << xHEX0N(acXfer.acTransfer.audioBuffer,16) << " not DWORD-aligned"); break;}
1273 
1276  &acStatus, sizeof (AUTOCIRCULATE_TRANSFER_STATUS_STRUCT), &dwBytesReturned, NULL);
1278  if (bRes)
1279  *(PAUTOCIRCULATE_TRANSFER_STATUS_STRUCT)autoCircData.pvVal2 = acStatus;
1280  else
1281  WDIFAIL("ACXferEx failed: " << ::GetKernErrStr(GetLastError()));
1282  break;
1283  } // eTransferAutoCirculateEx
1284 
1286  {
1288  memset(&acXfer, 0, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_TRANSFER_EX2_S));
1289  acXfer.Property.Set = _GUID_PROPSET;
1291  acXfer.Property.Flags = KSPROPERTY_TYPE_GET;
1292  acXfer.eCommand = autoCircData.eCommand;
1293 
1294  if (!autoCircData.pvVal1 || !autoCircData.pvVal2)
1295  {bRes = false; WDIFAIL("ACXferEx2 failed: NULL XferStruct or RoutingTable"); break;}
1296 
1297  acXfer.acTransfer = *(PAUTOCIRCULATE_TRANSFER_STRUCT) autoCircData.pvVal1; // Reqd XferStruct
1298  AUTOCIRCULATE_TRANSFER_STATUS_STRUCT acStatus = *(PAUTOCIRCULATE_TRANSFER_STATUS_STRUCT) autoCircData.pvVal2; // Reqd XferStatusStruct
1299  if (autoCircData.pvVal3)
1300  acXfer.acTransferRoute = *(NTV2RoutingTable*) autoCircData.pvVal3; // Optional RoutingTable
1301  if (autoCircData.pvVal4)
1302  acXfer.acTask = *(PAUTOCIRCULATE_TASK_STRUCT) autoCircData.pvVal4; // Optional TaskStruct
1303 
1304  // Ensure audio buffer alignment OK
1305  if (acXfer.acTransfer.audioBufferSize && (acXfer.acTransfer.audioBufferSize % 4))
1306  {bRes = false; WDIFAIL("ACXferEx2 failed: audio buffer size " << DEC(acXfer.acTransfer.audioBufferSize) << " not mod 4"); break;}
1307  if (acXfer.acTransfer.audioBuffer && (ULWord64(acXfer.acTransfer.audioBuffer) % 4))
1308  {bRes = false; WDIFAIL("ACXferEx2 failed: audio buffer addr " << xHEX0N(acXfer.acTransfer.audioBuffer,16) << " not DWORD-aligned"); break;}
1309 
1312  &acStatus, sizeof (AUTOCIRCULATE_TRANSFER_STATUS_STRUCT), &dwBytesReturned, NULL);
1314  if (bRes)
1315  *(PAUTOCIRCULATE_TRANSFER_STATUS_STRUCT)autoCircData.pvVal2 = acStatus;
1316  else
1317  WDIFAIL("ACXferEx2 failed: " << ::GetKernErrStr(GetLastError()));
1318  break;
1319  } // eTransferAutoCirculateEx2
1320 
1321  case eSetCaptureTask:
1322  {
1324  memset(&autoCircFrame, 0, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME_EX2_S));
1325  autoCircFrame.Property.Set = _GUID_PROPSET;
1327  autoCircFrame.Property.Flags = KSPROPERTY_TYPE_SET;
1328  autoCircFrame.channelSpec = autoCircData.channelSpec;
1329  autoCircFrame.eCommand = autoCircData.eCommand;
1330  autoCircFrame.lFrameNum = 0;
1331 
1332  if (!autoCircData.pvVal1)
1333  {bRes = false; WDIFAIL("ACSetCaptureTask failed: NULL TaskStruct"); break;}
1334  autoCircFrame.acTask = *(AUTOCIRCULATE_TASK_STRUCT *) autoCircData.pvVal1; // Reqd TaskStruct
1335 
1337  bRes = DeviceIoControl(_hDevice, IOCTL_AJAPROPS_AUTOCIRC_CAPTURE_TASK, &autoCircFrame, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME_EX2_S),
1338  &autoCircFrame, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME_EX2_S), &dwBytesReturned, NULL);
1340  if (!bRes)
1341  WDIFAIL("ACSetCaptureTask failed: " << ::GetKernErrStr(GetLastError()));
1342  break;
1343  } // eSetCaptureTask
1344 
1345  case eSetActiveFrame:
1347  { bRes = false;
1348  WDIFAIL("Bad AC command %d" << autoCircData.eCommand);
1349  break;
1350  }
1351  } // switch on autoCircData.eCommand
1352  return bRes;
1353 } // AutoCirculate
1354 
1355 
1357 {
1358  if (!pInMessage)
1359  {WDIFAIL("Failed: NULL pointer"); return false;}
1360  if (IsRemote())
1361  return CNTV2DriverInterface::NTV2Message(pInMessage); // Implement NTV2Message on nub
1362  DWORD dwBytesReturned(0);
1364  const bool ok = DeviceIoControl(_hDevice, IOCTL_AJANTV2_MESSAGE, pInMessage, pInMessage->GetSizeInBytes (), pInMessage, pInMessage->GetSizeInBytes(), &dwBytesReturned, NULL);
1366  if (!ok)
1367  {WDIFAIL("Failed: " << ::GetKernErrStr(GetLastError())); return false;}
1368  return true;
1369 }
1370 
1371 
1373 {
1374  if (!pInMessage)
1375  {WDIFAIL("Failed: NULL pointer"); return false;}
1376  DWORD dwBytesReturned(0);
1378  const bool ok = DeviceIoControl(_hDevice, IOCTL_AJAHEVC_MESSAGE, pInMessage, pInMessage->size, pInMessage, pInMessage->size, &dwBytesReturned, NULL);
1380  if (!ok)
1381  {WDIFAIL("Failed: " << ::GetKernErrStr(GetLastError())); return false;}
1382  return true;
1383 }
1384 
1385 
1387 {
1389 }
1390 
1392 {
1394 }
1395 
1396 
1397 //
1398 // Management of downloaded Xilinx bitfile
1399 //
1400 //
1402 {
1403  if (IsRemote())
1404  return CNTV2DriverInterface::DriverGetBitFileInformation (outBitfileInfo, bitFileType);
1405  if (::NTV2DeviceHasSPIFlash(_boardID)) // No need to query the driver for boards with SPIFlash
1406  return CNTV2DriverInterface::DriverGetBitFileInformation (outBitfileInfo, bitFileType);
1407 
1408  // Ask the driver...
1409  DWORD dwBytesReturned(0);
1411  ZeroMemory(&propStruct,sizeof(KSPROPERTY_AJAPROPS_GETSETBITFILEINFO_S));
1412  propStruct.Property.Set = _GUID_PROPSET;
1414  propStruct.Property.Flags = KSPROPERTY_TYPE_GET;
1415  if (!DeviceIoControl(_hDevice, IOCTL_AJAPROPS_GETSETBITFILEINFO, &propStruct, sizeof(KSPROPERTY_AJAPROPS_GETSETBITFILEINFO_S),
1416  &propStruct, sizeof(KSPROPERTY_AJAPROPS_GETSETBITFILEINFO_S), &dwBytesReturned, NULL))
1417  {
1418  WDIFAIL("Failed");
1419  return false;
1420  }
1421  outBitfileInfo = propStruct.bitFileInfoStruct;
1422  return true;
1423 }
1424 
1426 {
1427  DWORD dwBytesReturned(0);
1429  ZeroMemory(&propStruct, sizeof(KSPROPERTY_AJAPROPS_GETSETBITFILEINFO_S));
1430  propStruct.Property.Set = _GUID_PROPSET;
1432  propStruct.Property.Flags = KSPROPERTY_TYPE_SET;
1433  propStruct.bitFileInfoStruct = inBitfileInfo;
1434  if (DeviceIoControl(_hDevice, IOCTL_AJAPROPS_GETSETBITFILEINFO, &propStruct, sizeof(KSPROPERTY_AJAPROPS_GETSETBITFILEINFO_S),
1435  &propStruct, sizeof(KSPROPERTY_AJAPROPS_GETSETBITFILEINFO_S), &dwBytesReturned, NULL))
1436  return true;
1437 
1438  WDIFAIL("Failed");
1439  return false;
1440 }
1441 
1442 
1443 #include <ntv2devicefeatures.h>
1444 
1446 {
1447  if (IsRemote())
1448  return false;
1450 }
KSPROPERTY_AJAPROPS_AUTOCIRC_STATUS_S::eCommand
AUTO_CIRC_COMMAND eCommand
Definition: ntv2winpublicinterface.h:321
KSPROPERTY_AJAPROPS_GETSETREGISTER
@ KSPROPERTY_AJAPROPS_GETSETREGISTER
Definition: ntv2winpublicinterface.h:73
AJA_DebugStat_GetInterruptCount
@ AJA_DebugStat_GetInterruptCount
Definition: debugshare.h:240
KSPROPERTY_AJAPROPS_DMA_S::pvVidUserVa
PVOID pvVidUserVa
Definition: ntv2winpublicinterface.h:193
KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL
@ KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL
Definition: ntv2winpublicinterface.h:79
KSPROPERTY_AJAPROPS_GETSETREGISTER_S::RegisterID
ULONG RegisterID
Definition: ntv2winpublicinterface.h:107
AJA_DebugStat_DMATransferEx
@ AJA_DebugStat_DMATransferEx
Definition: debugshare.h:242
sIntEnumToStatKeys
static const uint32_t sIntEnumToStatKeys[]
Definition: ntv2windriverinterface.cpp:497
KSPROPERTY_AJAPROPS_INTERRUPTS
@ KSPROPERTY_AJAPROPS_INTERRUPTS
Definition: ntv2winpublicinterface.h:76
KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME_S::frameStamp
FRAME_STAMP_STRUCT frameStamp
Definition: ntv2winpublicinterface.h:333
KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_EX_S::eCommand
AUTO_CIRC_COMMAND eCommand
Definition: ntv2winpublicinterface.h:289
KSPROPERTY_AJAPROPS_AUTOCIRC_STATUS_S
Definition: ntv2winpublicinterface.h:319
AJADebug::StatTimerStop
static AJAStatus StatTimerStop(const uint32_t inKey)
Definition: debug.cpp:1155
AUTOCIRCULATE_DATA::channelSpec
NTV2Crosspoint channelSpec
Definition: ntv2publicinterface.h:4430
CNTV2DriverInterface::mSkipRegWrites
bool mSkipRegWrites
True if actual register writes are skipped while recording.
Definition: ntv2driverinterface.h:685
KSPROPERTY_AJAPROPS_DMA_P2P_S::ulMessageData
ULWord ulMessageData
Definition: ntv2winpublicinterface.h:261
ntv2windriverinterface.h
Declares the MSWindows-specific flavor of CNTV2DriverInterface.
KSPROPERTY_AJAPROPS_DMA_P2P_S::ulVidNumSegments
ULWord ulVidNumSegments
Definition: ntv2winpublicinterface.h:255
KSPROPERTY_AJAPROPS_GETSETREGISTER_S::ulRegisterShift
ULONG ulRegisterShift
Definition: ntv2winpublicinterface.h:110
KSPROPERTY_AJAPROPS_DMA_EX_S::Property
KSPROPERTY Property
Definition: ntv2winpublicinterface.h:217
KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_EX_S::lVal1
LWord lVal1
Definition: ntv2winpublicinterface.h:291
HANDLE
short HANDLE
Definition: ajatypes.h:317
PAUTOCIRCULATE_TASK_STRUCT
struct AUTOCIRCULATE_TASK_STRUCT * PAUTOCIRCULATE_TASK_STRUCT
kRegBoardID
@ kRegBoardID
Definition: ntv2publicinterface.h:153
CNTV2WinDriverInterface::UnmapRegisters
virtual bool UnmapRegisters(void)
Definition: ntv2windriverinterface.cpp:652
INTERRUPT_ENUMS
enum _INTERRUPT_ENUMS_ INTERRUPT_ENUMS
KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_EX_S
Definition: ntv2winpublicinterface.h:287
CNTV2WinDriverInterface::WaitForInterrupt
virtual bool WaitForInterrupt(const INTERRUPT_ENUMS eInterruptType, const ULWord timeOutMs=50)
Definition: ntv2windriverinterface.cpp:516
CNTV2WinDriverInterface::UnmapFrameBuffers
virtual bool UnmapFrameBuffers(void)
Definition: ntv2windriverinterface.cpp:590
IOCTL_AJAPROPS_AUTOCIRC_FRAME
#define IOCTL_AJAPROPS_AUTOCIRC_FRAME
Definition: ntv2winpublicinterface.h:52
AUTOCIRCULATE_DATA::bVal2
BOOL_ bVal2
Definition: ntv2publicinterface.h:4440
CNTV2WinDriverInterface::SetAudioOutputMode
virtual bool SetAudioOutputMode(NTV2_GlobalAudioPlaybackMode mode)
Definition: ntv2windriverinterface.cpp:1386
KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME_S
Definition: ntv2winpublicinterface.h:328
KSPROPERTY_AJAPROPS_DMA_P2P_S
Definition: ntv2winpublicinterface.h:248
ntv2devicefeatures.h
Declares device capability functions.
CNTV2DriverInterface::_pXena2FlashBaseAddress
ULWord * _pXena2FlashBaseAddress
Definition: ntv2driverinterface.h:699
KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_EX_S::bVal4
bool bVal4
Definition: ntv2winpublicinterface.h:304
KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_EX_S::Property
KSPROPERTY Property
Definition: ntv2winpublicinterface.h:288
KSPROPERTY_AJAPROPS_DMA_EX_S::ulFrameNumber
ULWord ulFrameNumber
Definition: ntv2winpublicinterface.h:220
KSPROPERTY_AJAPROPS_GETSETREGISTER_S::Property
KSPROPERTY Property
Definition: ntv2winpublicinterface.h:106
KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_S::lVal1
LWord lVal1
Definition: ntv2winpublicinterface.h:274
KSPROPERTY_AJAPROPS_AUTOCIRC_STATUS
@ KSPROPERTY_AJAPROPS_AUTOCIRC_STATUS
Definition: ntv2winpublicinterface.h:80
AJA_DebugStat_HEVCSendMessage
@ AJA_DebugStat_HEVCSendMessage
Definition: debugshare.h:247
NULL
#define NULL
Definition: ntv2caption608types.h:19
NTV2Channel
NTV2Channel
These enum values are mostly used to identify a specific widget_framestore. They're also commonly use...
Definition: ntv2enums.h:1343
AJA_DebugStat_ReadRegister
@ AJA_DebugStat_ReadRegister
Definition: debugshare.h:224
CNTV2DriverInterface::_boardOpened
bool _boardOpened
True if I'm open and connected to the device.
Definition: ntv2driverinterface.h:682
KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_S::bVal4
bool bVal4
Definition: ntv2winpublicinterface.h:280
AJA_DebugStat_NTV2Message
@ AJA_DebugStat_NTV2Message
Definition: debugshare.h:246
KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_EX_S::lVal4
LWord lVal4
Definition: ntv2winpublicinterface.h:294
AJADebug::StatTimerStart
static AJAStatus StatTimerStart(const uint32_t inKey)
Definition: debug.cpp:1135
CNTV2WinDriverInterface::CNTV2WinDriverInterface
CNTV2WinDriverInterface()
My default constructor.
Definition: ntv2windriverinterface.cpp:147
KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_EX_S::bVal3
bool bVal3
Definition: ntv2winpublicinterface.h:303
KSPROPERTY_AJAPROPS_MAPMEMORY_S::Property
KSPROPERTY Property
Definition: ntv2winpublicinterface.h:134
NTV2_ASSERT
#define NTV2_ASSERT(_expr_)
Definition: ajatypes.h:508
WDIINFO
#define WDIINFO(__x__)
Definition: ntv2windriverinterface.cpp:143
KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_S::bVal1
bool bVal1
Definition: ntv2winpublicinterface.h:277
KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME_EX2_S::eCommand
AUTO_CIRC_COMMAND eCommand
Definition: ntv2winpublicinterface.h:338
KSPROPERTY_AJAPROPS_AUTOCIRC_TRANSFER_EX2_S::acTransferRoute
NTV2RoutingTable acTransferRoute
Definition: ntv2winpublicinterface.h:395
IOCTL_AJAPROPS_AUTOCIRC_CONTROL
#define IOCTL_AJAPROPS_AUTOCIRC_CONTROL
Definition: ntv2winpublicinterface.h:50
CNTV2WinDriverInterface::ConfigureInterrupt
virtual bool ConfigureInterrupt(const bool bEnable, const INTERRUPT_ENUMS eInterruptType)
Definition: ntv2windriverinterface.cpp:392
AJA_DebugStat_AutoCirculate
@ AJA_DebugStat_AutoCirculate
Definition: debugshare.h:244
IOCTL_AJAPROPS_GETSETBITFILEINFO
#define IOCTL_AJAPROPS_GETSETBITFILEINFO
Definition: ntv2winpublicinterface.h:61
IOCTL_AJAPROPS_AUTOCIRC_TRANSFER_EX2
#define IOCTL_AJAPROPS_AUTOCIRC_TRANSFER_EX2
Definition: ntv2winpublicinterface.h:58
KSPROPERTY_AJAPROPS_NEWSUBSCRIPTIONS_S::eInterrupt
INTERRUPT_ENUMS eInterrupt
Definition: ntv2winpublicinterface.h:176
AJA_DebugStat_WaitForInterruptOthers
@ AJA_DebugStat_WaitForInterruptOthers
Definition: debugshare.h:239
CNTV2WinDriverInterface::NTV2Message
virtual bool NTV2Message(NTV2_HEADER *pInMessage)
Sends a message to the NTV2 driver (the new, improved, preferred way).
Definition: ntv2windriverinterface.cpp:1356
IOCTL_AJAPROPS_AUTOCIRC_FRAME_EX2
#define IOCTL_AJAPROPS_AUTOCIRC_FRAME_EX2
Definition: ntv2winpublicinterface.h:59
CNTV2DriverInterface::WaitForInterrupt
virtual bool WaitForInterrupt(const INTERRUPT_ENUMS eInterrupt, const ULWord timeOutMs=68)
Definition: ntv2driverinterface.cpp:576
AJA_DebugStat_WaitForInterruptIn2
@ AJA_DebugStat_WaitForInterruptIn2
Definition: debugshare.h:227
KSPROPERTY_AJAPROPS_DMA_P2P_S::ulFrameOffset
ULWord ulFrameOffset
Definition: ntv2winpublicinterface.h:253
KSPROPERTY_AJAPROPS_DMA_EX_S::dmaEngine
NTV2DMAEngine dmaEngine
Definition: ntv2winpublicinterface.h:218
hevcMessageHeader::size
ULWord size
Definition: ntv2publicinterface.h:9956
CNTV2WinDriverInterface::MapFrameBuffers
virtual bool MapFrameBuffers(void)
Definition: ntv2windriverinterface.cpp:559
KSPROPERTY_AJAPROPS_AUTOCIRC_TRANSFER_EX2_S::eCommand
AUTO_CIRC_COMMAND eCommand
Definition: ntv2winpublicinterface.h:392
KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_S::eCommand
AUTO_CIRC_COMMAND eCommand
Definition: ntv2winpublicinterface.h:272
eStartAutoCircAtTime
@ eStartAutoCircAtTime
Definition: ntv2publicinterface.h:4312
AUTOCIRCULATE_DATA::bVal3
BOOL_ bVal3
Definition: ntv2publicinterface.h:4441
NTV2DeviceHasSPIFlash
bool NTV2DeviceHasSPIFlash(const NTV2DeviceID inDeviceID)
Definition: ntv2devicefeatures.hpp:7988
KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_S::Property
KSPROPERTY Property
Definition: ntv2winpublicinterface.h:271
KSPROPERTY_AJAPROPS_AUTOCIRC_STATUS_S::autoCircStatus
AUTOCIRCULATE_STATUS_STRUCT autoCircStatus
Definition: ntv2winpublicinterface.h:323
KSPROPERTY_AJAPROPS_DMA_S::Property
KSPROPERTY Property
Definition: ntv2winpublicinterface.h:191
CNTV2WinDriverInterface::GetAudioOutputMode
virtual bool GetAudioOutputMode(NTV2_GlobalAudioPlaybackMode *mode)
Definition: ntv2windriverinterface.cpp:1391
CNTV2DriverInterface::_pCh2FrameBaseAddress
ULWord * _pCh2FrameBaseAddress
Definition: ntv2driverinterface.h:701
KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_S::bVal5
bool bVal5
Definition: ntv2winpublicinterface.h:281
NTV2_MAPMEMORY_PCIFLASHPROGRAM
@ NTV2_MAPMEMORY_PCIFLASHPROGRAM
Definition: ntv2winpublicinterface.h:119
AUTOCIRCULATE_TRANSFER_STRUCT::audioBufferSize
ULWord audioBufferSize
Definition: ntv2publicinterface.h:4639
KSPROPERTY_AJAPROPS_DMA_EX_S::ulVidSegmentCardPitch
ULWord ulVidSegmentCardPitch
Definition: ntv2winpublicinterface.h:228
PULWord
uint32_t * PULWord
Definition: ajatypes.h:256
CNTV2DriverInterface::_boardNumber
UWord _boardNumber
My device index number.
Definition: ntv2driverinterface.h:680
KSPROPERTY_AJAPROPS_INTERRUPTS_S::Property
KSPROPERTY Property
Definition: ntv2winpublicinterface.h:148
CNTV2WinDriverInterface::~CNTV2WinDriverInterface
virtual ~CNTV2WinDriverInterface()
My default destructor.
Definition: ntv2windriverinterface.cpp:161
ntv2debug.h
CNTV2WinDriverInterface::CloseLocalPhysical
virtual bool CloseLocalPhysical(void)
Releases host resources associated with the local/physical device connection.
Definition: ntv2windriverinterface.cpp:262
KSPROPERTY_AJAPROPS_MAPMEMORY
@ KSPROPERTY_AJAPROPS_MAPMEMORY
Definition: ntv2winpublicinterface.h:75
kVRegGlobalAudioPlaybackMode
@ kVRegGlobalAudioPlaybackMode
Definition: ntv2virtualregisters.h:34
CNTV2DriverInterface::WriteRegister
virtual bool WriteRegister(const ULWord inRegNum, const ULWord inValue, const ULWord inMask=0xFFFFFFFF, const ULWord inShift=0)
Updates or replaces all or part of the 32-bit contents of a specific register (real or virtual) on th...
Definition: ntv2driverinterface.cpp:497
IOCTL_AJAPROPS_AUTOCIRC_CONTROL_EX
#define IOCTL_AJAPROPS_AUTOCIRC_CONTROL_EX
Definition: ntv2winpublicinterface.h:62
CNTV2DriverInterface::_boardID
NTV2DeviceID _boardID
My cached device ID.
Definition: ntv2driverinterface.h:681
ePrerollAutoCirculate
@ ePrerollAutoCirculate
Definition: ntv2publicinterface.h:4309
eGetIntCount
@ eGetIntCount
Definition: ntv2publicinterface.h:3771
AUTOCIRCULATE_DATA::bVal6
BOOL_ bVal6
Definition: ntv2publicinterface.h:4444
KSPROPERTY_AJAPROPS_DMA_EX_S
Definition: ntv2winpublicinterface.h:216
GetKernErrStr
static std::string GetKernErrStr(const DWORD inError)
Definition: ntv2windriverinterface.cpp:112
AJA_DebugStat_WaitForInterruptIn8
@ AJA_DebugStat_WaitForInterruptIn8
Definition: debugshare.h:233
HEX8
#define HEX8(__x__)
Definition: ntv2windriverinterface.cpp:135
CNTV2WinDriverInterface::PrepareMemoryForDMA
virtual bool PrepareMemoryForDMA(ULWord *pFrameBuffer, const ULWord ulNumBytes)
Definition: ntv2windriverinterface.cpp:791
NTV2_IS_VALID_INTERRUPT_ENUM
#define NTV2_IS_VALID_INTERRUPT_ENUM(__e__)
Definition: ntv2publicinterface.h:3809
IOCTL_AJAPROPS_DMA_P2P
#define IOCTL_AJAPROPS_DMA_P2P
Definition: ntv2winpublicinterface.h:63
KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_EX_S::lVal5
LWord lVal5
Definition: ntv2winpublicinterface.h:295
CNTV2WinDriverInterface::DmaTransfer
virtual bool DmaTransfer(const NTV2DMAEngine inDMAEngine, const bool inIsRead, const ULWord inFrameNumber, ULWord *pFrameBuffer, const ULWord inCardOffsetBytes, const ULWord inByteCount, const bool inSynchronous=(!(0)))
Transfers data between the AJA device and the host. This function will block and not return to the ca...
Definition: ntv2windriverinterface.cpp:838
KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_EX_S::lVal3
LWord lVal3
Definition: ntv2winpublicinterface.h:293
CNTV2WinDriverInterface::MapMemory
virtual bool MapMemory(PVOID pvUserVa, ULWord ulNumBytes, bool bMap, ULWord *ulUser=NULL)
Definition: ntv2windriverinterface.cpp:734
KSPROPERTY_AJAPROPS_AUTOCIRC_TRANSFER_S::acTransfer
AUTOCIRCULATE_TRANSFER_STRUCT acTransfer
Definition: ntv2winpublicinterface.h:359
KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME_S::Property
KSPROPERTY Property
Definition: ntv2winpublicinterface.h:329
AUTOCIRCULATE_DATA::pvVal4
void * pvVal4
Definition: ntv2publicinterface.h:4451
CNTV2WinDriverInterface::AutoCirculate
virtual bool AutoCirculate(AUTOCIRCULATE_DATA &autoCircData)
Sends an AutoCirculate command to the NTV2 driver.
Definition: ntv2windriverinterface.cpp:1018
AUTOCIRCULATE_DATA::pvVal3
void * pvVal3
Definition: ntv2publicinterface.h:4450
KSPROPERTY_AJAPROPS_DMA_P2P_S::ullMessageBusAddress
ULWord64 ullMessageBusAddress
Definition: ntv2winpublicinterface.h:259
KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME_EX2_S
Definition: ntv2winpublicinterface.h:336
KSPROPERTY_AJAPROPS_DMA_EX_S::ulFrameOffset
ULWord ulFrameOffset
Definition: ntv2winpublicinterface.h:222
CNTV2DriverInterface::ReadRegister
virtual bool ReadRegister(const ULWord inRegNum, ULWord &outValue, const ULWord inMask=0xFFFFFFFF, const ULWord inShift=0)
Reads all or part of the 32-bit contents of a specific register (real or virtual) on the AJA device....
Definition: ntv2driverinterface.cpp:433
KSPROPERTY_AJAPROPS_DMA_P2P_S::ulVideoBusSize
ULWord ulVideoBusSize
Definition: ntv2winpublicinterface.h:260
KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME_S::lFrameNum
LWord lFrameNum
Definition: ntv2winpublicinterface.h:332
CNTV2WinDriverInterface::ReadRegister
virtual bool ReadRegister(const ULWord inRegNum, ULWord &outValue, const ULWord inMask=0xFFFFFFFF, const ULWord inShift=0)
Physical device implementation of CNTV2DriverInterface::ReadRegister.
Definition: ntv2windriverinterface.cpp:299
KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_S::lVal3
LWord lVal3
Definition: ntv2winpublicinterface.h:276
CNTV2DriverInterface::mRegWrites
NTV2RegisterWrites mRegWrites
Stores WriteRegister data.
Definition: ntv2driverinterface.h:692
AUTOCIRCULATE_DATA::lVal5
LWord lVal5
Definition: ntv2publicinterface.h:4436
NTV2RoutingTable
Definition: ntv2publicinterface.h:4115
AJA_DebugStat_DMATransferP2P
@ AJA_DebugStat_DMATransferP2P
Definition: debugshare.h:243
AUTOCIRCULATE_DATA::lVal3
LWord lVal3
Definition: ntv2publicinterface.h:4434
NTV2_GlobalAudioPlaybackMode
NTV2_GlobalAudioPlaybackMode
Definition: ntv2enums.h:2092
eAbortAutoCirc
@ eAbortAutoCirc
Definition: ntv2publicinterface.h:4311
eTransferAutoCirculate
@ eTransferAutoCirculate
Definition: ntv2publicinterface.h:4310
NTV2DMAEngine
NTV2DMAEngine
Definition: ntv2enums.h:1842
CNTV2WinDriverInterface::HevcSendMessage
virtual bool HevcSendMessage(HevcMessageHeader *pMessage)
Sends an HEVC message to the NTV2 driver.
Definition: ntv2windriverinterface.cpp:1372
eGetFrameStamp
@ eGetFrameStamp
Definition: ntv2publicinterface.h:4307
KSPROPERTY_AJAPROPS_AUTOCIRC_TRANSFER_EX2_S
Definition: ntv2winpublicinterface.h:390
FRAME_STAMP_STRUCT
Definition: ntv2publicinterface.h:4495
AUTOCIRCULATE_DATA::eCommand
AUTO_CIRC_COMMAND eCommand
Definition: ntv2publicinterface.h:4429
KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME_S::eCommand
AUTO_CIRC_COMMAND eCommand
Definition: ntv2winpublicinterface.h:330
KSPROPERTY_AJAPROPS_MAPMEMORY_S
Definition: ntv2winpublicinterface.h:133
CHANNEL_P2P_STRUCT
struct AUTOCIRCULATE_P2P_STRUCT CHANNEL_P2P_STRUCT
KSPROPERTY_AJAPROPS_DMA_EX_S::bSync
bool bSync
Definition: ntv2winpublicinterface.h:229
KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_S::channelSpec
NTV2Crosspoint channelSpec
Definition: ntv2winpublicinterface.h:273
ULWord
uint32_t ULWord
Definition: ajatypes.h:255
IOCTL_AJAPROPS_DMA_EX
#define IOCTL_AJAPROPS_DMA_EX
Definition: ntv2winpublicinterface.h:57
NTV2BitFileType
NTV2BitFileType
Definition: ntv2enums.h:3322
KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME_EX2_S::Property
KSPROPERTY Property
Definition: ntv2winpublicinterface.h:337
IOCTL_AJAPROPS_AUTOCIRC_STATUS
#define IOCTL_AJAPROPS_AUTOCIRC_STATUS
Definition: ntv2winpublicinterface.h:51
IOCTL_AJAPROPS_INTERRUPTS
#define IOCTL_AJAPROPS_INTERRUPTS
Definition: ntv2winpublicinterface.h:47
CNTV2WinDriverInterface::DriverGetBitFileInformation
virtual bool DriverGetBitFileInformation(BITFILE_INFO_STRUCT &outBitfileInfo, const NTV2BitFileType inBitfileType=NTV2_VideoProcBitFile)
Answers with the currently-installed bitfile information.
Definition: ntv2windriverinterface.cpp:1401
AUTOCIRCULATE_P2P_STRUCT::videoBusSize
ULWord videoBusSize
Definition: ntv2publicinterface.h:4722
CNTV2DriverInterface::DmaTransfer
virtual bool DmaTransfer(const NTV2DMAEngine inDMAEngine, const bool inIsRead, const ULWord inFrameNumber, ULWord *pFrameBuffer, const ULWord inCardOffsetBytes, const ULWord inTotalByteCount, const bool inSynchronous=(!(0)))
Transfers data between the AJA device and the host. This function will block and not return to the ca...
Definition: ntv2driverinterface.cpp:512
KSPROPERTY_AJAPROPS_DMA_EX_S::ulVidNumBytes
ULWord ulVidNumBytes
Definition: ntv2winpublicinterface.h:221
KSPROPERTY_AJAPROPS_AUTOCIRC_TRANSFER_EX_S::acTransfer
AUTOCIRCULATE_TRANSFER_STRUCT acTransfer
Definition: ntv2winpublicinterface.h:375
AJA_DebugStat_WaitForInterruptUartTx1
@ AJA_DebugStat_WaitForInterruptUartTx1
Definition: debugshare.h:236
KSPROPERTY_AJAPROPS_GETSETBITFILEINFO_S
Definition: ntv2winpublicinterface.h:409
AUTOCIRCULATE_P2P_STRUCT::messageBusAddress
ULWord64 messageBusAddress
Definition: ntv2publicinterface.h:4721
KSPROPERTY_AJAPROPS_AUTOCIRC_TRANSFER_EX
@ KSPROPERTY_AJAPROPS_AUTOCIRC_TRANSFER_EX
Definition: ntv2winpublicinterface.h:85
AUTOCIRCULATE_DATA::lVal1
LWord lVal1
Definition: ntv2publicinterface.h:4432
IOCTL_AJAPROPS_GETSETREGISTER
#define IOCTL_AJAPROPS_GETSETREGISTER
Definition: ntv2winpublicinterface.h:44
KSPROPERTY_AJAPROPS_GETSETBITFILEINFO_S::Property
KSPROPERTY Property
Definition: ntv2winpublicinterface.h:410
IOCTL_AJANTV2_MESSAGE
#define IOCTL_AJANTV2_MESSAGE
Definition: ntv2baremetalpublicinterface.h:113
AJA_DebugStat_AutoCirculateXfer
@ AJA_DebugStat_AutoCirculateXfer
Definition: debugshare.h:245
eFlushAutoCirculate
@ eFlushAutoCirculate
Definition: ntv2publicinterface.h:4308
KSPROPERTY_AJAPROPS_AUTOCIRC_TRANSFER_EX_S::eCommand
AUTO_CIRC_COMMAND eCommand
Definition: ntv2winpublicinterface.h:374
CNTV2WinDriverInterface::_hDevice
HANDLE _hDevice
Definition: ntv2windriverinterface.h:118
AJA_DebugStat_WaitForInterruptUartTx2
@ AJA_DebugStat_WaitForInterruptUartTx2
Definition: debugshare.h:238
eGetAutoCirc
@ eGetAutoCirc
Definition: ntv2publicinterface.h:4306
KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME_EX2_S::lFrameNum
LWord lFrameNum
Definition: ntv2winpublicinterface.h:340
CNTV2DriverInterface::GetInterruptEvent
virtual HANDLE GetInterruptEvent(const INTERRUPT_ENUMS eInterruptType)
Definition: ntv2driverinterface.cpp:377
CNTV2WinDriverInterface::UnmapXena2Flash
virtual bool UnmapXena2Flash(void)
Definition: ntv2windriverinterface.cpp:707
AUTOCIRCULATE_DATA::lVal2
LWord lVal2
Definition: ntv2publicinterface.h:4433
KSPROPERTY_AJAPROPS_DMA_S::ulFrameNumber
ULWord ulFrameNumber
Definition: ntv2winpublicinterface.h:194
KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_S::bVal2
bool bVal2
Definition: ntv2winpublicinterface.h:278
KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME_EX2_S::frameStamp
FRAME_STAMP_STRUCT frameStamp
Definition: ntv2winpublicinterface.h:341
CNTV2WinDriverInterface::ConfigureSubscription
virtual bool ConfigureSubscription(const bool bSubscribe, const INTERRUPT_ENUMS eInterruptType, PULWord &hSubcription)
Definition: ntv2windriverinterface.cpp:420
PAUTOCIRCULATE_TRANSFER_STATUS_STRUCT
struct AUTOCIRCULATE_TRANSFER_STATUS_STRUCT * PAUTOCIRCULATE_TRANSFER_STATUS_STRUCT
IOCTL_AJAPROPS_MAPMEMORY
#define IOCTL_AJAPROPS_MAPMEMORY
Definition: ntv2winpublicinterface.h:46
AUTOCIRCULATE_TRANSFER_STRUCT::audioBuffer
ULWord * audioBuffer
Definition: ntv2publicinterface.h:4638
KSPROPERTY_AJAPROPS_DMA_P2P_S::ulFrameNumber
ULWord ulFrameNumber
Definition: ntv2winpublicinterface.h:252
NTV2_HEADER
All new NTV2 structs start with this common header.
Definition: ntv2publicinterface.h:7065
WDIFAIL
#define WDIFAIL(__x__)
Definition: ntv2windriverinterface.cpp:140
UWord
uint16_t UWord
Definition: ajatypes.h:253
KSPROPERTY_AJAPROPS_NEWSUBSCRIPTIONS_S::ulIntCount
ULONG ulIntCount
Definition: ntv2winpublicinterface.h:177
PVOID
void * PVOID
Definition: ajatypes.h:318
KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_EX_S::lVal2
LWord lVal2
Definition: ntv2winpublicinterface.h:292
AUTOCIRCULATE_DATA::bVal5
BOOL_ bVal5
Definition: ntv2publicinterface.h:4443
CNTV2WinDriverInterface::DriverSetBitFileInformation
virtual bool DriverSetBitFileInformation(const BITFILE_INFO_STRUCT &inBitfileInfo)
Definition: ntv2windriverinterface.cpp:1425
KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_EX_S::bVal6
bool bVal6
Definition: ntv2winpublicinterface.h:306
IOCTL_AJAPROPS_DMA
#define IOCTL_AJAPROPS_DMA
Definition: ntv2winpublicinterface.h:49
CNTV2WinDriverInterface::MapXena2Flash
virtual bool MapXena2Flash(void)
Definition: ntv2windriverinterface.cpp:680
CNTV2WinDriverInterface::_hDevInfoSet
HDEVINFO _hDevInfoSet
Definition: ntv2windriverinterface.h:117
KSPROPERTY_AJAPROPS_INTERRUPTS_S
Definition: ntv2winpublicinterface.h:147
ntv2winpublicinterface.h
Defines & structs shared between user-space and Windows kernel driver.
KSPROPERTY_AJAPROPS_AUTOCIRC_TRANSFER_EX2_S::acTask
AUTOCIRCULATE_TASK_STRUCT acTask
Definition: ntv2winpublicinterface.h:396
KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME
@ KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME
Definition: ntv2winpublicinterface.h:81
eTransferAutoCirculateEx
@ eTransferAutoCirculateEx
Definition: ntv2publicinterface.h:4313
AUTOCIRCULATE_DATA::lVal4
LWord lVal4
Definition: ntv2publicinterface.h:4435
eStartAutoCirc
@ eStartAutoCirc
Definition: ntv2publicinterface.h:4303
eSetCaptureTask
@ eSetCaptureTask
Definition: ntv2publicinterface.h:4316
KSPROPERTY_AJAPROPS_DMA_EX_S::ulVidNumSegments
ULWord ulVidNumSegments
Definition: ntv2winpublicinterface.h:226
KSPROPERTY_AJAPROPS_MAPMEMORY_S::bMapType
UByte bMapType
Definition: ntv2winpublicinterface.h:136
KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_S::bVal6
bool bVal6
Definition: ntv2winpublicinterface.h:282
hevcMessageHeader
Definition: ntv2publicinterface.h:9953
AUTOCIRCULATE_P2P_STRUCT::videoBusAddress
ULWord64 videoBusAddress
Definition: ntv2publicinterface.h:4720
IOCTL_AJAHEVC_MESSAGE
#define IOCTL_AJAHEVC_MESSAGE
Definition: ntv2winpublicinterface.h:65
AJA_DebugStat_WaitForInterruptUartRx2
@ AJA_DebugStat_WaitForInterruptUartRx2
Definition: debugshare.h:237
AJA_NULL
#define AJA_NULL
Definition: ajatypes.h:199
KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_EX
@ KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_EX
Definition: ntv2winpublicinterface.h:91
KSPROPERTY_AJAPROPS_DMA_P2P_S::Property
KSPROPERTY Property
Definition: ntv2winpublicinterface.h:249
KSPROPERTY_AJAPROPS_DMA_S::ulAudNumBytes
ULWord ulAudNumBytes
Definition: ntv2winpublicinterface.h:198
IOCTL_AJAPROPS_AUTOCIRC_CAPTURE_TASK
#define IOCTL_AJAPROPS_AUTOCIRC_CAPTURE_TASK
Definition: ntv2winpublicinterface.h:60
AUTOCIRCULATE_DATA::bVal1
BOOL_ bVal1
Definition: ntv2publicinterface.h:4439
KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_EX_S::bVal2
bool bVal2
Definition: ntv2winpublicinterface.h:302
KSPROPERTY_AJAPROPS_DMA_P2P_S::dmaEngine
NTV2DMAEngine dmaEngine
Definition: ntv2winpublicinterface.h:250
CNTV2WinDriverInterface::_pspDevIFaceDetailData
PSP_DEVICE_INTERFACE_DETAIL_DATA _pspDevIFaceDetailData
Definition: ntv2windriverinterface.h:115
KSPROPERTY_AJAPROPS_DMA_S::ulVidNumBytes
ULWord ulVidNumBytes
Definition: ntv2winpublicinterface.h:195
KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME_EX2_S::channelSpec
NTV2Crosspoint channelSpec
Definition: ntv2winpublicinterface.h:339
AJAAutoLock
Definition: lock.h:89
KSPROPERTY_AJAPROPS_DMA_EX_S::pvVidUserVa
PVOID pvVidUserVa
Definition: ntv2winpublicinterface.h:219
KSPROPERTY_AJAPROPS_DMA_S
Definition: ntv2winpublicinterface.h:190
CNTV2WinDriverInterface::MapRegisters
virtual bool MapRegisters(void)
Definition: ntv2windriverinterface.cpp:624
KSPROPERTY_AJAPROPS_AUTOCIRC_TRANSFER
@ KSPROPERTY_AJAPROPS_AUTOCIRC_TRANSFER
Definition: ntv2winpublicinterface.h:82
AJA_DebugStat_WaitForInterruptIn7
@ AJA_DebugStat_WaitForInterruptIn7
Definition: debugshare.h:232
AUTOCIRCULATE_DATA::lVal6
LWord lVal6
Definition: ntv2publicinterface.h:4437
KSPROPERTY_AJAPROPS_NEWSUBSCRIPTIONS_S
Added to support 64 bit driver.
Definition: ntv2winpublicinterface.h:173
CNTV2WinDriverInterface::_vecDmaLocked
DMA_LOCKED_VEC _vecDmaLocked
Definition: ntv2windriverinterface.h:124
CNTV2WinDriverInterface::CompleteMemoryForDMA
virtual bool CompleteMemoryForDMA(ULWord *pFrameBuffer)
Definition: ntv2windriverinterface.cpp:812
AJA_DebugStat_WaitForInterruptIn6
@ AJA_DebugStat_WaitForInterruptIn6
Definition: debugshare.h:231
KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_S::lVal2
LWord lVal2
Definition: ntv2winpublicinterface.h:275
KSPROPERTY_AJAPROPS_INTERRUPTS_S::eInterrupt
INTERRUPT_ENUMS eInterrupt
Definition: ntv2winpublicinterface.h:150
KSPROPERTY_AJAPROPS_AUTOCIRC_TRANSFER_EX_S::Property
KSPROPERTY Property
Definition: ntv2winpublicinterface.h:373
KSPROPERTY_AJAPROPS_DMA_P2P_S::ulVidNumBytes
ULWord ulVidNumBytes
Definition: ntv2winpublicinterface.h:254
AUTOCIRCULATE_STATUS_STRUCT
Definition: ntv2publicinterface.h:4371
AJA_DebugStat_WaitForInterruptUartRx1
@ AJA_DebugStat_WaitForInterruptUartRx1
Definition: debugshare.h:235
MAP_MEMORY::Length
ULONG Length
Definition: ntv2winpublicinterface.h:124
DEC
#define DEC(__x__)
Definition: ntv2publicinterface.h:5647
AJAVIDEO_NTV2_PROPSET
#define AJAVIDEO_NTV2_PROPSET
KSPROPERTY_AJAPROPS_NEWSUBSCRIPTIONS
@ KSPROPERTY_AJAPROPS_NEWSUBSCRIPTIONS
Definition: ntv2winpublicinterface.h:84
AUTOCIRCULATE_P2P_STRUCT::messageData
ULWord messageData
Definition: ntv2publicinterface.h:4723
NTV2RegInfo
Everything needed to call CNTV2Card::ReadRegister or CNTV2Card::WriteRegister functions.
Definition: ntv2publicinterface.h:3977
KSPROPERTY_AJAPROPS_DMA_S::dmaEngine
NTV2DMAEngine dmaEngine
Definition: ntv2winpublicinterface.h:192
CNTV2DriverInterface::_pRegisterBaseAddressLength
ULWord _pRegisterBaseAddressLength
Definition: ntv2driverinterface.h:698
IOCTL_AJAPROPS_AUTOCIRC_TRANSFER_EX
#define IOCTL_AJAPROPS_AUTOCIRC_TRANSFER_EX
Definition: ntv2winpublicinterface.h:56
KSPROPERTY_AJAPROPS_GETSETBITFILEINFO
@ KSPROPERTY_AJAPROPS_GETSETBITFILEINFO
Definition: ntv2winpublicinterface.h:90
KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_S::bVal8
bool bVal8
Definition: ntv2winpublicinterface.h:284
KSPROPERTY_AJAPROPS_DMA_EX_S::ulVidSegmentHostPitch
ULWord ulVidSegmentHostPitch
Definition: ntv2winpublicinterface.h:227
KSPROPERTY_AJAPROPS_AUTOCIRC_TRANSFER_EX_S::acTransferRoute
NTV2RoutingTable acTransferRoute
Definition: ntv2winpublicinterface.h:377
AJA_DebugStat_WaitForInterruptOut1
@ AJA_DebugStat_WaitForInterruptOut1
Definition: debugshare.h:234
CNTV2DriverInterface::ConfigureSubscription
virtual bool ConfigureSubscription(const bool bSubscribe, const INTERRUPT_ENUMS inInterruptType, PULWord &outSubcriptionHdl)
Definition: ntv2driverinterface.cpp:390
KSPROPERTY_AJAPROPS_DMA
@ KSPROPERTY_AJAPROPS_DMA
Definition: ntv2winpublicinterface.h:78
KSPROPERTY_AJAPROPS_DMA_P2P_S::dmaChannel
NTV2Channel dmaChannel
Definition: ntv2winpublicinterface.h:251
KSPROPERTY_AJAPROPS_DMA_EX
@ KSPROPERTY_AJAPROPS_DMA_EX
Definition: ntv2winpublicinterface.h:86
AUTO_CIRC_NUM_COMMANDS
@ AUTO_CIRC_NUM_COMMANDS
Definition: ntv2publicinterface.h:4318
ULWord64
uint64_t ULWord64
Definition: ajatypes.h:258
CNTV2WinDriverInterface::_GUID_PROPSET
GUID _GUID_PROPSET
Definition: ntv2windriverinterface.h:119
std
Definition: json.hpp:5362
KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_EX_S::bVal1
bool bVal1
Definition: ntv2winpublicinterface.h:301
KSPROPERTY_AJAPROPS_DMA_P2P_S::ulVidSegmentHostPitch
ULWord ulVidSegmentHostPitch
Definition: ntv2winpublicinterface.h:256
KSPROPERTY_AJAPROPS_GETSETREGISTER_S
Definition: ntv2winpublicinterface.h:105
AUTOCIRCULATE_TRANSFER_STATUS_STRUCT
Definition: ntv2publicinterface.h:4581
KSPROPERTY_AJAPROPS_AUTOCIRC_STATUS_S::channelSpec
NTV2Crosspoint channelSpec
Definition: ntv2winpublicinterface.h:322
ePauseAutoCirc
@ ePauseAutoCirc
Definition: ntv2publicinterface.h:4305
CNTV2DriverInterface::_pCh1FrameBaseAddress
ULWord * _pCh1FrameBaseAddress
Definition: ntv2driverinterface.h:700
eInitAutoCirc
@ eInitAutoCirc
Definition: ntv2publicinterface.h:4302
AUTOCIRCULATE_P2P_STRUCT
Definition: ntv2publicinterface.h:4716
MAP_MEMORY::Address
void * Address
Definition: ntv2winpublicinterface.h:123
KSPROPERTY_AJAPROPS_MAPMEMORY_S::mapMemory
MAP_MEMORY mapMemory
Definition: ntv2winpublicinterface.h:135
KSPROPERTY_AJAPROPS_AUTOCIRC_CAPTURE_TASK
@ KSPROPERTY_AJAPROPS_AUTOCIRC_CAPTURE_TASK
Definition: ntv2winpublicinterface.h:89
eStopAutoCirc
@ eStopAutoCirc
Definition: ntv2publicinterface.h:4304
KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_S::bVal7
bool bVal7
Definition: ntv2winpublicinterface.h:283
PAUTOCIRCULATE_TRANSFER_STRUCT
struct AUTOCIRCULATE_TRANSFER_STRUCT * PAUTOCIRCULATE_TRANSFER_STRUCT
KSPROPERTY_AJAPROPS_AUTOCIRC_TRANSFER_S
Definition: ntv2winpublicinterface.h:356
eGetFrameStampEx2
@ eGetFrameStampEx2
Definition: ntv2publicinterface.h:4315
KSPROPERTY_AJAPROPS_NEWSUBSCRIPTIONS_S::Property
KSPROPERTY Property
Definition: ntv2winpublicinterface.h:174
CNTV2WinDriverInterface::DmaUnlock
virtual bool DmaUnlock(void)
Definition: ntv2windriverinterface.cpp:764
KSPROPERTY_AJAPROPS_AUTOCIRC_TRANSFER_EX2
@ KSPROPERTY_AJAPROPS_AUTOCIRC_TRANSFER_EX2
Definition: ntv2winpublicinterface.h:87
IOCTL_AJAPROPS_AUTOCIRC_TRANSFER
#define IOCTL_AJAPROPS_AUTOCIRC_TRANSFER
Definition: ntv2winpublicinterface.h:53
KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_EX_S::bVal7
bool bVal7
Definition: ntv2winpublicinterface.h:307
CNTV2DriverInterface::mRecordRegWrites
bool mRecordRegWrites
True if recording; otherwise false when not recording.
Definition: ntv2driverinterface.h:684
AJA_DebugStat_WriteRegister
@ AJA_DebugStat_WriteRegister
Definition: debugshare.h:225
AUTOCIRCULATE_DATA::bVal4
BOOL_ bVal4
Definition: ntv2publicinterface.h:4442
KSPROPERTY_AJAPROPS_AUTOCIRC_TRANSFER_S::Property
KSPROPERTY Property
Definition: ntv2winpublicinterface.h:357
KSPROPERTY_AJAPROPS_GETSETREGISTER_S::ulRegisterValue
ULONG ulRegisterValue
Definition: ntv2winpublicinterface.h:108
ntv2nubtypes.h
Declares data types and structures used in NTV2 "nub" packets.
eSetActiveFrame
@ eSetActiveFrame
Definition: ntv2publicinterface.h:4317
KSPROPERTY_AJAPROPS_GETSETBITFILEINFO_S::bitFileInfoStruct
BITFILE_INFO_STRUCT bitFileInfoStruct
Definition: ntv2winpublicinterface.h:411
KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_EX_S::bVal8
bool bVal8
Definition: ntv2winpublicinterface.h:308
NTV2_MAPMEMORY_REGISTER
@ NTV2_MAPMEMORY_REGISTER
Definition: ntv2winpublicinterface.h:118
KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME_EX2
@ KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME_EX2
Definition: ntv2winpublicinterface.h:88
AJA_DebugStat_DMATransfer
@ AJA_DebugStat_DMATransfer
Definition: debugshare.h:241
KSPROPERTY_AJAPROPS_DMA_P2P
@ KSPROPERTY_AJAPROPS_DMA_P2P
Definition: ntv2winpublicinterface.h:92
KSPROPERTY_AJAPROPS_AUTOCIRC_TRANSFER_S::eCommand
AUTO_CIRC_COMMAND eCommand
Definition: ntv2winpublicinterface.h:358
AUTOCIRCULATE_TASK_STRUCT
Definition: ntv2publicinterface.h:4814
KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME_S::channelSpec
NTV2Crosspoint channelSpec
Definition: ntv2winpublicinterface.h:331
KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_EX_S::lVal6
LWord lVal6
Definition: ntv2winpublicinterface.h:296
AUTOCIRCULATE_DATA::bVal8
BOOL_ bVal8
Definition: ntv2publicinterface.h:4446
ntv2publicinterface.h
Declares enums and structs used by all platform drivers and the SDK.
CNTV2WinDriverInterface::_spDevInfoData
SP_DEVINFO_DATA _spDevInfoData
Definition: ntv2windriverinterface.h:116
KSPROPERTY_AJAPROPS_DMA_EX_S::ulAudNumBytes
ULWord ulAudNumBytes
Definition: ntv2winpublicinterface.h:224
NTV2_PIO
@ NTV2_PIO
Definition: ntv2enums.h:1844
KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_EX_S::bVal5
bool bVal5
Definition: ntv2winpublicinterface.h:305
CNTV2DriverInterface::AutoCirculate
virtual bool AutoCirculate(AUTOCIRCULATE_DATA &pAutoCircData)
Sends an AutoCirculate command to the NTV2 driver.
Definition: ntv2driverinterface.cpp:589
CNTV2WinDriverInterface::RestoreHardwareProcampRegisters
virtual bool RestoreHardwareProcampRegisters(void)
Definition: ntv2windriverinterface.cpp:1445
CNTV2WinDriverInterface::OpenLocalPhysical
virtual bool OpenLocalPhysical(const UWord inDeviceIndex)
Opens the local/physical device connection.
Definition: ntv2windriverinterface.cpp:173
CNTV2DriverInterface::GetShareMode
static bool GetShareMode(void)
Definition: ntv2driverinterface.cpp:64
CNTV2DriverInterface::_pRegisterBaseAddress
ULWord * _pRegisterBaseAddress
Definition: ntv2driverinterface.h:697
CNTV2DriverInterface::mRegWritesLock
AJALock mRegWritesLock
Guard mutex for mRegWrites.
Definition: ntv2driverinterface.h:693
KSPROPERTY_AJAPROPS_AUTOCIRC_TRANSFER_EX2_S::Property
KSPROPERTY Property
Definition: ntv2winpublicinterface.h:391
KSPROPERTY_AJAPROPS_GETSETREGISTER_S::ulRegisterMask
ULONG ulRegisterMask
Definition: ntv2winpublicinterface.h:109
eTransferAutoCirculateEx2
@ eTransferAutoCirculateEx2
Definition: ntv2publicinterface.h:4314
AUTOCIRCULATE_DATA::bVal7
BOOL_ bVal7
Definition: ntv2publicinterface.h:4445
KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_S::bVal3
bool bVal3
Definition: ntv2winpublicinterface.h:279
xHEX0N
#define xHEX0N(__x__, __n__)
Definition: ntv2publicinterface.h:5646
CNTV2DriverInterface::BumpEventCount
virtual void BumpEventCount(const INTERRUPT_ENUMS eInterruptType)
Atomically increments the event count tally for the given interrupt type.
Definition: ntv2driverinterface.cpp:1308
AUTOCIRCULATE_DATA::pvVal1
void * pvVal1
Definition: ntv2publicinterface.h:4448
KSPROPERTY_AJAPROPS_AUTOCIRC_STATUS_S::Property
KSPROPERTY Property
Definition: ntv2winpublicinterface.h:320
KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_S
Definition: ntv2winpublicinterface.h:270
AJA_DebugStat_WaitForInterruptIn1
@ AJA_DebugStat_WaitForInterruptIn1
Definition: debugshare.h:226
KSPROPERTY_AJAPROPS_AUTOCIRC_TRANSFER_EX2_S::acTransfer
AUTOCIRCULATE_TRANSFER_STRUCT acTransfer
Definition: ntv2winpublicinterface.h:393
KSPROPERTY_AJAPROPS_DMA_P2P_S::ulVidSegmentCardPitch
ULWord ulVidSegmentCardPitch
Definition: ntv2winpublicinterface.h:257
KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME_EX2_S::acTask
AUTOCIRCULATE_TASK_STRUCT acTask
Definition: ntv2winpublicinterface.h:342
AJA_DebugStat_WaitForInterruptIn3
@ AJA_DebugStat_WaitForInterruptIn3
Definition: debugshare.h:228
kVRegRestoreHardwareProcampRegisters
@ kVRegRestoreHardwareProcampRegisters
Definition: ntv2virtualregisters.h:65
INVALID_HANDLE_VALUE
#define INVALID_HANDLE_VALUE
Definition: ajatypes.h:331
NTV2_MAPMEMORY_FRAMEBUFFER
@ NTV2_MAPMEMORY_FRAMEBUFFER
Definition: ntv2winpublicinterface.h:117
AUTOCIRCULATE_DATA::pvVal2
void * pvVal2
Definition: ntv2publicinterface.h:4449
CNTV2DriverInterface::NTV2Message
virtual bool NTV2Message(NTV2_HEADER *pInMessage)
Sends a message to the NTV2 driver (the new, improved, preferred way).
Definition: ntv2driverinterface.cpp:614
AJA_DebugStat_WaitForInterruptIn4
@ AJA_DebugStat_WaitForInterruptIn4
Definition: debugshare.h:229
CNTV2DriverInterface::_pFrameBaseAddress
ULWord * _pFrameBaseAddress
Definition: ntv2driverinterface.h:696
CNTV2DriverInterface::DriverGetBitFileInformation
virtual bool DriverGetBitFileInformation(BITFILE_INFO_STRUCT &outBitFileInfo, const NTV2BitFileType inBitFileType=NTV2_VideoProcBitFile)
Answers with the currently-installed bitfile information.
Definition: ntv2driverinterface.cpp:627
KSPROPERTY_AJAPROPS_DMA_S::bSync
bool bSync
Definition: ntv2winpublicinterface.h:200
BITFILE_INFO_STRUCT
Definition: ntv2publicinterface.h:4862
IOCTL_AJAPROPS_NEWSUBSCRIPTIONS
#define IOCTL_AJAPROPS_NEWSUBSCRIPTIONS
Definition: ntv2winpublicinterface.h:55
CNTV2WinDriverInterface::GetInterruptCount
virtual bool GetInterruptCount(const INTERRUPT_ENUMS eInterrupt, ULWord &outCount)
Answers with the number of interrupts of the given type processed by the driver.
Definition: ntv2windriverinterface.cpp:468
KR
#define KR(_kr_)
Definition: ntv2windriverinterface.cpp:137
CNTV2DriverInterface::Close
virtual bool Close(void)
Closes me, releasing host resources that may have been allocated in a previous Open call.
Definition: ntv2driverinterface.cpp:227
debug.h
Declares the AJADebug class.
CNTV2WinDriverInterface::WriteRegister
virtual bool WriteRegister(const ULWord inRegNum, const ULWord inValue, const ULWord inMask=0xFFFFFFFF, const ULWord inShift=0)
Physical device implementation of CNTV2DriverInterface::WriteRegister.
Definition: ntv2windriverinterface.cpp:338
AUTOCIRCULATE_DATA
Definition: ntv2publicinterface.h:4427
KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_EX_S::channelSpec
NTV2Crosspoint channelSpec
Definition: ntv2winpublicinterface.h:290
KSPROPERTY_AJAPROPS_DMA_S::ulFrameOffset
ULWord ulFrameOffset
Definition: ntv2winpublicinterface.h:196
AJA_DebugStat_WaitForInterruptIn5
@ AJA_DebugStat_WaitForInterruptIn5
Definition: debugshare.h:230
AUTOCIRCULATE_P2P_STRUCT::p2pSize
ULWord p2pSize
Definition: ntv2publicinterface.h:4718
KSPROPERTY_AJAPROPS_AUTOCIRC_TRANSFER_EX_S
Definition: ntv2winpublicinterface.h:372
KSPROPERTY_AJAPROPS_NEWSUBSCRIPTIONS_S::Handle
HANDLE Handle
Definition: ntv2winpublicinterface.h:175
KSPROPERTY_AJAPROPS_DMA_P2P_S::ullVideoBusAddress
ULWord64 ullVideoBusAddress
Definition: ntv2winpublicinterface.h:258