AJA NTV2 SDK  17.0.1.1246
NTV2 SDK 17.0.1.1246
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 CNTV2DriverInterface::ConfigureInterrupt(bEnable, eInterruptType);
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 CNTV2DriverInterface::GetInterruptCount(eInterruptType, outCount);
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  // For every locked entry, try to free it
769  for (size_t ndx(0); ndx < _vecDmaLocked.size(); ndx++)
771 
772  NTV2_ASSERT(_vecDmaLocked.empty() && "_vecDmaLocked should be empty");
773  return true;
774  }
775 
777  // PrepareMemoryForDMA
778  // Passes the address of a user space allocated frame buffer and the buffer's size to the
779  // kernel, where the kernel
780  // creates a MDL and probes & locks the memory. The framebuffer's userspace address is saved
781  // in the kernel, and all subsequent DMA calls to this address will avoid the time penalties
782  // of the MDL creation and the probe & lock.
783  // NOTE: When this method is used to lock new()ed memory, this memory *should*
784  // be unlocked with the CompleteMemoryForDMA() method before calling delete(). The avclasses
785  // destructor does call DmaUnlock() which attempts to unlock all locked pages with calls
786  // to CompleteMemoryForDMA().
787  // NOTE: Any memory that is new()ed *should* be delete()ed before the process goes out of
788  // scope.
790  {
791  if (!IsOpen())
792  return false;
793  // Use NTV2_PIO as an overloaded flag to indicate this is not a DMA transfer
794  if (!DmaTransfer (NTV2_PIO, true, 0, pFrameBuffer, 0, ulNumBytes, false))
795  return false;
796  // Succeeded -- add pFrameBuffer to the avclasses' vector of locked memory
797  _vecDmaLocked.push_back(pFrameBuffer);
798  return true;
799  }
800 
802  // CompleteMemoryForDMA: unlock and free resources
803  // The inverse of PrepareMemoryForDMA. It passes the framebuffer address to the kernel, where
804  // the kernel looks up this address and unlocks the memory, unmaps the memory, and deletes the
805  // MDL.
806  // NOTE: this method does not cleanup the call to new() which created the memory. It is the new()
807  // caller's responsibility to call delete() after calling this method to finish the cleanup.
809  {
810  if (!IsOpen())
811  return false;
812  // Use NTV2_PIO as an overloaded flag to indicate this is not a DMA transfer
813  if (!DmaTransfer (NTV2_PIO, false, 0, pFrameBuffer, 0, 0))
814  return false;
815  // Succeeded -- remove pFrameBuffer from the avclasses' vector of locked memory
816  // Find the entry in the avclasses vector that holds this framebuffer's address
817  for (DMA_LOCKED_VEC::iterator vecIter(_vecDmaLocked.begin()); vecIter != _vecDmaLocked.end(); ++vecIter)
818  // If we've found one, erase (delete) it
819  if (*vecIter == pFrameBuffer)
820  {
821  _vecDmaLocked.erase(vecIter);
822  break;
823  }
824  return true;
825  }
826 #endif // !defined(NTV2_DEPRECATE_16_0)
827 
828 
830 // DMA
831 
833  const bool inIsRead,
834  const ULWord inFrameNumber,
835  ULWord * pFrameBuffer,
836  const ULWord inOffsetBytes,
837  const ULWord inByteCount,
838  const bool inSynchronous)
839 {
840  if (IsRemote())
841  return false;
842  if (!IsOpen())
843  return false;
844 
845  KSPROPERTY_AJAPROPS_DMA_S propStruct;
846  DWORD dwBytesReturned = 0;
847  ZeroMemory (&propStruct,sizeof(KSPROPERTY_AJAPROPS_DMA_S));
848  propStruct.Property.Set = _GUID_PROPSET;
849  propStruct.Property.Id = KSPROPERTY_AJAPROPS_DMA;
850  propStruct.Property.Flags = inIsRead ? KSPROPERTY_TYPE_GET : KSPROPERTY_TYPE_SET;
851  propStruct.dmaEngine = inDMAEngine;
852  propStruct.pvVidUserVa = PVOID(pFrameBuffer);
853  propStruct.ulFrameNumber = inFrameNumber;
854  propStruct.ulFrameOffset = inOffsetBytes;
855  propStruct.ulVidNumBytes = inByteCount;
856  propStruct.ulAudNumBytes = 0;
857  propStruct.bSync = inSynchronous;
859  const bool ok = DeviceIoControl(_hDevice, IOCTL_AJAPROPS_DMA, &propStruct, sizeof(KSPROPERTY_AJAPROPS_DMA_S),
860  &propStruct, sizeof(KSPROPERTY_AJAPROPS_DMA_S), &dwBytesReturned, NULL);
862  if (!ok)
863  {
864  WDIFAIL ("failed: " << ::GetKernErrStr(GetLastError()) << ": eng=" << inDMAEngine << " frm=" << inFrameNumber
865  << " off=" << HEX8(inOffsetBytes) << " len=" << HEX8(inByteCount) << " " << (inIsRead ? "Rd" : "Wr"));
866  return false;
867  }
868  return true;
869 }
870 
871 
873  const bool inIsRead,
874  const ULWord inFrameNumber,
875  ULWord * pFrameBuffer,
876  const ULWord inOffsetBytes,
877  const ULWord inByteCount,
878  const ULWord inNumSegments,
879  const ULWord inHostPitch,
880  const ULWord inCardPitch,
881  const bool inSynchronous)
882 {
883  if (IsRemote())
884  return false;
885  if (!IsOpen())
886  return false;
887 
888  KSPROPERTY_AJAPROPS_DMA_EX_S propStruct;
889  DWORD dwBytesReturned = 0;
890  ZeroMemory (&propStruct,sizeof(KSPROPERTY_AJAPROPS_DMA_EX_S));
891  propStruct.Property.Set = _GUID_PROPSET;
892  propStruct.Property.Id = KSPROPERTY_AJAPROPS_DMA_EX;
893  propStruct.Property.Flags = inIsRead ? KSPROPERTY_TYPE_GET : KSPROPERTY_TYPE_SET;
894  propStruct.dmaEngine = inDMAEngine;
895  propStruct.pvVidUserVa = PVOID(pFrameBuffer);
896  propStruct.ulFrameNumber = inFrameNumber;
897  propStruct.ulFrameOffset = inOffsetBytes;
898  propStruct.ulVidNumBytes = inByteCount;
899  propStruct.ulAudNumBytes = 0;
900  propStruct.ulVidNumSegments = inNumSegments;
901  propStruct.ulVidSegmentHostPitch = inHostPitch;
902  propStruct.ulVidSegmentCardPitch = inCardPitch;
903  propStruct.bSync = inSynchronous;
905  const bool ok = DeviceIoControl(_hDevice, IOCTL_AJAPROPS_DMA_EX, &propStruct, sizeof(KSPROPERTY_AJAPROPS_DMA_EX_S),
906  &propStruct, sizeof(KSPROPERTY_AJAPROPS_DMA_EX_S), &dwBytesReturned, NULL);
908  if (!ok)
909  {
910  WDIFAIL ("failed: " << ::GetKernErrStr(GetLastError()) << ": eng=" << inDMAEngine << " frm=" << inFrameNumber
911  << " off=" << HEX8(inOffsetBytes) << " len=" << HEX8(inByteCount) << " " << (inIsRead ? "Rd" : "Wr"));
912  return false;
913  }
914  return true;
915 }
916 
918  const NTV2Channel inDMAChannel,
919  const bool inIsTarget,
920  const ULWord inFrameNumber,
921  const ULWord inCardOffsetBytes,
922  const ULWord inByteCount,
923  const ULWord inNumSegments,
924  const ULWord inHostPitch,
925  const ULWord inCardPitch,
926  const PCHANNEL_P2P_STRUCT & inP2PData)
927 {
928  if (IsRemote())
929  return false;
930  if (!IsOpen())
931  return false;
932  if (!inP2PData)
933  {
934  WDIFAIL ("pP2PData == NULL");
935  return false;
936  }
937 
938  DWORD dwBytesReturned(0);
940  ZeroMemory (&propStruct,sizeof(KSPROPERTY_AJAPROPS_DMA_P2P_S));
941 
942  propStruct.Property.Set = _GUID_PROPSET;
943  propStruct.Property.Id = KSPROPERTY_AJAPROPS_DMA_P2P;
944  if (inIsTarget)
945  { // reset p2p struct
946  memset(inP2PData, 0, sizeof(CHANNEL_P2P_STRUCT));
947  inP2PData->p2pSize = sizeof(CHANNEL_P2P_STRUCT);
948  propStruct.Property.Flags = KSPROPERTY_TYPE_GET; // get does target
949  }
950  else
951  { // check for valid p2p struct
952  if (inP2PData->p2pSize != sizeof(CHANNEL_P2P_STRUCT))
953  {
954  WDIFAIL ("p2pSize=" << inP2PData->p2pSize << " != sizeof(CHANNEL_P2P_STRUCT) " << sizeof(CHANNEL_P2P_STRUCT));
955  return false;
956  }
957  propStruct.Property.Flags = KSPROPERTY_TYPE_SET; // set does transfer
958  }
959 
960  propStruct.dmaEngine = inDMAEngine;
961  propStruct.dmaChannel = inDMAChannel;
962  propStruct.ulFrameNumber = inFrameNumber;
963  propStruct.ulFrameOffset = inCardOffsetBytes;
964  propStruct.ulVidNumBytes = inByteCount;
965  propStruct.ulVidNumSegments = inNumSegments;
966  propStruct.ulVidSegmentHostPitch = inHostPitch;
967  propStruct.ulVidSegmentCardPitch = inCardPitch;
968  propStruct.ullVideoBusAddress = inP2PData->videoBusAddress;
969  propStruct.ullMessageBusAddress = inP2PData->messageBusAddress;
970  propStruct.ulVideoBusSize = inP2PData->videoBusSize;
971  propStruct.ulMessageData = inP2PData->messageData;
973  const bool ok = DeviceIoControl(_hDevice, IOCTL_AJAPROPS_DMA_P2P, &propStruct, sizeof(KSPROPERTY_AJAPROPS_DMA_P2P_S),
974  &propStruct, sizeof(KSPROPERTY_AJAPROPS_DMA_P2P_S), &dwBytesReturned, NULL);
976  if (!ok)
977  {
978  WDIFAIL ("Failed: " << ::GetKernErrStr(GetLastError()) << ": eng=" << inDMAEngine << " ch=" << inDMAChannel
979  << " frm=" << inFrameNumber << " off=" << HEX8(inCardOffsetBytes) << " siz=" << HEX8(inByteCount)
980  << " #segs=" << inNumSegments << " hostPitch=" << inHostPitch << " cardPitch=" << inCardPitch
981  << " target=" << (inIsTarget?"Y":"N"));
982  return false;
983  }
984  if (inIsTarget)
985  {
986  // check for data returned
987  if (dwBytesReturned != sizeof(KSPROPERTY_AJAPROPS_DMA_P2P_S))
988  {
989  WDIFAIL ("Target failed: " << ::GetKernErrStr(GetLastError()) << " eng=" << inDMAEngine << " ch=" << inDMAChannel
990  << " frm=" << inFrameNumber << " off=" << HEX8(inCardOffsetBytes) << " vSiz=" << HEX8(inByteCount)
991  << " segs=" << inNumSegments << " hostPitch=" << inHostPitch << " cardPitch=" << inCardPitch
992  << " target=" << (inIsTarget?"Y":"N") << " p2pBytesRet=" << HEX8(dwBytesReturned)
993  << " p2pSize=" << HEX8(sizeof(KSPROPERTY_AJAPROPS_DMA_P2P_S)));
994  return false;
995  }
996 
997  // fill in p2p data
998  inP2PData->videoBusAddress = propStruct.ullVideoBusAddress;
999  inP2PData->messageBusAddress = propStruct.ullMessageBusAddress;
1000  inP2PData->videoBusSize = propStruct.ulVideoBusSize;
1001  inP2PData->messageData = propStruct.ulMessageData;
1002  }
1003  return true;
1004 }
1005 
1006 
1008 // AutoCirculate
1010 {
1011  if (IsRemote())
1012  return CNTV2DriverInterface::AutoCirculate(autoCircData);
1013  bool bRes(true);
1014  DWORD dwBytesReturned(0);
1015 
1016  switch (autoCircData.eCommand)
1017  {
1018  case eInitAutoCirc:
1019  {
1020  if (autoCircData.lVal4 <= 1 && autoCircData.lVal5 == 0 && autoCircData.lVal6 == 0)
1021  {
1023  memset(&autoCircControl, 0, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_S));
1024  autoCircControl.Property.Set = _GUID_PROPSET;
1025  autoCircControl.Property.Id = KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL;
1026  autoCircControl.Property.Flags = KSPROPERTY_TYPE_SET;
1027  autoCircControl.channelSpec = autoCircData.channelSpec;
1028  autoCircControl.eCommand = autoCircData.eCommand;
1029 
1030  autoCircControl.lVal1 = autoCircData.lVal1;
1031  autoCircControl.lVal2 = autoCircData.lVal2;
1032  autoCircControl.lVal3 = autoCircData.lVal3;
1033  autoCircControl.bVal1 = autoCircData.bVal1;
1034  autoCircControl.bVal2 = autoCircData.bVal2;
1035  autoCircControl.bVal3 = autoCircData.bVal3;
1036  autoCircControl.bVal4 = autoCircData.bVal4;
1037  autoCircControl.bVal5 = autoCircData.bVal5;
1038  autoCircControl.bVal6 = autoCircData.bVal6;
1039  autoCircControl.bVal7 = autoCircData.bVal7;
1040  autoCircControl.bVal8 = autoCircData.bVal8;
1042  bRes = DeviceIoControl(_hDevice, IOCTL_AJAPROPS_AUTOCIRC_CONTROL, &autoCircControl, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_S),
1043  &autoCircControl, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_S), &dwBytesReturned, NULL);
1045  if (!bRes)
1046  WDIFAIL("ACInit failed: " << ::GetKernErrStr(GetLastError()));
1047  }
1048  else
1049  {
1051  memset(&autoCircControl, 0, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_EX_S));
1052  autoCircControl.Property.Set = _GUID_PROPSET;
1054  autoCircControl.Property.Flags = KSPROPERTY_TYPE_SET;
1055  autoCircControl.channelSpec = autoCircData.channelSpec;
1056  autoCircControl.eCommand = autoCircData.eCommand;
1057 
1058  autoCircControl.lVal1 = autoCircData.lVal1;
1059  autoCircControl.lVal2 = autoCircData.lVal2;
1060  autoCircControl.lVal3 = autoCircData.lVal3;
1061  autoCircControl.lVal4 = autoCircData.lVal4;
1062  autoCircControl.lVal5 = autoCircData.lVal5;
1063  autoCircControl.lVal6 = autoCircData.lVal6;
1064  autoCircControl.bVal1 = autoCircData.bVal1;
1065  autoCircControl.bVal2 = autoCircData.bVal2;
1066  autoCircControl.bVal3 = autoCircData.bVal3;
1067  autoCircControl.bVal4 = autoCircData.bVal4;
1068  autoCircControl.bVal5 = autoCircData.bVal5;
1069  autoCircControl.bVal6 = autoCircData.bVal6;
1070  autoCircControl.bVal7 = autoCircData.bVal7;
1071  autoCircControl.bVal8 = autoCircData.bVal8;
1073  bRes = DeviceIoControl(_hDevice, IOCTL_AJAPROPS_AUTOCIRC_CONTROL_EX, &autoCircControl, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_EX_S),
1074  &autoCircControl, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_EX_S), &dwBytesReturned, NULL);
1076  if (!bRes)
1077  WDIFAIL("ACInitEx failed: " << ::GetKernErrStr(GetLastError()));
1078  }
1079  break;
1080  } // eInitAutoCirc
1081 
1082  case eStartAutoCirc:
1083  case eStopAutoCirc:
1084  case eAbortAutoCirc:
1085  case ePauseAutoCirc:
1086  case eFlushAutoCirculate:
1087  case ePrerollAutoCirculate:
1088  case eStartAutoCircAtTime:
1089  {
1091  memset(&autoCircControl, 0, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_S));
1092  autoCircControl.Property.Set = _GUID_PROPSET;
1093  autoCircControl.Property.Id = KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL;
1094  autoCircControl.Property.Flags = KSPROPERTY_TYPE_SET;
1095  autoCircControl.channelSpec = autoCircData.channelSpec;
1096  autoCircControl.eCommand = autoCircData.eCommand;
1097 
1098  switch (autoCircData.eCommand)
1099  {
1100  case ePauseAutoCirc:
1101  autoCircControl.bVal1 = autoCircData.bVal1;
1102  break;
1103 
1104  case ePrerollAutoCirculate:
1105  autoCircControl.lVal1 = autoCircData.lVal1;
1106  break;
1107 
1108  case eStartAutoCircAtTime:
1109  autoCircControl.lVal1 = autoCircData.lVal1;
1110  autoCircControl.lVal2 = autoCircData.lVal2;
1111  break;
1112 
1113  default: break; //NTV2_ASSERT(false && "Bad eCommand");
1114  }
1116  bRes = DeviceIoControl(_hDevice, IOCTL_AJAPROPS_AUTOCIRC_CONTROL, &autoCircControl, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_S),
1117  &autoCircControl, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_S), &dwBytesReturned, NULL);
1119  if (!bRes)
1120  WDIFAIL("ACInitEx failed: " << ::GetKernErrStr(GetLastError()));
1121  break;
1122  } // eStartAutoCirc, eStopAutoCirc, etc.
1123 
1124  case eGetAutoCirc:
1125  {
1127  memset(&autoCircStatus, 0, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_STATUS_S));
1128  autoCircStatus.Property.Set = _GUID_PROPSET;
1129  autoCircStatus.Property.Id = KSPROPERTY_AJAPROPS_AUTOCIRC_STATUS;
1130  autoCircStatus.Property.Flags = KSPROPERTY_TYPE_GET;
1131  autoCircStatus.channelSpec = autoCircData.channelSpec;
1132  autoCircStatus.eCommand = autoCircData.eCommand;
1133  if (autoCircData.pvVal1)
1134  {
1136  bRes = DeviceIoControl(_hDevice, IOCTL_AJAPROPS_AUTOCIRC_STATUS, &autoCircStatus, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_STATUS_S),
1137  &autoCircStatus, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_STATUS_S), &dwBytesReturned, NULL);
1139  if (bRes)
1140  *(AUTOCIRCULATE_STATUS_STRUCT *)autoCircData.pvVal1 = autoCircStatus.autoCircStatus;
1141  else
1142  WDIFAIL("GetAC failed: " << ::GetKernErrStr(GetLastError()));
1143  }
1144  else
1145  {bRes = false; WDIFAIL("GetAC failed: NULL pvVal1");}
1146  break;
1147  } // eGetAutoCirc
1148 
1149  case eGetFrameStamp:
1150  {
1152  memset(&autoCircFrame, 0, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME_S));
1153  autoCircFrame.Property.Set = _GUID_PROPSET;
1154  autoCircFrame.Property.Id = KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME;
1155  autoCircFrame.Property.Flags = KSPROPERTY_TYPE_GET;
1156  autoCircFrame.channelSpec = autoCircData.channelSpec;
1157  autoCircFrame.eCommand = autoCircData.eCommand;
1158  autoCircFrame.lFrameNum = autoCircData.lVal1;
1159 
1160  if (autoCircData.pvVal1)
1161  {
1162  autoCircFrame.frameStamp = *(FRAME_STAMP_STRUCT *) autoCircData.pvVal1;
1164  bRes = DeviceIoControl(_hDevice, IOCTL_AJAPROPS_AUTOCIRC_FRAME, &autoCircFrame, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME_S),
1165  &autoCircFrame, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME_S), &dwBytesReturned, NULL);
1167  if (bRes)
1168  *(FRAME_STAMP_STRUCT *)autoCircData.pvVal1 = autoCircFrame.frameStamp;
1169  else
1170  WDIFAIL("GetFrameStamp failed: " << ::GetKernErrStr(GetLastError()));
1171  }
1172  else
1173  {bRes = false; WDIFAIL("GetFrameStamp failed: NULL pvVal1");}
1174  break;
1175  } // eGetFrameStamp
1176 
1177  case eGetFrameStampEx2:
1178  {
1180  memset(&autoCircFrame, 0, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME_EX2_S));
1181  autoCircFrame.Property.Set = _GUID_PROPSET;
1183  autoCircFrame.Property.Flags = KSPROPERTY_TYPE_GET;
1184  autoCircFrame.channelSpec = autoCircData.channelSpec;
1185  autoCircFrame.eCommand = autoCircData.eCommand;
1186  autoCircFrame.lFrameNum = autoCircData.lVal1;
1187 
1188  if (autoCircData.pvVal1)
1189  {
1190  autoCircFrame.frameStamp = *(FRAME_STAMP_STRUCT *) autoCircData.pvVal1;
1191  if (autoCircData.pvVal2)
1192  autoCircFrame.acTask = *(AUTOCIRCULATE_TASK_STRUCT *) autoCircData.pvVal2;
1193 
1195  bRes = DeviceIoControl(_hDevice, IOCTL_AJAPROPS_AUTOCIRC_FRAME_EX2, &autoCircFrame, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME_EX2_S),
1196  &autoCircFrame, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME_EX2_S), &dwBytesReturned, NULL);
1198  if (bRes)
1199  {
1200  *(FRAME_STAMP_STRUCT *)autoCircData.pvVal1 = autoCircFrame.frameStamp;
1201  if (autoCircData.pvVal2)
1202  *(AUTOCIRCULATE_TASK_STRUCT *) autoCircData.pvVal2 = autoCircFrame.acTask;
1203  }
1204  else
1205  WDIFAIL("GetFrameStampEx2 failed: " << ::GetKernErrStr(GetLastError()));
1206  }
1207  else
1208  {bRes = false; WDIFAIL("GetFrameStampEx2 failed: NULL pvVal1");}
1209  break;
1210  }
1211 
1213  {
1215  memset(&acXfer, 0, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_TRANSFER_S));
1216  acXfer.Property.Set = _GUID_PROPSET;
1218  acXfer.Property.Flags = KSPROPERTY_TYPE_GET;
1219  acXfer.eCommand = autoCircData.eCommand;
1220 
1221  if (!autoCircData.pvVal1 || !autoCircData.pvVal2)
1222  {bRes = false; WDIFAIL("ACXfer failed: pvVal1 or pvVal2 NULL"); break;}
1223  acXfer.acTransfer = *(PAUTOCIRCULATE_TRANSFER_STRUCT) autoCircData.pvVal1; // Reqd XferStruct
1224  AUTOCIRCULATE_TRANSFER_STATUS_STRUCT acStatus = *(PAUTOCIRCULATE_TRANSFER_STATUS_STRUCT) autoCircData.pvVal2; // Reqd XferStatusStruct
1225 
1226  // Ensure audio buffer alignment OK
1227  if (acXfer.acTransfer.audioBufferSize && (acXfer.acTransfer.audioBufferSize % 4))
1228  {bRes = false; WDIFAIL("ACXfer failed: audio buffer size " << DEC(acXfer.acTransfer.audioBufferSize) << " not mod 4"); break;}
1229  if (acXfer.acTransfer.audioBuffer && (ULWord64(acXfer.acTransfer.audioBuffer) % 4))
1230  {bRes = false; WDIFAIL("ACXfer failed: audio buffer addr " << xHEX0N(acXfer.acTransfer.audioBuffer,16) << " not DWORD-aligned"); break;}
1231 
1233  bRes = DeviceIoControl(_hDevice, IOCTL_AJAPROPS_AUTOCIRC_TRANSFER, &acXfer, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_TRANSFER_S),
1234  &acStatus, sizeof (AUTOCIRCULATE_TRANSFER_STATUS_STRUCT), &dwBytesReturned, NULL);
1236  if (bRes)
1237  *(PAUTOCIRCULATE_TRANSFER_STATUS_STRUCT)autoCircData.pvVal2 = acStatus;
1238  else
1239  WDIFAIL("ACXfer failed: " << ::GetKernErrStr(GetLastError()));
1240  break;
1241  } // eTransferAutoCirculate
1242 
1244  {
1246  memset(&acXfer, 0, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_TRANSFER_EX_S));
1247  acXfer.Property.Set = _GUID_PROPSET;
1249  acXfer.Property.Flags = KSPROPERTY_TYPE_GET;
1250  acXfer.eCommand = autoCircData.eCommand;
1251 
1252  if (!autoCircData.pvVal1 || !autoCircData.pvVal2)
1253  {bRes = false; WDIFAIL("ACXferEx failed: NULL XferStruct or XferStatusStruct"); break;}
1254  acXfer.acTransfer = *(PAUTOCIRCULATE_TRANSFER_STRUCT) autoCircData.pvVal1; // Reqd XferStruct
1255  AUTOCIRCULATE_TRANSFER_STATUS_STRUCT acStatus = *(PAUTOCIRCULATE_TRANSFER_STATUS_STRUCT) autoCircData.pvVal2; // Reqd XferStatusStruct
1256  if (autoCircData.pvVal3)
1257  acXfer.acTransferRoute = *(NTV2RoutingTable*) autoCircData.pvVal3; // Optional RoutingTable
1258 
1259  // Ensure audio buffer alignment OK
1260  if (acXfer.acTransfer.audioBufferSize && (acXfer.acTransfer.audioBufferSize % 4))
1261  {bRes = false; WDIFAIL("ACXferEx failed: audio buffer size " << DEC(acXfer.acTransfer.audioBufferSize) << " not mod 4"); break;}
1262  if (acXfer.acTransfer.audioBuffer && (ULWord64(acXfer.acTransfer.audioBuffer) % 4))
1263  {bRes = false; WDIFAIL("ACXferEx failed: audio buffer addr " << xHEX0N(acXfer.acTransfer.audioBuffer,16) << " not DWORD-aligned"); break;}
1264 
1267  &acStatus, sizeof (AUTOCIRCULATE_TRANSFER_STATUS_STRUCT), &dwBytesReturned, NULL);
1269  if (bRes)
1270  *(PAUTOCIRCULATE_TRANSFER_STATUS_STRUCT)autoCircData.pvVal2 = acStatus;
1271  else
1272  WDIFAIL("ACXferEx failed: " << ::GetKernErrStr(GetLastError()));
1273  break;
1274  } // eTransferAutoCirculateEx
1275 
1277  {
1279  memset(&acXfer, 0, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_TRANSFER_EX2_S));
1280  acXfer.Property.Set = _GUID_PROPSET;
1282  acXfer.Property.Flags = KSPROPERTY_TYPE_GET;
1283  acXfer.eCommand = autoCircData.eCommand;
1284 
1285  if (!autoCircData.pvVal1 || !autoCircData.pvVal2)
1286  {bRes = false; WDIFAIL("ACXferEx2 failed: NULL XferStruct or RoutingTable"); break;}
1287 
1288  acXfer.acTransfer = *(PAUTOCIRCULATE_TRANSFER_STRUCT) autoCircData.pvVal1; // Reqd XferStruct
1289  AUTOCIRCULATE_TRANSFER_STATUS_STRUCT acStatus = *(PAUTOCIRCULATE_TRANSFER_STATUS_STRUCT) autoCircData.pvVal2; // Reqd XferStatusStruct
1290  if (autoCircData.pvVal3)
1291  acXfer.acTransferRoute = *(NTV2RoutingTable*) autoCircData.pvVal3; // Optional RoutingTable
1292  if (autoCircData.pvVal4)
1293  acXfer.acTask = *(PAUTOCIRCULATE_TASK_STRUCT) autoCircData.pvVal4; // Optional TaskStruct
1294 
1295  // Ensure audio buffer alignment OK
1296  if (acXfer.acTransfer.audioBufferSize && (acXfer.acTransfer.audioBufferSize % 4))
1297  {bRes = false; WDIFAIL("ACXferEx2 failed: audio buffer size " << DEC(acXfer.acTransfer.audioBufferSize) << " not mod 4"); break;}
1298  if (acXfer.acTransfer.audioBuffer && (ULWord64(acXfer.acTransfer.audioBuffer) % 4))
1299  {bRes = false; WDIFAIL("ACXferEx2 failed: audio buffer addr " << xHEX0N(acXfer.acTransfer.audioBuffer,16) << " not DWORD-aligned"); break;}
1300 
1303  &acStatus, sizeof (AUTOCIRCULATE_TRANSFER_STATUS_STRUCT), &dwBytesReturned, NULL);
1305  if (bRes)
1306  *(PAUTOCIRCULATE_TRANSFER_STATUS_STRUCT)autoCircData.pvVal2 = acStatus;
1307  else
1308  WDIFAIL("ACXferEx2 failed: " << ::GetKernErrStr(GetLastError()));
1309  break;
1310  } // eTransferAutoCirculateEx2
1311 
1312  case eSetCaptureTask:
1313  {
1315  memset(&autoCircFrame, 0, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME_EX2_S));
1316  autoCircFrame.Property.Set = _GUID_PROPSET;
1318  autoCircFrame.Property.Flags = KSPROPERTY_TYPE_SET;
1319  autoCircFrame.channelSpec = autoCircData.channelSpec;
1320  autoCircFrame.eCommand = autoCircData.eCommand;
1321  autoCircFrame.lFrameNum = 0;
1322 
1323  if (!autoCircData.pvVal1)
1324  {bRes = false; WDIFAIL("ACSetCaptureTask failed: NULL TaskStruct"); break;}
1325  autoCircFrame.acTask = *(AUTOCIRCULATE_TASK_STRUCT *) autoCircData.pvVal1; // Reqd TaskStruct
1326 
1328  bRes = DeviceIoControl(_hDevice, IOCTL_AJAPROPS_AUTOCIRC_CAPTURE_TASK, &autoCircFrame, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME_EX2_S),
1329  &autoCircFrame, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME_EX2_S), &dwBytesReturned, NULL);
1331  if (!bRes)
1332  WDIFAIL("ACSetCaptureTask failed: " << ::GetKernErrStr(GetLastError()));
1333  break;
1334  } // eSetCaptureTask
1335 
1336  case eSetActiveFrame:
1338  { bRes = false;
1339  WDIFAIL("Bad AC command %d" << autoCircData.eCommand);
1340  break;
1341  }
1342  } // switch on autoCircData.eCommand
1343  return bRes;
1344 } // AutoCirculate
1345 
1346 
1348 {
1349  if (!pInMessage)
1350  {WDIFAIL("Failed: NULL pointer"); return false;}
1351  DWORD dwBytesReturned(0);
1353  const bool ok = DeviceIoControl(_hDevice, IOCTL_AJANTV2_MESSAGE, pInMessage, pInMessage->GetSizeInBytes (), pInMessage, pInMessage->GetSizeInBytes(), &dwBytesReturned, NULL);
1355  if (!ok)
1356  {WDIFAIL("Failed: " << ::GetKernErrStr(GetLastError())); return false;}
1357  return true;
1358 }
1359 
1360 
1362 {
1363  if (!pInMessage)
1364  {WDIFAIL("Failed: NULL pointer"); return false;}
1365  DWORD dwBytesReturned(0);
1367  const bool ok = DeviceIoControl(_hDevice, IOCTL_AJAHEVC_MESSAGE, pInMessage, pInMessage->size, pInMessage, pInMessage->size, &dwBytesReturned, NULL);
1369  if (!ok)
1370  {WDIFAIL("Failed: " << ::GetKernErrStr(GetLastError())); return false;}
1371  return true;
1372 }
1373 
1374 
1376 {
1378 }
1379 
1381 {
1383 }
1384 
1385 
1386 //
1387 // Management of downloaded Xilinx bitfile
1388 //
1389 //
1391 {
1392  if (IsRemote())
1393  return CNTV2DriverInterface::DriverGetBitFileInformation (outBitfileInfo, bitFileType);
1394  if (::NTV2DeviceHasSPIFlash(_boardID)) // No need to query the driver for boards with SPIFlash
1395  return CNTV2DriverInterface::DriverGetBitFileInformation (outBitfileInfo, bitFileType);
1396 
1397  // Ask the driver...
1398  DWORD dwBytesReturned(0);
1400  ZeroMemory(&propStruct,sizeof(KSPROPERTY_AJAPROPS_GETSETBITFILEINFO_S));
1401  propStruct.Property.Set = _GUID_PROPSET;
1403  propStruct.Property.Flags = KSPROPERTY_TYPE_GET;
1404  if (!DeviceIoControl(_hDevice, IOCTL_AJAPROPS_GETSETBITFILEINFO, &propStruct, sizeof(KSPROPERTY_AJAPROPS_GETSETBITFILEINFO_S),
1405  &propStruct, sizeof(KSPROPERTY_AJAPROPS_GETSETBITFILEINFO_S), &dwBytesReturned, NULL))
1406  {
1407  WDIFAIL("Failed");
1408  return false;
1409  }
1410  outBitfileInfo = propStruct.bitFileInfoStruct;
1411  return true;
1412 }
1413 
1415 {
1416  DWORD dwBytesReturned(0);
1418  ZeroMemory(&propStruct, sizeof(KSPROPERTY_AJAPROPS_GETSETBITFILEINFO_S));
1419  propStruct.Property.Set = _GUID_PROPSET;
1421  propStruct.Property.Flags = KSPROPERTY_TYPE_SET;
1422  propStruct.bitFileInfoStruct = inBitfileInfo;
1423  if (DeviceIoControl(_hDevice, IOCTL_AJAPROPS_GETSETBITFILEINFO, &propStruct, sizeof(KSPROPERTY_AJAPROPS_GETSETBITFILEINFO_S),
1424  &propStruct, sizeof(KSPROPERTY_AJAPROPS_GETSETBITFILEINFO_S), &dwBytesReturned, NULL))
1425  return true;
1426 
1427  WDIFAIL("Failed");
1428  return false;
1429 }
1430 
1431 
1432 #include <ntv2devicefeatures.h>
1433 
1435 {
1437 }
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:1154
AUTOCIRCULATE_DATA::channelSpec
NTV2Crosspoint channelSpec
Definition: ntv2publicinterface.h:4341
CNTV2DriverInterface::mSkipRegWrites
bool mSkipRegWrites
True if actual register writes are skipped while recording.
Definition: ntv2driverinterface.h:678
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:304
PAUTOCIRCULATE_TASK_STRUCT
struct AUTOCIRCULATE_TASK_STRUCT * PAUTOCIRCULATE_TASK_STRUCT
kRegBoardID
@ kRegBoardID
Definition: ntv2publicinterface.h:124
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:4351
CNTV2WinDriverInterface::SetAudioOutputMode
virtual bool SetAudioOutputMode(NTV2_GlobalAudioPlaybackMode mode)
Definition: ntv2windriverinterface.cpp:1375
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:692
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 Frame Store. They're also commonly used to i...
Definition: ntv2enums.h:1305
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:675
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:1134
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:601
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:1347
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:536
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:9764
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:4223
AUTOCIRCULATE_DATA::bVal3
BOOL_ bVal3
Definition: ntv2publicinterface.h:4352
NTV2DeviceHasSPIFlash
bool NTV2DeviceHasSPIFlash(const NTV2DeviceID inDeviceID)
Definition: ntv2devicefeatures.hpp:7456
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:1380
CNTV2DriverInterface::_pCh2FrameBaseAddress
ULWord * _pCh2FrameBaseAddress
Definition: ntv2driverinterface.h:694
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:4549
KSPROPERTY_AJAPROPS_DMA_EX_S::ulVidSegmentCardPitch
ULWord ulVidSegmentCardPitch
Definition: ntv2winpublicinterface.h:228
CNTV2DriverInterface::GetInterruptCount
virtual bool GetInterruptCount(const INTERRUPT_ENUMS eInterrupt, ULWord &outCount)=0
Answers with the number of interrupts of the given type processed by the driver.
Definition: ntv2driverinterface.cpp:330
PULWord
uint32_t * PULWord
Definition: ajatypes.h:247
CNTV2DriverInterface::_boardNumber
UWord _boardNumber
My device index number.
Definition: ntv2driverinterface.h:673
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:457
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:674
ePrerollAutoCirculate
@ ePrerollAutoCirculate
Definition: ntv2publicinterface.h:4220
eGetIntCount
@ eGetIntCount
Definition: ntv2publicinterface.h:3725
AUTOCIRCULATE_DATA::bVal6
BOOL_ bVal6
Definition: ntv2publicinterface.h:4355
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:789
NTV2_IS_VALID_INTERRUPT_ENUM
#define NTV2_IS_VALID_INTERRUPT_ENUM(__e__)
Definition: ntv2publicinterface.h:3763
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:832
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:4362
CNTV2WinDriverInterface::AutoCirculate
virtual bool AutoCirculate(AUTOCIRCULATE_DATA &autoCircData)
Sends an AutoCirculate command to the NTV2 driver.
Definition: ntv2windriverinterface.cpp:1009
AUTOCIRCULATE_DATA::pvVal3
void * pvVal3
Definition: ntv2publicinterface.h:4361
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:393
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:685
AUTOCIRCULATE_DATA::lVal5
LWord lVal5
Definition: ntv2publicinterface.h:4347
NTV2RoutingTable
Definition: ntv2publicinterface.h:4026
AJA_DebugStat_DMATransferP2P
@ AJA_DebugStat_DMATransferP2P
Definition: debugshare.h:243
AUTOCIRCULATE_DATA::lVal3
LWord lVal3
Definition: ntv2publicinterface.h:4345
NTV2_GlobalAudioPlaybackMode
NTV2_GlobalAudioPlaybackMode
Definition: ntv2enums.h:2047
eAbortAutoCirc
@ eAbortAutoCirc
Definition: ntv2publicinterface.h:4222
eTransferAutoCirculate
@ eTransferAutoCirculate
Definition: ntv2publicinterface.h:4221
NTV2DMAEngine
NTV2DMAEngine
Definition: ntv2enums.h:1801
CNTV2WinDriverInterface::HevcSendMessage
virtual bool HevcSendMessage(HevcMessageHeader *pMessage)
Sends an HEVC message to the NTV2 driver.
Definition: ntv2windriverinterface.cpp:1361
eGetFrameStamp
@ eGetFrameStamp
Definition: ntv2publicinterface.h:4218
KSPROPERTY_AJAPROPS_AUTOCIRC_TRANSFER_EX2_S
Definition: ntv2winpublicinterface.h:390
FRAME_STAMP_STRUCT
Definition: ntv2publicinterface.h:4405
AUTOCIRCULATE_DATA::eCommand
AUTO_CIRC_COMMAND eCommand
Definition: ntv2publicinterface.h:4340
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:246
IOCTL_AJAPROPS_DMA_EX
#define IOCTL_AJAPROPS_DMA_EX
Definition: ntv2winpublicinterface.h:57
NTV2BitFileType
NTV2BitFileType
Definition: ntv2enums.h:3269
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:1390
AUTOCIRCULATE_P2P_STRUCT::videoBusSize
ULWord videoBusSize
Definition: ntv2publicinterface.h:4632
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:4631
KSPROPERTY_AJAPROPS_AUTOCIRC_TRANSFER_EX
@ KSPROPERTY_AJAPROPS_AUTOCIRC_TRANSFER_EX
Definition: ntv2winpublicinterface.h:85
AUTOCIRCULATE_DATA::lVal1
LWord lVal1
Definition: ntv2publicinterface.h:4343
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:4219
KSPROPERTY_AJAPROPS_AUTOCIRC_TRANSFER_EX_S::eCommand
AUTO_CIRC_COMMAND eCommand
Definition: ntv2winpublicinterface.h:374
CNTV2WinDriverInterface::_hDevice
HANDLE _hDevice
Definition: ntv2windriverinterface.h:130
AJA_DebugStat_WaitForInterruptUartTx2
@ AJA_DebugStat_WaitForInterruptUartTx2
Definition: debugshare.h:238
eGetAutoCirc
@ eGetAutoCirc
Definition: ntv2publicinterface.h:4217
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:337
CNTV2WinDriverInterface::UnmapXena2Flash
virtual bool UnmapXena2Flash(void)
Definition: ntv2windriverinterface.cpp:707
AUTOCIRCULATE_DATA::lVal2
LWord lVal2
Definition: ntv2publicinterface.h:4344
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:4548
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:6899
WDIFAIL
#define WDIFAIL(__x__)
Definition: ntv2windriverinterface.cpp:140
UWord
uint16_t UWord
Definition: ajatypes.h:244
KSPROPERTY_AJAPROPS_NEWSUBSCRIPTIONS_S::ulIntCount
ULONG ulIntCount
Definition: ntv2winpublicinterface.h:177
PVOID
void * PVOID
Definition: ajatypes.h:305
KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_EX_S::lVal2
LWord lVal2
Definition: ntv2winpublicinterface.h:292
AUTOCIRCULATE_DATA::bVal5
BOOL_ bVal5
Definition: ntv2publicinterface.h:4354
CNTV2WinDriverInterface::DriverSetBitFileInformation
virtual bool DriverSetBitFileInformation(const BITFILE_INFO_STRUCT &inBitfileInfo)
Definition: ntv2windriverinterface.cpp:1414
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:129
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:4224
AUTOCIRCULATE_DATA::lVal4
LWord lVal4
Definition: ntv2publicinterface.h:4346
eStartAutoCirc
@ eStartAutoCirc
Definition: ntv2publicinterface.h:4214
eSetCaptureTask
@ eSetCaptureTask
Definition: ntv2publicinterface.h:4227
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:9761
AUTOCIRCULATE_P2P_STRUCT::videoBusAddress
ULWord64 videoBusAddress
Definition: ntv2publicinterface.h:4630
NTV2RegInfo
struct NTV2RegInfo NTV2RegInfo
Everything needed to call CNTV2Card::ReadRegister or CNTV2Card::WriteRegister functions.
CNTV2DriverInterface::ConfigureInterrupt
virtual bool ConfigureInterrupt(const bool bEnable, const INTERRUPT_ENUMS eInterruptType)=0
Definition: ntv2driverinterface.cpp:344
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:190
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:4350
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:127
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:91
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:4348
KSPROPERTY_AJAPROPS_NEWSUBSCRIPTIONS_S
Added to support 64 bit driver.
Definition: ntv2winpublicinterface.h:173
CNTV2WinDriverInterface::_vecDmaLocked
DMA_LOCKED_VEC _vecDmaLocked
Definition: ntv2windriverinterface.h:136
CNTV2WinDriverInterface::CompleteMemoryForDMA
virtual bool CompleteMemoryForDMA(ULWord *pFrameBuffer)
Definition: ntv2windriverinterface.cpp:808
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:4282
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:5579
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:4633
KSPROPERTY_AJAPROPS_DMA_S::dmaEngine
NTV2DMAEngine dmaEngine
Definition: ntv2winpublicinterface.h:192
CNTV2DriverInterface::_pRegisterBaseAddressLength
ULWord _pRegisterBaseAddressLength
Definition: ntv2driverinterface.h:691
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:350
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:4229
ULWord64
uint64_t ULWord64
Definition: ajatypes.h:249
CNTV2WinDriverInterface::_GUID_PROPSET
GUID _GUID_PROPSET
Definition: ntv2windriverinterface.h:131
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:4491
KSPROPERTY_AJAPROPS_AUTOCIRC_STATUS_S::channelSpec
NTV2Crosspoint channelSpec
Definition: ntv2winpublicinterface.h:322
ePauseAutoCirc
@ ePauseAutoCirc
Definition: ntv2publicinterface.h:4216
CNTV2DriverInterface::_pCh1FrameBaseAddress
ULWord * _pCh1FrameBaseAddress
Definition: ntv2driverinterface.h:693
eInitAutoCirc
@ eInitAutoCirc
Definition: ntv2publicinterface.h:4213
AUTOCIRCULATE_P2P_STRUCT
Definition: ntv2publicinterface.h:4626
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:4215
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:4226
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:677
AJA_DebugStat_WriteRegister
@ AJA_DebugStat_WriteRegister
Definition: debugshare.h:225
AUTOCIRCULATE_DATA::bVal4
BOOL_ bVal4
Definition: ntv2publicinterface.h:4353
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:4228
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:4724
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:4357
ntv2publicinterface.h
Declares enums and structs used by all platform drivers and the SDK.
CNTV2WinDriverInterface::_spDevInfoData
SP_DEVINFO_DATA _spDevInfoData
Definition: ntv2windriverinterface.h:128
KSPROPERTY_AJAPROPS_DMA_EX_S::ulAudNumBytes
ULWord ulAudNumBytes
Definition: ntv2winpublicinterface.h:224
NTV2_PIO
@ NTV2_PIO
Definition: ntv2enums.h:1803
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:549
CNTV2WinDriverInterface::RestoreHardwareProcampRegisters
virtual bool RestoreHardwareProcampRegisters(void)
Definition: ntv2windriverinterface.cpp:1434
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:63
CNTV2DriverInterface::_pRegisterBaseAddress
ULWord * _pRegisterBaseAddress
Definition: ntv2driverinterface.h:690
CNTV2DriverInterface::mRegWritesLock
AJALock mRegWritesLock
Guard mutex for mRegWrites.
Definition: ntv2driverinterface.h:686
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:4225
AUTOCIRCULATE_DATA::bVal7
BOOL_ bVal7
Definition: ntv2publicinterface.h:4356
KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_S::bVal3
bool bVal3
Definition: ntv2winpublicinterface.h:279
xHEX0N
#define xHEX0N(__x__, __n__)
Definition: ntv2publicinterface.h:5578
CNTV2DriverInterface::BumpEventCount
virtual void BumpEventCount(const INTERRUPT_ENUMS eInterruptType)
Atomically increments the event count tally for the given interrupt type.
Definition: ntv2driverinterface.cpp:1220
AUTOCIRCULATE_DATA::pvVal1
void * pvVal1
Definition: ntv2publicinterface.h:4359
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:318
NTV2_MAPMEMORY_FRAMEBUFFER
@ NTV2_MAPMEMORY_FRAMEBUFFER
Definition: ntv2winpublicinterface.h:117
AUTOCIRCULATE_DATA::pvVal2
void * pvVal2
Definition: ntv2publicinterface.h:4360
AJA_DebugStat_WaitForInterruptIn4
@ AJA_DebugStat_WaitForInterruptIn4
Definition: debugshare.h:229
CNTV2DriverInterface::_pFrameBaseAddress
ULWord * _pFrameBaseAddress
Definition: ntv2driverinterface.h:689
CNTV2DriverInterface::DriverGetBitFileInformation
virtual bool DriverGetBitFileInformation(BITFILE_INFO_STRUCT &outBitFileInfo, const NTV2BitFileType inBitFileType=NTV2_VideoProcBitFile)
Answers with the currently-installed bitfile information.
Definition: ntv2driverinterface.cpp:586
KSPROPERTY_AJAPROPS_DMA_S::bSync
bool bSync
Definition: ntv2winpublicinterface.h:200
BITFILE_INFO_STRUCT
Definition: ntv2publicinterface.h:4772
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:196
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:4338
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:4628
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