AJA NTV2 SDK  17.6.0.1664
NTV2 SDK 17.6.0.1664
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 #if 0 // Fake KONAIP25G from C4412G (see also NTV2GetRegisters::GetRegisterValues):
332  if (inRegNum == kRegBoardID && outValue == DEVICE_ID_CORVID44_8K)
333  outValue = DEVICE_ID_KONAIP_25G;
334  else if (inRegNum == kRegReserved83 || inRegNum == kRegLPRJ45IP)
335  outValue = 0x0A03FAD9; // Local IPv4 10.3.250.217
336 #endif // 0
337  return true;
338  }
339  WDIFAIL("reg=" << DEC(inRegNum) << " val=" << xHEX0N(outValue,8) << " msk=" << xHEX0N(inMask,8) << " shf=" << DEC(inShift) << " failed: " << ::GetKernErrStr(GetLastError()));
340  return false;
341 }
342 
343 
344 bool CNTV2WinDriverInterface::WriteRegister (const ULWord inRegNum, const ULWord inValue, const ULWord inMask, const ULWord inShift)
345 {
346  if (inShift >= 32)
347  {
348  WDIFAIL("Shift " << DEC(inShift) << " > 31, reg=" << DEC(inRegNum) << " msk=" << xHEX0N(inMask,8));
349  return false;
350  }
351 #if defined(NTV2_WRITEREG_PROFILING) // Register Write Profiling
352  if (mRecordRegWrites)
353  {
354  AJAAutoLock autoLock(&mRegWritesLock);
355  mRegWrites.push_back(NTV2RegInfo(inRegNum, inValue, inMask, inShift));
356  if (mSkipRegWrites)
357  return true;
358  }
359 #endif // defined(NTV2_WRITEREG_PROFILING) // Register Write Profiling
360 #if defined(NTV2_NUB_CLIENT_SUPPORT)
361  if (IsRemote())
362  return CNTV2DriverInterface::WriteRegister(inRegNum, inValue, inMask, inShift);
363 #endif // defined(NTV2_NUB_CLIENT_SUPPORT)
364  if (!IsOpen())
365  return false;
367  DWORD dwBytesReturned = 0;
368  NTV2_ASSERT(inShift < 32);
369 
370  ZeroMemory(&propStruct,sizeof(KSPROPERTY_AJAPROPS_GETSETREGISTER_S));
371  propStruct.Property.Set = _GUID_PROPSET;
373  propStruct.Property.Flags = KSPROPERTY_TYPE_SET;
374  propStruct.RegisterID = inRegNum;
375  propStruct.ulRegisterValue = inValue;
376  propStruct.ulRegisterMask = inMask;
377  propStruct.ulRegisterShift = inShift;
379  const bool ok = DeviceIoControl(_hDevice, IOCTL_AJAPROPS_GETSETREGISTER, &propStruct, sizeof(KSPROPERTY_AJAPROPS_GETSETREGISTER_S),
380  &propStruct, sizeof(KSPROPERTY_AJAPROPS_GETSETREGISTER_S), &dwBytesReturned, NULL);
382  if (!ok)
383  {
384  WDIFAIL("reg=" << DEC(inRegNum) << " val=" << xHEX0N(inValue,8) << " msk=" << xHEX0N(inMask,8) << " shf=" << DEC(inShift) << " failed: " << ::GetKernErrStr(GetLastError()));
385  return false;
386  }
387  return true;
388 }
389 
391 // Interrupt enabling / disabling method
393 
394 // Method: ConfigureInterrupt
395 // Input: bool bEnable (turn on/off interrupt), INTERRUPT_ENUMS eInterruptType
396 // Output: bool status
397 // Purpose: Provides a 1 point connection to driver for interrupt calls
398 bool CNTV2WinDriverInterface::ConfigureInterrupt (const bool bEnable, const INTERRUPT_ENUMS eInterruptType)
399 {
400  if (IsRemote())
401  return false;
402  if (!IsOpen())
403  return false;
404  KSPROPERTY_AJAPROPS_INTERRUPTS_S propStruct; // boilerplate AVStream Property structure
405  DWORD dwBytesReturned = 0;
406  ZeroMemory (&propStruct,sizeof(KSPROPERTY_AJAPROPS_INTERRUPTS_S));
407  propStruct.Property.Set = _GUID_PROPSET;
409  propStruct.Property.Flags = bEnable ? KSPROPERTY_TYPE_GET : KSPROPERTY_TYPE_SET;
410  propStruct.eInterrupt = eInterruptType;
411 
412  if (!DeviceIoControl (_hDevice, IOCTL_AJAPROPS_INTERRUPTS, &propStruct, sizeof(KSPROPERTY_AJAPROPS_INTERRUPTS_S),
413  &propStruct, sizeof(KSPROPERTY_AJAPROPS_INTERRUPTS_S), &dwBytesReturned, NULL))
414  {
415  WDIFAIL("interruptType=" << DEC(eInterruptType) << " enable=" << (bEnable?"Y":"N") << " failed: " << ::GetKernErrStr(GetLastError()));
416  return false;
417  }
418  return true;
419 }
420 
421 // Method: ConfigureSubscriptions
422 // Input: bool bSubscribe (true if subscribing), INTERRUPT_ENUMS eInterruptType,
423 // HANDLE & hSubcription
424 // Output: HANDLE & hSubcription (if subscribing)
425 // Notes: collects all driver calls for subscriptions in one place
426 bool CNTV2WinDriverInterface::ConfigureSubscription (const bool bSubscribe, const INTERRUPT_ENUMS eInterruptType, PULWord & outSubscriptionHdl)
427 {
428  if (!IsOpen() && !IsRemote())
429  return false;
430  bool res(CNTV2DriverInterface::ConfigureSubscription (bSubscribe, eInterruptType, outSubscriptionHdl));
431  if (IsRemote())
432  return res;
433  // Check for previouse call to subscribe
434  if (bSubscribe && outSubscriptionHdl)
435  return true; // Already subscribed
436 
437  // Check for valid handle to unsubscribe
438  if (!bSubscribe && !outSubscriptionHdl)
439  return true; // Already unsubscribed
440 
441  // Assure that the avCard has been properly opened
442  HANDLE hSubscription = bSubscribe ? CreateEvent (NULL, FALSE, FALSE, NULL) : HANDLE(outSubscriptionHdl);
444  DWORD dwBytesReturned = 0;
445 
446  ZeroMemory (&propStruct,sizeof(KSPROPERTY_AJAPROPS_NEWSUBSCRIPTIONS_S));
447  propStruct.Property.Set = _GUID_PROPSET;
449  propStruct.Property.Flags = bSubscribe ? KSPROPERTY_TYPE_GET : KSPROPERTY_TYPE_SET;
450  propStruct.Handle = hSubscription;
451  propStruct.eInterrupt = eInterruptType;
452 
453  BOOL bRet = DeviceIoControl (_hDevice, IOCTL_AJAPROPS_NEWSUBSCRIPTIONS, &propStruct, sizeof(KSPROPERTY_AJAPROPS_NEWSUBSCRIPTIONS_S),
454  &propStruct, sizeof(KSPROPERTY_AJAPROPS_NEWSUBSCRIPTIONS_S), &dwBytesReturned, NULL);
455  if ((!bSubscribe && bRet) || (bSubscribe && !bRet))
456  {
457  CloseHandle(hSubscription);
458  outSubscriptionHdl = 0;
459  }
460 
461  if (!bRet)
462  {
463  WDIFAIL("interruptType=" << DEC(eInterruptType) << " subscribe=" << (bSubscribe?"Y":"N") << " failed: " << ::GetKernErrStr(GetLastError()));
464  return false;
465  }
466  if (bSubscribe)
467  outSubscriptionHdl = PULWord(hSubscription);
468  return true;
469 }
470 
471 // Method: getInterruptCount
472 // Input: NONE
473 // Output: ULONG or equivalent(i.e. ULWord).
475 {
476 #if defined(NTV2_NUB_CLIENT_SUPPORT)
477  if (IsRemote())
478  return false;
479 #endif // defined(NTV2_NUB_CLIENT_SUPPORT)
480  if (!IsOpen())
481  return false;
483  DWORD dwBytesReturned = 0;
484  ZeroMemory (&propStruct,sizeof(KSPROPERTY_AJAPROPS_NEWSUBSCRIPTIONS_S));
485  propStruct.Property.Set = _GUID_PROPSET;
487  propStruct.Property.Flags = KSPROPERTY_TYPE_GET;
488  propStruct.eInterrupt = eGetIntCount;
489  propStruct.ulIntCount = ULONG(eInterruptType);
491  const bool ok = DeviceIoControl (_hDevice, IOCTL_AJAPROPS_NEWSUBSCRIPTIONS, &propStruct, sizeof(KSPROPERTY_AJAPROPS_NEWSUBSCRIPTIONS_S),
492  &propStruct, sizeof(KSPROPERTY_AJAPROPS_NEWSUBSCRIPTIONS_S), &dwBytesReturned, NULL);
494  if (!ok)
495  {
496  WDIFAIL("interruptType=" << DEC(eInterruptType) << " failed: " << ::GetKernErrStr(GetLastError()));
497  return false;
498  }
499  outCount = propStruct.ulIntCount;
500  return true;
501 }
502 
503 static const uint32_t sIntEnumToStatKeys[] = { AJA_DebugStat_WaitForInterruptOut1, // eOutput1 // 0
505  AJA_DebugStat_WaitForInterruptIn1, // eInput1 // 2
506  AJA_DebugStat_WaitForInterruptIn2, // eInput2 // 3
508  AJA_DebugStat_WaitForInterruptUartTx1, // eUart1Tx // 14
509  AJA_DebugStat_WaitForInterruptUartRx1, // eUart1Rx // 15
511  AJA_DebugStat_WaitForInterruptIn3, // eInput3 // 24
512  AJA_DebugStat_WaitForInterruptIn4, // eInput4 // 25
513  AJA_DebugStat_WaitForInterruptUartTx2, // eUartTx2 // 26
514  AJA_DebugStat_WaitForInterruptUartRx2, // eUartRx2 // 27
516  AJA_DebugStat_WaitForInterruptIn5, // eInput5 // 29
517  AJA_DebugStat_WaitForInterruptIn6, // eInput6 // 30
518  AJA_DebugStat_WaitForInterruptIn7, // eInput7 // 31
519  AJA_DebugStat_WaitForInterruptIn8, // eInput8 // 32
521 
522 bool CNTV2WinDriverInterface::WaitForInterrupt (const INTERRUPT_ENUMS eInterruptType, const ULWord timeOutMs)
523 {
524 #if defined(NTV2_NUB_CLIENT_SUPPORT)
525  if (IsRemote())
526  return CNTV2DriverInterface::WaitForInterrupt(eInterruptType,timeOutMs);
527 #endif // defined(NTV2_NUB_CLIENT_SUPPORT)
528  if (!IsOpen())
529  return false;
530  if (!NTV2_IS_VALID_INTERRUPT_ENUM(eInterruptType))
531  return false;
532  bool bInterruptHappened = false; // return value
533 
534  HANDLE hEvent (GetInterruptEvent(eInterruptType));
535  if (NULL == hEvent)
536  {
537  // no interrupt hooked up so just use Sleep function
538  Sleep (timeOutMs);
539  }
540  else
541  {
542  // interrupt hooked up. Wait
544  DWORD status = WaitForSingleObject(hEvent, timeOutMs);
546  if ( status == WAIT_OBJECT_0 )
547  {
548  bInterruptHappened = true;
549  BumpEventCount (eInterruptType);
550  }
551  else
552  {
553  ;//MessageBox (0, "WaitForInterrupt timed out", "CNTV2WinDriverInterface", MB_ICONERROR | MB_OK);
554  }
555  }
556  return bInterruptHappened;
557 }
558 
560 // OEM Mapping to Userspace Methods
562 
563 #if !defined(NTV2_DEPRECATE_16_0)
564  // Method: MapFrameBuffers
566  {
567  if (IsRemote())
568  return false;
569  if (!IsOpen())
570  return false;
572  DWORD dwBytesReturned = 0;
573  _pFrameBaseAddress = 0;
575  ZeroMemory (&propStruct,sizeof(KSPROPERTY_AJAPROPS_MAPMEMORY_S));
576  propStruct.Property.Set = _GUID_PROPSET;
577  propStruct.Property.Id = KSPROPERTY_AJAPROPS_MAPMEMORY;
578  propStruct.Property.Flags = KSPROPERTY_TYPE_GET;
580 
581  if (!DeviceIoControl(_hDevice, IOCTL_AJAPROPS_MAPMEMORY, &propStruct, sizeof(KSPROPERTY_AJAPROPS_MAPMEMORY_S),
582  &propStruct, sizeof(KSPROPERTY_AJAPROPS_MAPMEMORY_S), &dwBytesReturned, NULL))
583  {
584  WDIFAIL("failed: " << ::GetKernErrStr(GetLastError()));
585  return false;
586  }
587  ULWord boardIDRegister;
588  ReadRegister(kRegBoardID, boardIDRegister); //unfortunately GetBoardID is in ntv2card...ooops.
589  _pFrameBaseAddress = (ULWord *) propStruct.mapMemory.Address;
592  return true;
593  }
594 
595  // Method: UnmapFrameBuffers
597  {
598  if (IsRemote())
599  return false;
600  if (!IsOpen())
601  return false;
602  ULWord boardIDRegister;
603  ReadRegister(kRegBoardID, boardIDRegister); //unfortunately GetBoardID is in ntv2card...ooops.
604  ULWord * pFrameBaseAddress;
605  pFrameBaseAddress = _pFrameBaseAddress;
606  if (!pFrameBaseAddress)
607  return true;
608 
610  DWORD dwBytesReturned = 0;
611  ZeroMemory (&propStruct,sizeof(KSPROPERTY_AJAPROPS_MAPMEMORY_S));
612  propStruct.Property.Set = _GUID_PROPSET;
613  propStruct.Property.Id = KSPROPERTY_AJAPROPS_MAPMEMORY;
614  propStruct.Property.Flags = KSPROPERTY_TYPE_SET;
616  propStruct.mapMemory.Address = pFrameBaseAddress;
617  BOOL fRet = DeviceIoControl (_hDevice, IOCTL_AJAPROPS_MAPMEMORY, &propStruct, sizeof(KSPROPERTY_AJAPROPS_MAPMEMORY_S),
618  &propStruct, sizeof(KSPROPERTY_AJAPROPS_MAPMEMORY_S), &dwBytesReturned, NULL);
619  _pFrameBaseAddress = 0;
622  if (fRet)
623  return true;
624 
625  WDIFAIL("failed: " << ::GetKernErrStr(GetLastError()));
626  return false;
627  }
628 
629  // Method: MapRegisters
631  {
632  if (IsRemote())
633  return false;
634  if (!IsOpen())
635  return false;
637  DWORD dwBytesReturned = 0;
640  ZeroMemory (&propStruct,sizeof(KSPROPERTY_AJAPROPS_MAPMEMORY_S));
641  propStruct.Property.Set=_GUID_PROPSET;
643  propStruct.Property.Flags = KSPROPERTY_TYPE_GET;
644  propStruct.bMapType = NTV2_MAPMEMORY_REGISTER;
645  if (!DeviceIoControl (_hDevice, IOCTL_AJAPROPS_MAPMEMORY, &propStruct, sizeof(KSPROPERTY_AJAPROPS_MAPMEMORY_S),
646  &propStruct, sizeof(KSPROPERTY_AJAPROPS_MAPMEMORY_S), &dwBytesReturned, NULL))
647  {
648  WDIFAIL("failed: " << ::GetKernErrStr(GetLastError()));
649  return false;
650  }
651 
654  return true;
655  }
656 
657  // Method: UnmapRegisters
659  {
660  if (IsRemote())
661  return false;
662  if (!IsOpen())
663  return false;
664  if (_pRegisterBaseAddress == 0)
665  return true;
666 
668  DWORD dwBytesReturned = 0;
669  ZeroMemory (&propStruct,sizeof(KSPROPERTY_AJAPROPS_MAPMEMORY_S));
670  propStruct.Property.Set = _GUID_PROPSET;
671  propStruct.Property.Id = KSPROPERTY_AJAPROPS_MAPMEMORY;
672  propStruct.Property.Flags = KSPROPERTY_TYPE_SET;
673  propStruct.bMapType = NTV2_MAPMEMORY_REGISTER;
675  BOOL fRet = DeviceIoControl(_hDevice, IOCTL_AJAPROPS_MAPMEMORY, &propStruct, sizeof(KSPROPERTY_AJAPROPS_MAPMEMORY_S),
676  &propStruct, sizeof(KSPROPERTY_AJAPROPS_MAPMEMORY_S), &dwBytesReturned, NULL);
679  if (fRet)
680  return true;
681  WDIFAIL("failed: " << ::GetKernErrStr(GetLastError()));
682  return false;
683  }
684 
685  // Method: MapXena2Flash
687  {
688  if (IsRemote())
689  return false;
690  if (!IsOpen())
691  return false;
693  DWORD dwBytesReturned = 0;
696  ZeroMemory (&propStruct,sizeof(KSPROPERTY_AJAPROPS_MAPMEMORY_S));
697  propStruct.Property.Set = _GUID_PROPSET;
698  propStruct.Property.Id = KSPROPERTY_AJAPROPS_MAPMEMORY;
699  propStruct.Property.Flags = KSPROPERTY_TYPE_GET;
701  if (!DeviceIoControl (_hDevice, IOCTL_AJAPROPS_MAPMEMORY, &propStruct, sizeof(KSPROPERTY_AJAPROPS_MAPMEMORY_S),
702  &propStruct, sizeof(KSPROPERTY_AJAPROPS_MAPMEMORY_S), &dwBytesReturned, NULL))
703  {
704  WDIFAIL("failed: " << ::GetKernErrStr(GetLastError()));
705  return false;
706  }
709  return true;
710  }
711 
712  // Method: UnmapXena2Flash
714  {
715  if (IsRemote())
716  return false;
717  if (!IsOpen())
718  return false;
719  if (_pRegisterBaseAddress == 0)
720  return true;
721 
723  DWORD dwBytesReturned = 0;
724  ZeroMemory (&propStruct,sizeof(KSPROPERTY_AJAPROPS_MAPMEMORY_S));
725  propStruct.Property.Set = _GUID_PROPSET;
726  propStruct.Property.Id = KSPROPERTY_AJAPROPS_MAPMEMORY;
727  propStruct.Property.Flags = KSPROPERTY_TYPE_SET;
730  BOOL fRet = DeviceIoControl (_hDevice, IOCTL_AJAPROPS_MAPMEMORY, &propStruct, sizeof(KSPROPERTY_AJAPROPS_MAPMEMORY_S),
731  &propStruct, sizeof(KSPROPERTY_AJAPROPS_MAPMEMORY_S), &dwBytesReturned, NULL);
734  if (fRet)
735  return true;
736  WDIFAIL("failed: " << ::GetKernErrStr(GetLastError()));
737  return false;
738  }
739 
740  bool CNTV2WinDriverInterface::MapMemory (PVOID pvUserVa, ULWord ulNumBytes, bool bMap, ULWord* ulUser)
741  {
742  if (IsRemote())
743  return false;
744  if (!IsOpen())
745  return false;
746 
747  KSPROPERTY_AJAPROPS_DMA_S propStruct;
748  DWORD dwBytesReturned = 0;
749  ZeroMemory (&propStruct,sizeof(KSPROPERTY_AJAPROPS_DMA_S));
750  propStruct.Property.Set = _GUID_PROPSET;
751  propStruct.Property.Id = KSPROPERTY_AJAPROPS_DMA;
752  propStruct.Property.Flags = bMap ? KSPROPERTY_TYPE_GET : KSPROPERTY_TYPE_SET;
753  propStruct.dmaEngine = NTV2_PIO;
754  propStruct.pvVidUserVa = pvUserVa;
755  propStruct.ulVidNumBytes = ulNumBytes;
756  if (!DeviceIoControl (_hDevice, IOCTL_AJAPROPS_DMA, &propStruct, sizeof(KSPROPERTY_AJAPROPS_DMA_S),
757  &propStruct, sizeof(KSPROPERTY_AJAPROPS_DMA_S), &dwBytesReturned, NULL))
758  {
759  WDIFAIL (KR(GetLastError()) << " -- numBytes=" << ulNumBytes << " map=" << (bMap?"Y":"N"));
760  return false;
761  }
762  if (ulUser)
763  *ulUser = propStruct.ulFrameOffset;
764  return true;
765  }
766 
767  // DmaUnlock
768  // Called from avclasses destructor to insure the process isn't terminating
769  // with memory still locked - a guaranteed cause of a blue screen
771  {
772  if (!IsOpen())
773  return false;
774  if (IsRemote())
775  return false;
776  // For every locked entry, try to free it
777  for (size_t ndx(0); ndx < _vecDmaLocked.size(); ndx++)
779 
780  NTV2_ASSERT(_vecDmaLocked.empty() && "_vecDmaLocked should be empty");
781  return true;
782  }
783 
785  // PrepareMemoryForDMA
786  // Passes the address of a user space allocated frame buffer and the buffer's size to the
787  // kernel, where the kernel
788  // creates a MDL and probes & locks the memory. The framebuffer's userspace address is saved
789  // in the kernel, and all subsequent DMA calls to this address will avoid the time penalties
790  // of the MDL creation and the probe & lock.
791  // NOTE: When this method is used to lock new()ed memory, this memory *should*
792  // be unlocked with the CompleteMemoryForDMA() method before calling delete(). The avclasses
793  // destructor does call DmaUnlock() which attempts to unlock all locked pages with calls
794  // to CompleteMemoryForDMA().
795  // NOTE: Any memory that is new()ed *should* be delete()ed before the process goes out of
796  // scope.
798  {
799  if (!IsOpen())
800  return false;
801  if (IsRemote())
802  return false;
803  // Use NTV2_PIO as an overloaded flag to indicate this is not a DMA transfer
804  if (!DmaTransfer (NTV2_PIO, true, 0, pFrameBuffer, 0, ulNumBytes, false))
805  return false;
806  // Succeeded -- add pFrameBuffer to the avclasses' vector of locked memory
807  _vecDmaLocked.push_back(pFrameBuffer);
808  return true;
809  }
810 
812  // CompleteMemoryForDMA: unlock and free resources
813  // The inverse of PrepareMemoryForDMA. It passes the framebuffer address to the kernel, where
814  // the kernel looks up this address and unlocks the memory, unmaps the memory, and deletes the
815  // MDL.
816  // NOTE: this method does not cleanup the call to new() which created the memory. It is the new()
817  // caller's responsibility to call delete() after calling this method to finish the cleanup.
819  {
820  if (!IsOpen())
821  return false;
822  if (IsRemote())
823  return false;
824  // Use NTV2_PIO as an overloaded flag to indicate this is not a DMA transfer
825  if (!DmaTransfer (NTV2_PIO, false, 0, pFrameBuffer, 0, 0))
826  return false;
827  // Succeeded -- remove pFrameBuffer from the avclasses' vector of locked memory
828  // Find the entry in the avclasses vector that holds this framebuffer's address
829  for (DMA_LOCKED_VEC::iterator vecIter(_vecDmaLocked.begin()); vecIter != _vecDmaLocked.end(); ++vecIter)
830  // If we've found one, erase (delete) it
831  if (*vecIter == pFrameBuffer)
832  {
833  _vecDmaLocked.erase(vecIter);
834  break;
835  }
836  return true;
837  }
838 #endif // !defined(NTV2_DEPRECATE_16_0)
839 
840 
842 // DMA
843 
845  const bool inIsRead,
846  const ULWord inFrameNumber,
847  ULWord * pFrameBuffer,
848  const ULWord inOffsetBytes,
849  const ULWord inByteCount,
850  const bool inSynchronous)
851 {
852  if (IsRemote())
853  return CNTV2DriverInterface::DmaTransfer(inDMAEngine, inIsRead, inFrameNumber, pFrameBuffer,
854  inOffsetBytes, inByteCount, inSynchronous);
855  if (!IsOpen())
856  return false;
857 
858  KSPROPERTY_AJAPROPS_DMA_S propStruct;
859  DWORD dwBytesReturned = 0;
860  ZeroMemory (&propStruct,sizeof(KSPROPERTY_AJAPROPS_DMA_S));
861  propStruct.Property.Set = _GUID_PROPSET;
862  propStruct.Property.Id = KSPROPERTY_AJAPROPS_DMA;
863  propStruct.Property.Flags = inIsRead ? KSPROPERTY_TYPE_GET : KSPROPERTY_TYPE_SET;
864  propStruct.dmaEngine = inDMAEngine;
865  propStruct.pvVidUserVa = PVOID(pFrameBuffer);
866  propStruct.ulFrameNumber = inFrameNumber;
867  propStruct.ulFrameOffset = inOffsetBytes;
868  propStruct.ulVidNumBytes = inByteCount;
869  propStruct.ulAudNumBytes = 0;
870  propStruct.bSync = inSynchronous;
872  const bool ok = DeviceIoControl(_hDevice, IOCTL_AJAPROPS_DMA, &propStruct, sizeof(KSPROPERTY_AJAPROPS_DMA_S),
873  &propStruct, sizeof(KSPROPERTY_AJAPROPS_DMA_S), &dwBytesReturned, NULL);
875  if (!ok)
876  {
877  WDIFAIL ("failed: " << ::GetKernErrStr(GetLastError()) << ": eng=" << inDMAEngine << " frm=" << inFrameNumber
878  << " off=" << HEX8(inOffsetBytes) << " len=" << HEX8(inByteCount) << " " << (inIsRead ? "Rd" : "Wr"));
879  return false;
880  }
881  return true;
882 }
883 
884 
886  const bool inIsRead,
887  const ULWord inFrameNumber,
888  ULWord * pFrameBuffer,
889  const ULWord inOffsetBytes,
890  const ULWord inByteCount,
891  const ULWord inNumSegments,
892  const ULWord inHostPitch,
893  const ULWord inCardPitch,
894  const bool inSynchronous)
895 {
896  if (IsRemote())
897  return CNTV2DriverInterface::DmaTransfer(inDMAEngine, inIsRead, inFrameNumber, pFrameBuffer,
898  inOffsetBytes, inByteCount, inNumSegments, inHostPitch, inCardPitch, inSynchronous);
899  if (!IsOpen())
900  return false;
901 
902  KSPROPERTY_AJAPROPS_DMA_EX_S propStruct;
903  DWORD dwBytesReturned = 0;
904  ZeroMemory (&propStruct,sizeof(KSPROPERTY_AJAPROPS_DMA_EX_S));
905  propStruct.Property.Set = _GUID_PROPSET;
906  propStruct.Property.Id = KSPROPERTY_AJAPROPS_DMA_EX;
907  propStruct.Property.Flags = inIsRead ? KSPROPERTY_TYPE_GET : KSPROPERTY_TYPE_SET;
908  propStruct.dmaEngine = inDMAEngine;
909  propStruct.pvVidUserVa = PVOID(pFrameBuffer);
910  propStruct.ulFrameNumber = inFrameNumber;
911  propStruct.ulFrameOffset = inOffsetBytes;
912  propStruct.ulVidNumBytes = inByteCount;
913  propStruct.ulAudNumBytes = 0;
914  propStruct.ulVidNumSegments = inNumSegments;
915  propStruct.ulVidSegmentHostPitch = inHostPitch;
916  propStruct.ulVidSegmentCardPitch = inCardPitch;
917  propStruct.bSync = inSynchronous;
919  const bool ok = DeviceIoControl(_hDevice, IOCTL_AJAPROPS_DMA_EX, &propStruct, sizeof(KSPROPERTY_AJAPROPS_DMA_EX_S),
920  &propStruct, sizeof(KSPROPERTY_AJAPROPS_DMA_EX_S), &dwBytesReturned, NULL);
922  if (!ok)
923  {
924  WDIFAIL ("failed: " << ::GetKernErrStr(GetLastError()) << ": eng=" << inDMAEngine << " frm=" << inFrameNumber
925  << " off=" << HEX8(inOffsetBytes) << " len=" << HEX8(inByteCount) << " " << (inIsRead ? "Rd" : "Wr"));
926  return false;
927  }
928  return true;
929 }
930 
932  const NTV2Channel inDMAChannel,
933  const bool inIsTarget,
934  const ULWord inFrameNumber,
935  const ULWord inCardOffsetBytes,
936  const ULWord inByteCount,
937  const ULWord inNumSegments,
938  const ULWord inHostPitch,
939  const ULWord inCardPitch,
940  const PCHANNEL_P2P_STRUCT & inP2PData)
941 {
942  if (IsRemote())
943  return CNTV2DriverInterface::DmaTransfer(inDMAEngine, inDMAChannel, inIsTarget, inFrameNumber, inCardOffsetBytes,
944  inByteCount, inNumSegments, inHostPitch, inCardPitch, inP2PData);
945  if (!IsOpen())
946  return false;
947  if (!inP2PData)
948  {
949  WDIFAIL ("pP2PData == NULL");
950  return false;
951  }
952 
953  DWORD dwBytesReturned(0);
955  ZeroMemory (&propStruct,sizeof(KSPROPERTY_AJAPROPS_DMA_P2P_S));
956 
957  propStruct.Property.Set = _GUID_PROPSET;
958  propStruct.Property.Id = KSPROPERTY_AJAPROPS_DMA_P2P;
959  if (inIsTarget)
960  { // reset p2p struct
961  memset(inP2PData, 0, sizeof(CHANNEL_P2P_STRUCT));
962  inP2PData->p2pSize = sizeof(CHANNEL_P2P_STRUCT);
963  propStruct.Property.Flags = KSPROPERTY_TYPE_GET; // get does target
964  }
965  else
966  { // check for valid p2p struct
967  if (inP2PData->p2pSize != sizeof(CHANNEL_P2P_STRUCT))
968  {
969  WDIFAIL ("p2pSize=" << inP2PData->p2pSize << " != sizeof(CHANNEL_P2P_STRUCT) " << sizeof(CHANNEL_P2P_STRUCT));
970  return false;
971  }
972  propStruct.Property.Flags = KSPROPERTY_TYPE_SET; // set does transfer
973  }
974 
975  propStruct.dmaEngine = inDMAEngine;
976  propStruct.dmaChannel = inDMAChannel;
977  propStruct.ulFrameNumber = inFrameNumber;
978  propStruct.ulFrameOffset = inCardOffsetBytes;
979  propStruct.ulVidNumBytes = inByteCount;
980  propStruct.ulVidNumSegments = inNumSegments;
981  propStruct.ulVidSegmentHostPitch = inHostPitch;
982  propStruct.ulVidSegmentCardPitch = inCardPitch;
983  propStruct.ullVideoBusAddress = inP2PData->videoBusAddress;
984  propStruct.ullMessageBusAddress = inP2PData->messageBusAddress;
985  propStruct.ulVideoBusSize = inP2PData->videoBusSize;
986  propStruct.ulMessageData = inP2PData->messageData;
988  const bool ok = DeviceIoControl(_hDevice, IOCTL_AJAPROPS_DMA_P2P, &propStruct, sizeof(KSPROPERTY_AJAPROPS_DMA_P2P_S),
989  &propStruct, sizeof(KSPROPERTY_AJAPROPS_DMA_P2P_S), &dwBytesReturned, NULL);
991  if (!ok)
992  {
993  WDIFAIL ("Failed: " << ::GetKernErrStr(GetLastError()) << ": eng=" << inDMAEngine << " ch=" << inDMAChannel
994  << " frm=" << inFrameNumber << " off=" << HEX8(inCardOffsetBytes) << " siz=" << HEX8(inByteCount)
995  << " #segs=" << inNumSegments << " hostPitch=" << inHostPitch << " cardPitch=" << inCardPitch
996  << " target=" << (inIsTarget?"Y":"N"));
997  return false;
998  }
999  if (inIsTarget)
1000  {
1001  // check for data returned
1002  if (dwBytesReturned != sizeof(KSPROPERTY_AJAPROPS_DMA_P2P_S))
1003  {
1004  WDIFAIL ("Target failed: " << ::GetKernErrStr(GetLastError()) << " eng=" << inDMAEngine << " ch=" << inDMAChannel
1005  << " frm=" << inFrameNumber << " off=" << HEX8(inCardOffsetBytes) << " vSiz=" << HEX8(inByteCount)
1006  << " segs=" << inNumSegments << " hostPitch=" << inHostPitch << " cardPitch=" << inCardPitch
1007  << " target=" << (inIsTarget?"Y":"N") << " p2pBytesRet=" << HEX8(dwBytesReturned)
1008  << " p2pSize=" << HEX8(sizeof(KSPROPERTY_AJAPROPS_DMA_P2P_S)));
1009  return false;
1010  }
1011 
1012  // fill in p2p data
1013  inP2PData->videoBusAddress = propStruct.ullVideoBusAddress;
1014  inP2PData->messageBusAddress = propStruct.ullMessageBusAddress;
1015  inP2PData->videoBusSize = propStruct.ulVideoBusSize;
1016  inP2PData->messageData = propStruct.ulMessageData;
1017  }
1018  return true;
1019 }
1020 
1021 
1023 // AutoCirculate
1025 {
1026  if (IsRemote())
1027  return CNTV2DriverInterface::AutoCirculate(autoCircData);
1028  bool bRes(true);
1029  DWORD dwBytesReturned(0);
1030 
1031  switch (autoCircData.eCommand)
1032  {
1033  case eInitAutoCirc:
1034  {
1035  if (autoCircData.lVal4 <= 1 && autoCircData.lVal5 == 0 && autoCircData.lVal6 == 0)
1036  {
1038  memset(&autoCircControl, 0, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_S));
1039  autoCircControl.Property.Set = _GUID_PROPSET;
1040  autoCircControl.Property.Id = KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL;
1041  autoCircControl.Property.Flags = KSPROPERTY_TYPE_SET;
1042  autoCircControl.channelSpec = autoCircData.channelSpec;
1043  autoCircControl.eCommand = autoCircData.eCommand;
1044 
1045  autoCircControl.lVal1 = autoCircData.lVal1;
1046  autoCircControl.lVal2 = autoCircData.lVal2;
1047  autoCircControl.lVal3 = autoCircData.lVal3;
1048  autoCircControl.bVal1 = autoCircData.bVal1;
1049  autoCircControl.bVal2 = autoCircData.bVal2;
1050  autoCircControl.bVal3 = autoCircData.bVal3;
1051  autoCircControl.bVal4 = autoCircData.bVal4;
1052  autoCircControl.bVal5 = autoCircData.bVal5;
1053  autoCircControl.bVal6 = autoCircData.bVal6;
1054  autoCircControl.bVal7 = autoCircData.bVal7;
1055  autoCircControl.bVal8 = autoCircData.bVal8;
1057  bRes = DeviceIoControl(_hDevice, IOCTL_AJAPROPS_AUTOCIRC_CONTROL, &autoCircControl, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_S),
1058  &autoCircControl, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_S), &dwBytesReturned, NULL);
1060  if (!bRes)
1061  WDIFAIL("ACInit failed: " << ::GetKernErrStr(GetLastError()));
1062  }
1063  else
1064  {
1066  memset(&autoCircControl, 0, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_EX_S));
1067  autoCircControl.Property.Set = _GUID_PROPSET;
1069  autoCircControl.Property.Flags = KSPROPERTY_TYPE_SET;
1070  autoCircControl.channelSpec = autoCircData.channelSpec;
1071  autoCircControl.eCommand = autoCircData.eCommand;
1072 
1073  autoCircControl.lVal1 = autoCircData.lVal1;
1074  autoCircControl.lVal2 = autoCircData.lVal2;
1075  autoCircControl.lVal3 = autoCircData.lVal3;
1076  autoCircControl.lVal4 = autoCircData.lVal4;
1077  autoCircControl.lVal5 = autoCircData.lVal5;
1078  autoCircControl.lVal6 = autoCircData.lVal6;
1079  autoCircControl.bVal1 = autoCircData.bVal1;
1080  autoCircControl.bVal2 = autoCircData.bVal2;
1081  autoCircControl.bVal3 = autoCircData.bVal3;
1082  autoCircControl.bVal4 = autoCircData.bVal4;
1083  autoCircControl.bVal5 = autoCircData.bVal5;
1084  autoCircControl.bVal6 = autoCircData.bVal6;
1085  autoCircControl.bVal7 = autoCircData.bVal7;
1086  autoCircControl.bVal8 = autoCircData.bVal8;
1088  bRes = DeviceIoControl(_hDevice, IOCTL_AJAPROPS_AUTOCIRC_CONTROL_EX, &autoCircControl, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_EX_S),
1089  &autoCircControl, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_EX_S), &dwBytesReturned, NULL);
1091  if (!bRes)
1092  WDIFAIL("ACInitEx failed: " << ::GetKernErrStr(GetLastError()));
1093  }
1094  break;
1095  } // eInitAutoCirc
1096 
1097  case eStartAutoCirc:
1098  case eStopAutoCirc:
1099  case eAbortAutoCirc:
1100  case ePauseAutoCirc:
1101  case eFlushAutoCirculate:
1102  case ePrerollAutoCirculate:
1103  case eStartAutoCircAtTime:
1104  {
1106  memset(&autoCircControl, 0, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_S));
1107  autoCircControl.Property.Set = _GUID_PROPSET;
1108  autoCircControl.Property.Id = KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL;
1109  autoCircControl.Property.Flags = KSPROPERTY_TYPE_SET;
1110  autoCircControl.channelSpec = autoCircData.channelSpec;
1111  autoCircControl.eCommand = autoCircData.eCommand;
1112 
1113  switch (autoCircData.eCommand)
1114  {
1115  case ePauseAutoCirc:
1116  autoCircControl.bVal1 = autoCircData.bVal1;
1117  break;
1118 
1119  case ePrerollAutoCirculate:
1120  autoCircControl.lVal1 = autoCircData.lVal1;
1121  break;
1122 
1123  case eStartAutoCircAtTime:
1124  autoCircControl.lVal1 = autoCircData.lVal1;
1125  autoCircControl.lVal2 = autoCircData.lVal2;
1126  break;
1127 
1128  default: break; //NTV2_ASSERT(false && "Bad eCommand");
1129  }
1131  bRes = DeviceIoControl(_hDevice, IOCTL_AJAPROPS_AUTOCIRC_CONTROL, &autoCircControl, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_S),
1132  &autoCircControl, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_S), &dwBytesReturned, NULL);
1134  if (!bRes)
1135  WDIFAIL("ACInitEx failed: " << ::GetKernErrStr(GetLastError()));
1136  break;
1137  } // eStartAutoCirc, eStopAutoCirc, etc.
1138 
1139  case eGetAutoCirc:
1140  {
1142  memset(&autoCircStatus, 0, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_STATUS_S));
1143  autoCircStatus.Property.Set = _GUID_PROPSET;
1144  autoCircStatus.Property.Id = KSPROPERTY_AJAPROPS_AUTOCIRC_STATUS;
1145  autoCircStatus.Property.Flags = KSPROPERTY_TYPE_GET;
1146  autoCircStatus.channelSpec = autoCircData.channelSpec;
1147  autoCircStatus.eCommand = autoCircData.eCommand;
1148  if (autoCircData.pvVal1)
1149  {
1151  bRes = DeviceIoControl(_hDevice, IOCTL_AJAPROPS_AUTOCIRC_STATUS, &autoCircStatus, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_STATUS_S),
1152  &autoCircStatus, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_STATUS_S), &dwBytesReturned, NULL);
1154  if (bRes)
1155  *(AUTOCIRCULATE_STATUS_STRUCT *)autoCircData.pvVal1 = autoCircStatus.autoCircStatus;
1156  else
1157  WDIFAIL("GetAC failed: " << ::GetKernErrStr(GetLastError()));
1158  }
1159  else
1160  {bRes = false; WDIFAIL("GetAC failed: NULL pvVal1");}
1161  break;
1162  } // eGetAutoCirc
1163 
1164  case eGetFrameStamp:
1165  {
1167  memset(&autoCircFrame, 0, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME_S));
1168  autoCircFrame.Property.Set = _GUID_PROPSET;
1169  autoCircFrame.Property.Id = KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME;
1170  autoCircFrame.Property.Flags = KSPROPERTY_TYPE_GET;
1171  autoCircFrame.channelSpec = autoCircData.channelSpec;
1172  autoCircFrame.eCommand = autoCircData.eCommand;
1173  autoCircFrame.lFrameNum = autoCircData.lVal1;
1174 
1175  if (autoCircData.pvVal1)
1176  {
1177  autoCircFrame.frameStamp = *(FRAME_STAMP_STRUCT *) autoCircData.pvVal1;
1179  bRes = DeviceIoControl(_hDevice, IOCTL_AJAPROPS_AUTOCIRC_FRAME, &autoCircFrame, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME_S),
1180  &autoCircFrame, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME_S), &dwBytesReturned, NULL);
1182  if (bRes)
1183  *(FRAME_STAMP_STRUCT *)autoCircData.pvVal1 = autoCircFrame.frameStamp;
1184  else
1185  WDIFAIL("GetFrameStamp failed: " << ::GetKernErrStr(GetLastError()));
1186  }
1187  else
1188  {bRes = false; WDIFAIL("GetFrameStamp failed: NULL pvVal1");}
1189  break;
1190  } // eGetFrameStamp
1191 
1192  case eGetFrameStampEx2:
1193  {
1195  memset(&autoCircFrame, 0, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME_EX2_S));
1196  autoCircFrame.Property.Set = _GUID_PROPSET;
1198  autoCircFrame.Property.Flags = KSPROPERTY_TYPE_GET;
1199  autoCircFrame.channelSpec = autoCircData.channelSpec;
1200  autoCircFrame.eCommand = autoCircData.eCommand;
1201  autoCircFrame.lFrameNum = autoCircData.lVal1;
1202 
1203  if (autoCircData.pvVal1)
1204  {
1205  autoCircFrame.frameStamp = *(FRAME_STAMP_STRUCT *) autoCircData.pvVal1;
1206  if (autoCircData.pvVal2)
1207  autoCircFrame.acTask = *(AUTOCIRCULATE_TASK_STRUCT *) autoCircData.pvVal2;
1208 
1210  bRes = DeviceIoControl(_hDevice, IOCTL_AJAPROPS_AUTOCIRC_FRAME_EX2, &autoCircFrame, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME_EX2_S),
1211  &autoCircFrame, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME_EX2_S), &dwBytesReturned, NULL);
1213  if (bRes)
1214  {
1215  *(FRAME_STAMP_STRUCT *)autoCircData.pvVal1 = autoCircFrame.frameStamp;
1216  if (autoCircData.pvVal2)
1217  *(AUTOCIRCULATE_TASK_STRUCT *) autoCircData.pvVal2 = autoCircFrame.acTask;
1218  }
1219  else
1220  WDIFAIL("GetFrameStampEx2 failed: " << ::GetKernErrStr(GetLastError()));
1221  }
1222  else
1223  {bRes = false; WDIFAIL("GetFrameStampEx2 failed: NULL pvVal1");}
1224  break;
1225  }
1226 
1228  {
1230  memset(&acXfer, 0, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_TRANSFER_S));
1231  acXfer.Property.Set = _GUID_PROPSET;
1233  acXfer.Property.Flags = KSPROPERTY_TYPE_GET;
1234  acXfer.eCommand = autoCircData.eCommand;
1235 
1236  if (!autoCircData.pvVal1 || !autoCircData.pvVal2)
1237  {bRes = false; WDIFAIL("ACXfer failed: pvVal1 or pvVal2 NULL"); break;}
1238  acXfer.acTransfer = *(PAUTOCIRCULATE_TRANSFER_STRUCT) autoCircData.pvVal1; // Reqd XferStruct
1239  AUTOCIRCULATE_TRANSFER_STATUS_STRUCT acStatus = *(PAUTOCIRCULATE_TRANSFER_STATUS_STRUCT) autoCircData.pvVal2; // Reqd XferStatusStruct
1240 
1241  // Ensure audio buffer alignment OK
1242  if (acXfer.acTransfer.audioBufferSize && (acXfer.acTransfer.audioBufferSize % 4))
1243  {bRes = false; WDIFAIL("ACXfer failed: audio buffer size " << DEC(acXfer.acTransfer.audioBufferSize) << " not mod 4"); break;}
1244  if (acXfer.acTransfer.audioBuffer && (ULWord64(acXfer.acTransfer.audioBuffer) % 4))
1245  {bRes = false; WDIFAIL("ACXfer failed: audio buffer addr " << xHEX0N(acXfer.acTransfer.audioBuffer,16) << " not DWORD-aligned"); break;}
1246 
1248  bRes = DeviceIoControl(_hDevice, IOCTL_AJAPROPS_AUTOCIRC_TRANSFER, &acXfer, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_TRANSFER_S),
1249  &acStatus, sizeof (AUTOCIRCULATE_TRANSFER_STATUS_STRUCT), &dwBytesReturned, NULL);
1251  if (bRes)
1252  *(PAUTOCIRCULATE_TRANSFER_STATUS_STRUCT)autoCircData.pvVal2 = acStatus;
1253  else
1254  WDIFAIL("ACXfer failed: " << ::GetKernErrStr(GetLastError()));
1255  break;
1256  } // eTransferAutoCirculate
1257 
1259  {
1261  memset(&acXfer, 0, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_TRANSFER_EX_S));
1262  acXfer.Property.Set = _GUID_PROPSET;
1264  acXfer.Property.Flags = KSPROPERTY_TYPE_GET;
1265  acXfer.eCommand = autoCircData.eCommand;
1266 
1267  if (!autoCircData.pvVal1 || !autoCircData.pvVal2)
1268  {bRes = false; WDIFAIL("ACXferEx failed: NULL XferStruct or XferStatusStruct"); break;}
1269  acXfer.acTransfer = *(PAUTOCIRCULATE_TRANSFER_STRUCT) autoCircData.pvVal1; // Reqd XferStruct
1270  AUTOCIRCULATE_TRANSFER_STATUS_STRUCT acStatus = *(PAUTOCIRCULATE_TRANSFER_STATUS_STRUCT) autoCircData.pvVal2; // Reqd XferStatusStruct
1271  if (autoCircData.pvVal3)
1272  acXfer.acTransferRoute = *(NTV2RoutingTable*) autoCircData.pvVal3; // Optional RoutingTable
1273 
1274  // Ensure audio buffer alignment OK
1275  if (acXfer.acTransfer.audioBufferSize && (acXfer.acTransfer.audioBufferSize % 4))
1276  {bRes = false; WDIFAIL("ACXferEx failed: audio buffer size " << DEC(acXfer.acTransfer.audioBufferSize) << " not mod 4"); break;}
1277  if (acXfer.acTransfer.audioBuffer && (ULWord64(acXfer.acTransfer.audioBuffer) % 4))
1278  {bRes = false; WDIFAIL("ACXferEx failed: audio buffer addr " << xHEX0N(acXfer.acTransfer.audioBuffer,16) << " not DWORD-aligned"); break;}
1279 
1282  &acStatus, sizeof (AUTOCIRCULATE_TRANSFER_STATUS_STRUCT), &dwBytesReturned, NULL);
1284  if (bRes)
1285  *(PAUTOCIRCULATE_TRANSFER_STATUS_STRUCT)autoCircData.pvVal2 = acStatus;
1286  else
1287  WDIFAIL("ACXferEx failed: " << ::GetKernErrStr(GetLastError()));
1288  break;
1289  } // eTransferAutoCirculateEx
1290 
1292  {
1294  memset(&acXfer, 0, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_TRANSFER_EX2_S));
1295  acXfer.Property.Set = _GUID_PROPSET;
1297  acXfer.Property.Flags = KSPROPERTY_TYPE_GET;
1298  acXfer.eCommand = autoCircData.eCommand;
1299 
1300  if (!autoCircData.pvVal1 || !autoCircData.pvVal2)
1301  {bRes = false; WDIFAIL("ACXferEx2 failed: NULL XferStruct or RoutingTable"); break;}
1302 
1303  acXfer.acTransfer = *(PAUTOCIRCULATE_TRANSFER_STRUCT) autoCircData.pvVal1; // Reqd XferStruct
1304  AUTOCIRCULATE_TRANSFER_STATUS_STRUCT acStatus = *(PAUTOCIRCULATE_TRANSFER_STATUS_STRUCT) autoCircData.pvVal2; // Reqd XferStatusStruct
1305  if (autoCircData.pvVal3)
1306  acXfer.acTransferRoute = *(NTV2RoutingTable*) autoCircData.pvVal3; // Optional RoutingTable
1307  if (autoCircData.pvVal4)
1308  acXfer.acTask = *(PAUTOCIRCULATE_TASK_STRUCT) autoCircData.pvVal4; // Optional TaskStruct
1309 
1310  // Ensure audio buffer alignment OK
1311  if (acXfer.acTransfer.audioBufferSize && (acXfer.acTransfer.audioBufferSize % 4))
1312  {bRes = false; WDIFAIL("ACXferEx2 failed: audio buffer size " << DEC(acXfer.acTransfer.audioBufferSize) << " not mod 4"); break;}
1313  if (acXfer.acTransfer.audioBuffer && (ULWord64(acXfer.acTransfer.audioBuffer) % 4))
1314  {bRes = false; WDIFAIL("ACXferEx2 failed: audio buffer addr " << xHEX0N(acXfer.acTransfer.audioBuffer,16) << " not DWORD-aligned"); break;}
1315 
1318  &acStatus, sizeof (AUTOCIRCULATE_TRANSFER_STATUS_STRUCT), &dwBytesReturned, NULL);
1320  if (bRes)
1321  *(PAUTOCIRCULATE_TRANSFER_STATUS_STRUCT)autoCircData.pvVal2 = acStatus;
1322  else
1323  WDIFAIL("ACXferEx2 failed: " << ::GetKernErrStr(GetLastError()));
1324  break;
1325  } // eTransferAutoCirculateEx2
1326 
1327  case eSetCaptureTask:
1328  {
1330  memset(&autoCircFrame, 0, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME_EX2_S));
1331  autoCircFrame.Property.Set = _GUID_PROPSET;
1333  autoCircFrame.Property.Flags = KSPROPERTY_TYPE_SET;
1334  autoCircFrame.channelSpec = autoCircData.channelSpec;
1335  autoCircFrame.eCommand = autoCircData.eCommand;
1336  autoCircFrame.lFrameNum = 0;
1337 
1338  if (!autoCircData.pvVal1)
1339  {bRes = false; WDIFAIL("ACSetCaptureTask failed: NULL TaskStruct"); break;}
1340  autoCircFrame.acTask = *(AUTOCIRCULATE_TASK_STRUCT *) autoCircData.pvVal1; // Reqd TaskStruct
1341 
1343  bRes = DeviceIoControl(_hDevice, IOCTL_AJAPROPS_AUTOCIRC_CAPTURE_TASK, &autoCircFrame, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME_EX2_S),
1344  &autoCircFrame, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME_EX2_S), &dwBytesReturned, NULL);
1346  if (!bRes)
1347  WDIFAIL("ACSetCaptureTask failed: " << ::GetKernErrStr(GetLastError()));
1348  break;
1349  } // eSetCaptureTask
1350 
1351  case eSetActiveFrame:
1353  { bRes = false;
1354  WDIFAIL("Bad AC command %d" << autoCircData.eCommand);
1355  break;
1356  }
1357  } // switch on autoCircData.eCommand
1358  return bRes;
1359 } // AutoCirculate
1360 
1361 
1363 {
1364  if (!pInMessage)
1365  {WDIFAIL("Failed: NULL pointer"); return false;}
1366  if (IsRemote())
1367  return CNTV2DriverInterface::NTV2Message(pInMessage); // Implement NTV2Message on nub
1368  DWORD dwBytesReturned(0);
1370  const bool ok = DeviceIoControl(_hDevice, IOCTL_AJANTV2_MESSAGE, pInMessage, pInMessage->GetSizeInBytes (), pInMessage, pInMessage->GetSizeInBytes(), &dwBytesReturned, NULL);
1372  if (!ok)
1373  {WDIFAIL("Failed: " << ::GetKernErrStr(GetLastError())); return false;}
1374  return true;
1375 }
1376 
1377 
1379 {
1380  if (!pInMessage)
1381  {WDIFAIL("Failed: NULL pointer"); return false;}
1382  DWORD dwBytesReturned(0);
1384  const bool ok = DeviceIoControl(_hDevice, IOCTL_AJAHEVC_MESSAGE, pInMessage, pInMessage->size, pInMessage, pInMessage->size, &dwBytesReturned, NULL);
1386  if (!ok)
1387  {WDIFAIL("Failed: " << ::GetKernErrStr(GetLastError())); return false;}
1388  return true;
1389 }
1390 
1391 
1393 {
1395 }
1396 
1398 {
1400 }
1401 
1402 
1403 //
1404 // Management of downloaded Xilinx bitfile
1405 //
1406 //
1408 {
1409  if (IsRemote())
1410  return CNTV2DriverInterface::DriverGetBitFileInformation (outBitfileInfo, bitFileType);
1411  if (::NTV2DeviceHasSPIFlash(_boardID)) // No need to query the driver for boards with SPIFlash
1412  return CNTV2DriverInterface::DriverGetBitFileInformation (outBitfileInfo, bitFileType);
1413 
1414  // Ask the driver...
1415  DWORD dwBytesReturned(0);
1417  ZeroMemory(&propStruct,sizeof(KSPROPERTY_AJAPROPS_GETSETBITFILEINFO_S));
1418  propStruct.Property.Set = _GUID_PROPSET;
1420  propStruct.Property.Flags = KSPROPERTY_TYPE_GET;
1421  if (!DeviceIoControl(_hDevice, IOCTL_AJAPROPS_GETSETBITFILEINFO, &propStruct, sizeof(KSPROPERTY_AJAPROPS_GETSETBITFILEINFO_S),
1422  &propStruct, sizeof(KSPROPERTY_AJAPROPS_GETSETBITFILEINFO_S), &dwBytesReturned, NULL))
1423  {
1424  WDIFAIL("Failed");
1425  return false;
1426  }
1427  outBitfileInfo = propStruct.bitFileInfoStruct;
1428  return true;
1429 }
1430 
1432 {
1433  DWORD dwBytesReturned(0);
1435  ZeroMemory(&propStruct, sizeof(KSPROPERTY_AJAPROPS_GETSETBITFILEINFO_S));
1436  propStruct.Property.Set = _GUID_PROPSET;
1438  propStruct.Property.Flags = KSPROPERTY_TYPE_SET;
1439  propStruct.bitFileInfoStruct = inBitfileInfo;
1440  if (DeviceIoControl(_hDevice, IOCTL_AJAPROPS_GETSETBITFILEINFO, &propStruct, sizeof(KSPROPERTY_AJAPROPS_GETSETBITFILEINFO_S),
1441  &propStruct, sizeof(KSPROPERTY_AJAPROPS_GETSETBITFILEINFO_S), &dwBytesReturned, NULL))
1442  return true;
1443 
1444  WDIFAIL("Failed");
1445  return false;
1446 }
1447 
1448 
1449 #include <ntv2devicefeatures.h>
1450 
1452 {
1453  if (IsRemote())
1454  return false;
1456 }
KSPROPERTY_AJAPROPS_AUTOCIRC_STATUS_S::eCommand
AUTO_CIRC_COMMAND eCommand
Definition: ntv2winpublicinterface.h:321
kRegLPRJ45IP
@ kRegLPRJ45IP
Definition: ntv2publicinterface.h:1089
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:503
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:4477
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:658
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:522
CNTV2WinDriverInterface::UnmapFrameBuffers
virtual bool UnmapFrameBuffers(void)
Definition: ntv2windriverinterface.cpp:596
IOCTL_AJAPROPS_AUTOCIRC_FRAME
#define IOCTL_AJAPROPS_AUTOCIRC_FRAME
Definition: ntv2winpublicinterface.h:52
AUTOCIRCULATE_DATA::bVal2
BOOL_ bVal2
Definition: ntv2publicinterface.h:4487
CNTV2WinDriverInterface::SetAudioOutputMode
virtual bool SetAudioOutputMode(NTV2_GlobalAudioPlaybackMode mode)
Definition: ntv2windriverinterface.cpp:1392
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:398
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:1362
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:10003
CNTV2WinDriverInterface::MapFrameBuffers
virtual bool MapFrameBuffers(void)
Definition: ntv2windriverinterface.cpp:565
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:4359
AUTOCIRCULATE_DATA::bVal3
BOOL_ bVal3
Definition: ntv2publicinterface.h:4488
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:1397
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:4686
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:4356
eGetIntCount
@ eGetIntCount
Definition: ntv2publicinterface.h:3771
AUTOCIRCULATE_DATA::bVal6
BOOL_ bVal6
Definition: ntv2publicinterface.h:4491
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:797
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:844
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:740
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:4498
DEVICE_ID_CORVID44_8K
@ DEVICE_ID_CORVID44_8K
See Corvid 44 12G.
Definition: ntv2enums.h:28
CNTV2WinDriverInterface::AutoCirculate
virtual bool AutoCirculate(AUTOCIRCULATE_DATA &autoCircData)
Sends an AutoCirculate command to the NTV2 driver.
Definition: ntv2windriverinterface.cpp:1024
AUTOCIRCULATE_DATA::pvVal3
void * pvVal3
Definition: ntv2publicinterface.h:4497
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:4483
NTV2RoutingTable
Definition: ntv2publicinterface.h:4115
AJA_DebugStat_DMATransferP2P
@ AJA_DebugStat_DMATransferP2P
Definition: debugshare.h:243
AUTOCIRCULATE_DATA::lVal3
LWord lVal3
Definition: ntv2publicinterface.h:4481
NTV2_GlobalAudioPlaybackMode
NTV2_GlobalAudioPlaybackMode
Definition: ntv2enums.h:2092
eAbortAutoCirc
@ eAbortAutoCirc
Definition: ntv2publicinterface.h:4358
eTransferAutoCirculate
@ eTransferAutoCirculate
Definition: ntv2publicinterface.h:4357
NTV2DMAEngine
NTV2DMAEngine
Definition: ntv2enums.h:1842
CNTV2WinDriverInterface::HevcSendMessage
virtual bool HevcSendMessage(HevcMessageHeader *pMessage)
Sends an HEVC message to the NTV2 driver.
Definition: ntv2windriverinterface.cpp:1378
kRegReserved83
@ kRegReserved83
Definition: ntv2publicinterface.h:187
eGetFrameStamp
@ eGetFrameStamp
Definition: ntv2publicinterface.h:4354
KSPROPERTY_AJAPROPS_AUTOCIRC_TRANSFER_EX2_S
Definition: ntv2winpublicinterface.h:390
FRAME_STAMP_STRUCT
Definition: ntv2publicinterface.h:4542
AUTOCIRCULATE_DATA::eCommand
AUTO_CIRC_COMMAND eCommand
Definition: ntv2publicinterface.h:4476
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:1407
AUTOCIRCULATE_P2P_STRUCT::videoBusSize
ULWord videoBusSize
Definition: ntv2publicinterface.h:4769
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:4768
KSPROPERTY_AJAPROPS_AUTOCIRC_TRANSFER_EX
@ KSPROPERTY_AJAPROPS_AUTOCIRC_TRANSFER_EX
Definition: ntv2winpublicinterface.h:85
AUTOCIRCULATE_DATA::lVal1
LWord lVal1
Definition: ntv2publicinterface.h:4479
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:4355
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:4353
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:713
AUTOCIRCULATE_DATA::lVal2
LWord lVal2
Definition: ntv2publicinterface.h:4480
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:426
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:4685
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:7112
WDIFAIL
#define WDIFAIL(__x__)
Definition: ntv2windriverinterface.cpp:140
UWord
uint16_t UWord
Definition: ajatypes.h:253
DEVICE_ID_KONAIP_25G
@ DEVICE_ID_KONAIP_25G
See KONA IP25.
Definition: ntv2enums.h:72
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:4490
CNTV2WinDriverInterface::DriverSetBitFileInformation
virtual bool DriverSetBitFileInformation(const BITFILE_INFO_STRUCT &inBitfileInfo)
Definition: ntv2windriverinterface.cpp:1431
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:686
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:4360
AUTOCIRCULATE_DATA::lVal4
LWord lVal4
Definition: ntv2publicinterface.h:4482
eStartAutoCirc
@ eStartAutoCirc
Definition: ntv2publicinterface.h:4350
eSetCaptureTask
@ eSetCaptureTask
Definition: ntv2publicinterface.h:4363
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:10000
AUTOCIRCULATE_P2P_STRUCT::videoBusAddress
ULWord64 videoBusAddress
Definition: ntv2publicinterface.h:4767
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:4486
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:630
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:4484
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:818
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:4418
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:5694
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:4770
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:4365
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:4628
KSPROPERTY_AJAPROPS_AUTOCIRC_STATUS_S::channelSpec
NTV2Crosspoint channelSpec
Definition: ntv2winpublicinterface.h:322
ePauseAutoCirc
@ ePauseAutoCirc
Definition: ntv2publicinterface.h:4352
CNTV2DriverInterface::_pCh1FrameBaseAddress
ULWord * _pCh1FrameBaseAddress
Definition: ntv2driverinterface.h:700
eInitAutoCirc
@ eInitAutoCirc
Definition: ntv2publicinterface.h:4349
AUTOCIRCULATE_P2P_STRUCT
Definition: ntv2publicinterface.h:4763
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:4351
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:4362
KSPROPERTY_AJAPROPS_NEWSUBSCRIPTIONS_S::Property
KSPROPERTY Property
Definition: ntv2winpublicinterface.h:174
CNTV2WinDriverInterface::DmaUnlock
virtual bool DmaUnlock(void)
Definition: ntv2windriverinterface.cpp:770
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:4489
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:4364
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:4861
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:4493
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:1451
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:4361
AUTOCIRCULATE_DATA::bVal7
BOOL_ bVal7
Definition: ntv2publicinterface.h:4492
KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_S::bVal3
bool bVal3
Definition: ntv2winpublicinterface.h:279
xHEX0N
#define xHEX0N(__x__, __n__)
Definition: ntv2publicinterface.h:5693
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:4495
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:4496
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:4909
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:474
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:344
AUTOCIRCULATE_DATA
Definition: ntv2publicinterface.h:4474
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:4765
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