AJA NTV2 SDK  17.1.1.1245
NTV2 SDK 17.1.1.1245
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 CNTV2DriverInterface::DmaTransfer(inDMAEngine, inIsRead, inFrameNumber, pFrameBuffer,
842  inOffsetBytes, inByteCount, inSynchronous);
843  if (!IsOpen())
844  return false;
845 
846  KSPROPERTY_AJAPROPS_DMA_S propStruct;
847  DWORD dwBytesReturned = 0;
848  ZeroMemory (&propStruct,sizeof(KSPROPERTY_AJAPROPS_DMA_S));
849  propStruct.Property.Set = _GUID_PROPSET;
850  propStruct.Property.Id = KSPROPERTY_AJAPROPS_DMA;
851  propStruct.Property.Flags = inIsRead ? KSPROPERTY_TYPE_GET : KSPROPERTY_TYPE_SET;
852  propStruct.dmaEngine = inDMAEngine;
853  propStruct.pvVidUserVa = PVOID(pFrameBuffer);
854  propStruct.ulFrameNumber = inFrameNumber;
855  propStruct.ulFrameOffset = inOffsetBytes;
856  propStruct.ulVidNumBytes = inByteCount;
857  propStruct.ulAudNumBytes = 0;
858  propStruct.bSync = inSynchronous;
860  const bool ok = DeviceIoControl(_hDevice, IOCTL_AJAPROPS_DMA, &propStruct, sizeof(KSPROPERTY_AJAPROPS_DMA_S),
861  &propStruct, sizeof(KSPROPERTY_AJAPROPS_DMA_S), &dwBytesReturned, NULL);
863  if (!ok)
864  {
865  WDIFAIL ("failed: " << ::GetKernErrStr(GetLastError()) << ": eng=" << inDMAEngine << " frm=" << inFrameNumber
866  << " off=" << HEX8(inOffsetBytes) << " len=" << HEX8(inByteCount) << " " << (inIsRead ? "Rd" : "Wr"));
867  return false;
868  }
869  return true;
870 }
871 
872 
874  const bool inIsRead,
875  const ULWord inFrameNumber,
876  ULWord * pFrameBuffer,
877  const ULWord inOffsetBytes,
878  const ULWord inByteCount,
879  const ULWord inNumSegments,
880  const ULWord inHostPitch,
881  const ULWord inCardPitch,
882  const bool inSynchronous)
883 {
884  if (IsRemote())
885  return CNTV2DriverInterface::DmaTransfer (inDMAEngine, inIsRead, inFrameNumber, pFrameBuffer, inOffsetBytes, inByteCount,
886  inNumSegments, inHostPitch, inCardPitch, inSynchronous);
887  if (!IsOpen())
888  return false;
889 
890  KSPROPERTY_AJAPROPS_DMA_EX_S propStruct;
891  DWORD dwBytesReturned = 0;
892  ZeroMemory (&propStruct,sizeof(KSPROPERTY_AJAPROPS_DMA_EX_S));
893  propStruct.Property.Set = _GUID_PROPSET;
894  propStruct.Property.Id = KSPROPERTY_AJAPROPS_DMA_EX;
895  propStruct.Property.Flags = inIsRead ? KSPROPERTY_TYPE_GET : KSPROPERTY_TYPE_SET;
896  propStruct.dmaEngine = inDMAEngine;
897  propStruct.pvVidUserVa = PVOID(pFrameBuffer);
898  propStruct.ulFrameNumber = inFrameNumber;
899  propStruct.ulFrameOffset = inOffsetBytes;
900  propStruct.ulVidNumBytes = inByteCount;
901  propStruct.ulAudNumBytes = 0;
902  propStruct.ulVidNumSegments = inNumSegments;
903  propStruct.ulVidSegmentHostPitch = inHostPitch;
904  propStruct.ulVidSegmentCardPitch = inCardPitch;
905  propStruct.bSync = inSynchronous;
907  const bool ok = DeviceIoControl(_hDevice, IOCTL_AJAPROPS_DMA_EX, &propStruct, sizeof(KSPROPERTY_AJAPROPS_DMA_EX_S),
908  &propStruct, sizeof(KSPROPERTY_AJAPROPS_DMA_EX_S), &dwBytesReturned, NULL);
910  if (!ok)
911  {
912  WDIFAIL ("failed: " << ::GetKernErrStr(GetLastError()) << ": eng=" << inDMAEngine << " frm=" << inFrameNumber
913  << " off=" << HEX8(inOffsetBytes) << " len=" << HEX8(inByteCount) << " " << (inIsRead ? "Rd" : "Wr"));
914  return false;
915  }
916  return true;
917 }
918 
920  const NTV2Channel inDMAChannel,
921  const bool inIsTarget,
922  const ULWord inFrameNumber,
923  const ULWord inCardOffsetBytes,
924  const ULWord inByteCount,
925  const ULWord inNumSegments,
926  const ULWord inHostPitch,
927  const ULWord inCardPitch,
928  const PCHANNEL_P2P_STRUCT & inP2PData)
929 {
930  if (IsRemote())
931  return CNTV2DriverInterface::DmaTransfer (inDMAEngine, inDMAChannel, inIsTarget, inFrameNumber, inCardOffsetBytes, inByteCount,
932  inNumSegments, inHostPitch, inCardPitch, inP2PData);
933  if (!IsOpen())
934  return false;
935  if (!inP2PData)
936  {
937  WDIFAIL ("pP2PData == NULL");
938  return false;
939  }
940 
941  DWORD dwBytesReturned(0);
943  ZeroMemory (&propStruct,sizeof(KSPROPERTY_AJAPROPS_DMA_P2P_S));
944 
945  propStruct.Property.Set = _GUID_PROPSET;
946  propStruct.Property.Id = KSPROPERTY_AJAPROPS_DMA_P2P;
947  if (inIsTarget)
948  { // reset p2p struct
949  memset(inP2PData, 0, sizeof(CHANNEL_P2P_STRUCT));
950  inP2PData->p2pSize = sizeof(CHANNEL_P2P_STRUCT);
951  propStruct.Property.Flags = KSPROPERTY_TYPE_GET; // get does target
952  }
953  else
954  { // check for valid p2p struct
955  if (inP2PData->p2pSize != sizeof(CHANNEL_P2P_STRUCT))
956  {
957  WDIFAIL ("p2pSize=" << inP2PData->p2pSize << " != sizeof(CHANNEL_P2P_STRUCT) " << sizeof(CHANNEL_P2P_STRUCT));
958  return false;
959  }
960  propStruct.Property.Flags = KSPROPERTY_TYPE_SET; // set does transfer
961  }
962 
963  propStruct.dmaEngine = inDMAEngine;
964  propStruct.dmaChannel = inDMAChannel;
965  propStruct.ulFrameNumber = inFrameNumber;
966  propStruct.ulFrameOffset = inCardOffsetBytes;
967  propStruct.ulVidNumBytes = inByteCount;
968  propStruct.ulVidNumSegments = inNumSegments;
969  propStruct.ulVidSegmentHostPitch = inHostPitch;
970  propStruct.ulVidSegmentCardPitch = inCardPitch;
971  propStruct.ullVideoBusAddress = inP2PData->videoBusAddress;
972  propStruct.ullMessageBusAddress = inP2PData->messageBusAddress;
973  propStruct.ulVideoBusSize = inP2PData->videoBusSize;
974  propStruct.ulMessageData = inP2PData->messageData;
976  const bool ok = DeviceIoControl(_hDevice, IOCTL_AJAPROPS_DMA_P2P, &propStruct, sizeof(KSPROPERTY_AJAPROPS_DMA_P2P_S),
977  &propStruct, sizeof(KSPROPERTY_AJAPROPS_DMA_P2P_S), &dwBytesReturned, NULL);
979  if (!ok)
980  {
981  WDIFAIL ("Failed: " << ::GetKernErrStr(GetLastError()) << ": eng=" << inDMAEngine << " ch=" << inDMAChannel
982  << " frm=" << inFrameNumber << " off=" << HEX8(inCardOffsetBytes) << " siz=" << HEX8(inByteCount)
983  << " #segs=" << inNumSegments << " hostPitch=" << inHostPitch << " cardPitch=" << inCardPitch
984  << " target=" << (inIsTarget?"Y":"N"));
985  return false;
986  }
987  if (inIsTarget)
988  {
989  // check for data returned
990  if (dwBytesReturned != sizeof(KSPROPERTY_AJAPROPS_DMA_P2P_S))
991  {
992  WDIFAIL ("Target failed: " << ::GetKernErrStr(GetLastError()) << " eng=" << inDMAEngine << " ch=" << inDMAChannel
993  << " frm=" << inFrameNumber << " off=" << HEX8(inCardOffsetBytes) << " vSiz=" << HEX8(inByteCount)
994  << " segs=" << inNumSegments << " hostPitch=" << inHostPitch << " cardPitch=" << inCardPitch
995  << " target=" << (inIsTarget?"Y":"N") << " p2pBytesRet=" << HEX8(dwBytesReturned)
996  << " p2pSize=" << HEX8(sizeof(KSPROPERTY_AJAPROPS_DMA_P2P_S)));
997  return false;
998  }
999 
1000  // fill in p2p data
1001  inP2PData->videoBusAddress = propStruct.ullVideoBusAddress;
1002  inP2PData->messageBusAddress = propStruct.ullMessageBusAddress;
1003  inP2PData->videoBusSize = propStruct.ulVideoBusSize;
1004  inP2PData->messageData = propStruct.ulMessageData;
1005  }
1006  return true;
1007 }
1008 
1009 
1011 // AutoCirculate
1013 {
1014  if (IsRemote())
1015  return CNTV2DriverInterface::AutoCirculate(autoCircData);
1016  bool bRes(true);
1017  DWORD dwBytesReturned(0);
1018 
1019  switch (autoCircData.eCommand)
1020  {
1021  case eInitAutoCirc:
1022  {
1023  if (autoCircData.lVal4 <= 1 && autoCircData.lVal5 == 0 && autoCircData.lVal6 == 0)
1024  {
1026  memset(&autoCircControl, 0, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_S));
1027  autoCircControl.Property.Set = _GUID_PROPSET;
1028  autoCircControl.Property.Id = KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL;
1029  autoCircControl.Property.Flags = KSPROPERTY_TYPE_SET;
1030  autoCircControl.channelSpec = autoCircData.channelSpec;
1031  autoCircControl.eCommand = autoCircData.eCommand;
1032 
1033  autoCircControl.lVal1 = autoCircData.lVal1;
1034  autoCircControl.lVal2 = autoCircData.lVal2;
1035  autoCircControl.lVal3 = autoCircData.lVal3;
1036  autoCircControl.bVal1 = autoCircData.bVal1;
1037  autoCircControl.bVal2 = autoCircData.bVal2;
1038  autoCircControl.bVal3 = autoCircData.bVal3;
1039  autoCircControl.bVal4 = autoCircData.bVal4;
1040  autoCircControl.bVal5 = autoCircData.bVal5;
1041  autoCircControl.bVal6 = autoCircData.bVal6;
1042  autoCircControl.bVal7 = autoCircData.bVal7;
1043  autoCircControl.bVal8 = autoCircData.bVal8;
1045  bRes = DeviceIoControl(_hDevice, IOCTL_AJAPROPS_AUTOCIRC_CONTROL, &autoCircControl, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_S),
1046  &autoCircControl, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_S), &dwBytesReturned, NULL);
1048  if (!bRes)
1049  WDIFAIL("ACInit failed: " << ::GetKernErrStr(GetLastError()));
1050  }
1051  else
1052  {
1054  memset(&autoCircControl, 0, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_EX_S));
1055  autoCircControl.Property.Set = _GUID_PROPSET;
1057  autoCircControl.Property.Flags = KSPROPERTY_TYPE_SET;
1058  autoCircControl.channelSpec = autoCircData.channelSpec;
1059  autoCircControl.eCommand = autoCircData.eCommand;
1060 
1061  autoCircControl.lVal1 = autoCircData.lVal1;
1062  autoCircControl.lVal2 = autoCircData.lVal2;
1063  autoCircControl.lVal3 = autoCircData.lVal3;
1064  autoCircControl.lVal4 = autoCircData.lVal4;
1065  autoCircControl.lVal5 = autoCircData.lVal5;
1066  autoCircControl.lVal6 = autoCircData.lVal6;
1067  autoCircControl.bVal1 = autoCircData.bVal1;
1068  autoCircControl.bVal2 = autoCircData.bVal2;
1069  autoCircControl.bVal3 = autoCircData.bVal3;
1070  autoCircControl.bVal4 = autoCircData.bVal4;
1071  autoCircControl.bVal5 = autoCircData.bVal5;
1072  autoCircControl.bVal6 = autoCircData.bVal6;
1073  autoCircControl.bVal7 = autoCircData.bVal7;
1074  autoCircControl.bVal8 = autoCircData.bVal8;
1076  bRes = DeviceIoControl(_hDevice, IOCTL_AJAPROPS_AUTOCIRC_CONTROL_EX, &autoCircControl, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_EX_S),
1077  &autoCircControl, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_EX_S), &dwBytesReturned, NULL);
1079  if (!bRes)
1080  WDIFAIL("ACInitEx failed: " << ::GetKernErrStr(GetLastError()));
1081  }
1082  break;
1083  } // eInitAutoCirc
1084 
1085  case eStartAutoCirc:
1086  case eStopAutoCirc:
1087  case eAbortAutoCirc:
1088  case ePauseAutoCirc:
1089  case eFlushAutoCirculate:
1090  case ePrerollAutoCirculate:
1091  case eStartAutoCircAtTime:
1092  {
1094  memset(&autoCircControl, 0, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_S));
1095  autoCircControl.Property.Set = _GUID_PROPSET;
1096  autoCircControl.Property.Id = KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL;
1097  autoCircControl.Property.Flags = KSPROPERTY_TYPE_SET;
1098  autoCircControl.channelSpec = autoCircData.channelSpec;
1099  autoCircControl.eCommand = autoCircData.eCommand;
1100 
1101  switch (autoCircData.eCommand)
1102  {
1103  case ePauseAutoCirc:
1104  autoCircControl.bVal1 = autoCircData.bVal1;
1105  break;
1106 
1107  case ePrerollAutoCirculate:
1108  autoCircControl.lVal1 = autoCircData.lVal1;
1109  break;
1110 
1111  case eStartAutoCircAtTime:
1112  autoCircControl.lVal1 = autoCircData.lVal1;
1113  autoCircControl.lVal2 = autoCircData.lVal2;
1114  break;
1115 
1116  default: break; //NTV2_ASSERT(false && "Bad eCommand");
1117  }
1119  bRes = DeviceIoControl(_hDevice, IOCTL_AJAPROPS_AUTOCIRC_CONTROL, &autoCircControl, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_S),
1120  &autoCircControl, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_S), &dwBytesReturned, NULL);
1122  if (!bRes)
1123  WDIFAIL("ACInitEx failed: " << ::GetKernErrStr(GetLastError()));
1124  break;
1125  } // eStartAutoCirc, eStopAutoCirc, etc.
1126 
1127  case eGetAutoCirc:
1128  {
1130  memset(&autoCircStatus, 0, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_STATUS_S));
1131  autoCircStatus.Property.Set = _GUID_PROPSET;
1132  autoCircStatus.Property.Id = KSPROPERTY_AJAPROPS_AUTOCIRC_STATUS;
1133  autoCircStatus.Property.Flags = KSPROPERTY_TYPE_GET;
1134  autoCircStatus.channelSpec = autoCircData.channelSpec;
1135  autoCircStatus.eCommand = autoCircData.eCommand;
1136  if (autoCircData.pvVal1)
1137  {
1139  bRes = DeviceIoControl(_hDevice, IOCTL_AJAPROPS_AUTOCIRC_STATUS, &autoCircStatus, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_STATUS_S),
1140  &autoCircStatus, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_STATUS_S), &dwBytesReturned, NULL);
1142  if (bRes)
1143  *(AUTOCIRCULATE_STATUS_STRUCT *)autoCircData.pvVal1 = autoCircStatus.autoCircStatus;
1144  else
1145  WDIFAIL("GetAC failed: " << ::GetKernErrStr(GetLastError()));
1146  }
1147  else
1148  {bRes = false; WDIFAIL("GetAC failed: NULL pvVal1");}
1149  break;
1150  } // eGetAutoCirc
1151 
1152  case eGetFrameStamp:
1153  {
1155  memset(&autoCircFrame, 0, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME_S));
1156  autoCircFrame.Property.Set = _GUID_PROPSET;
1157  autoCircFrame.Property.Id = KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME;
1158  autoCircFrame.Property.Flags = KSPROPERTY_TYPE_GET;
1159  autoCircFrame.channelSpec = autoCircData.channelSpec;
1160  autoCircFrame.eCommand = autoCircData.eCommand;
1161  autoCircFrame.lFrameNum = autoCircData.lVal1;
1162 
1163  if (autoCircData.pvVal1)
1164  {
1165  autoCircFrame.frameStamp = *(FRAME_STAMP_STRUCT *) autoCircData.pvVal1;
1167  bRes = DeviceIoControl(_hDevice, IOCTL_AJAPROPS_AUTOCIRC_FRAME, &autoCircFrame, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME_S),
1168  &autoCircFrame, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME_S), &dwBytesReturned, NULL);
1170  if (bRes)
1171  *(FRAME_STAMP_STRUCT *)autoCircData.pvVal1 = autoCircFrame.frameStamp;
1172  else
1173  WDIFAIL("GetFrameStamp failed: " << ::GetKernErrStr(GetLastError()));
1174  }
1175  else
1176  {bRes = false; WDIFAIL("GetFrameStamp failed: NULL pvVal1");}
1177  break;
1178  } // eGetFrameStamp
1179 
1180  case eGetFrameStampEx2:
1181  {
1183  memset(&autoCircFrame, 0, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME_EX2_S));
1184  autoCircFrame.Property.Set = _GUID_PROPSET;
1186  autoCircFrame.Property.Flags = KSPROPERTY_TYPE_GET;
1187  autoCircFrame.channelSpec = autoCircData.channelSpec;
1188  autoCircFrame.eCommand = autoCircData.eCommand;
1189  autoCircFrame.lFrameNum = autoCircData.lVal1;
1190 
1191  if (autoCircData.pvVal1)
1192  {
1193  autoCircFrame.frameStamp = *(FRAME_STAMP_STRUCT *) autoCircData.pvVal1;
1194  if (autoCircData.pvVal2)
1195  autoCircFrame.acTask = *(AUTOCIRCULATE_TASK_STRUCT *) autoCircData.pvVal2;
1196 
1198  bRes = DeviceIoControl(_hDevice, IOCTL_AJAPROPS_AUTOCIRC_FRAME_EX2, &autoCircFrame, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME_EX2_S),
1199  &autoCircFrame, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME_EX2_S), &dwBytesReturned, NULL);
1201  if (bRes)
1202  {
1203  *(FRAME_STAMP_STRUCT *)autoCircData.pvVal1 = autoCircFrame.frameStamp;
1204  if (autoCircData.pvVal2)
1205  *(AUTOCIRCULATE_TASK_STRUCT *) autoCircData.pvVal2 = autoCircFrame.acTask;
1206  }
1207  else
1208  WDIFAIL("GetFrameStampEx2 failed: " << ::GetKernErrStr(GetLastError()));
1209  }
1210  else
1211  {bRes = false; WDIFAIL("GetFrameStampEx2 failed: NULL pvVal1");}
1212  break;
1213  }
1214 
1216  {
1218  memset(&acXfer, 0, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_TRANSFER_S));
1219  acXfer.Property.Set = _GUID_PROPSET;
1221  acXfer.Property.Flags = KSPROPERTY_TYPE_GET;
1222  acXfer.eCommand = autoCircData.eCommand;
1223 
1224  if (!autoCircData.pvVal1 || !autoCircData.pvVal2)
1225  {bRes = false; WDIFAIL("ACXfer failed: pvVal1 or pvVal2 NULL"); break;}
1226  acXfer.acTransfer = *(PAUTOCIRCULATE_TRANSFER_STRUCT) autoCircData.pvVal1; // Reqd XferStruct
1227  AUTOCIRCULATE_TRANSFER_STATUS_STRUCT acStatus = *(PAUTOCIRCULATE_TRANSFER_STATUS_STRUCT) autoCircData.pvVal2; // Reqd XferStatusStruct
1228 
1229  // Ensure audio buffer alignment OK
1230  if (acXfer.acTransfer.audioBufferSize && (acXfer.acTransfer.audioBufferSize % 4))
1231  {bRes = false; WDIFAIL("ACXfer failed: audio buffer size " << DEC(acXfer.acTransfer.audioBufferSize) << " not mod 4"); break;}
1232  if (acXfer.acTransfer.audioBuffer && (ULWord64(acXfer.acTransfer.audioBuffer) % 4))
1233  {bRes = false; WDIFAIL("ACXfer failed: audio buffer addr " << xHEX0N(acXfer.acTransfer.audioBuffer,16) << " not DWORD-aligned"); break;}
1234 
1236  bRes = DeviceIoControl(_hDevice, IOCTL_AJAPROPS_AUTOCIRC_TRANSFER, &acXfer, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_TRANSFER_S),
1237  &acStatus, sizeof (AUTOCIRCULATE_TRANSFER_STATUS_STRUCT), &dwBytesReturned, NULL);
1239  if (bRes)
1240  *(PAUTOCIRCULATE_TRANSFER_STATUS_STRUCT)autoCircData.pvVal2 = acStatus;
1241  else
1242  WDIFAIL("ACXfer failed: " << ::GetKernErrStr(GetLastError()));
1243  break;
1244  } // eTransferAutoCirculate
1245 
1247  {
1249  memset(&acXfer, 0, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_TRANSFER_EX_S));
1250  acXfer.Property.Set = _GUID_PROPSET;
1252  acXfer.Property.Flags = KSPROPERTY_TYPE_GET;
1253  acXfer.eCommand = autoCircData.eCommand;
1254 
1255  if (!autoCircData.pvVal1 || !autoCircData.pvVal2)
1256  {bRes = false; WDIFAIL("ACXferEx failed: NULL XferStruct or XferStatusStruct"); break;}
1257  acXfer.acTransfer = *(PAUTOCIRCULATE_TRANSFER_STRUCT) autoCircData.pvVal1; // Reqd XferStruct
1258  AUTOCIRCULATE_TRANSFER_STATUS_STRUCT acStatus = *(PAUTOCIRCULATE_TRANSFER_STATUS_STRUCT) autoCircData.pvVal2; // Reqd XferStatusStruct
1259  if (autoCircData.pvVal3)
1260  acXfer.acTransferRoute = *(NTV2RoutingTable*) autoCircData.pvVal3; // Optional RoutingTable
1261 
1262  // Ensure audio buffer alignment OK
1263  if (acXfer.acTransfer.audioBufferSize && (acXfer.acTransfer.audioBufferSize % 4))
1264  {bRes = false; WDIFAIL("ACXferEx failed: audio buffer size " << DEC(acXfer.acTransfer.audioBufferSize) << " not mod 4"); break;}
1265  if (acXfer.acTransfer.audioBuffer && (ULWord64(acXfer.acTransfer.audioBuffer) % 4))
1266  {bRes = false; WDIFAIL("ACXferEx failed: audio buffer addr " << xHEX0N(acXfer.acTransfer.audioBuffer,16) << " not DWORD-aligned"); break;}
1267 
1270  &acStatus, sizeof (AUTOCIRCULATE_TRANSFER_STATUS_STRUCT), &dwBytesReturned, NULL);
1272  if (bRes)
1273  *(PAUTOCIRCULATE_TRANSFER_STATUS_STRUCT)autoCircData.pvVal2 = acStatus;
1274  else
1275  WDIFAIL("ACXferEx failed: " << ::GetKernErrStr(GetLastError()));
1276  break;
1277  } // eTransferAutoCirculateEx
1278 
1280  {
1282  memset(&acXfer, 0, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_TRANSFER_EX2_S));
1283  acXfer.Property.Set = _GUID_PROPSET;
1285  acXfer.Property.Flags = KSPROPERTY_TYPE_GET;
1286  acXfer.eCommand = autoCircData.eCommand;
1287 
1288  if (!autoCircData.pvVal1 || !autoCircData.pvVal2)
1289  {bRes = false; WDIFAIL("ACXferEx2 failed: NULL XferStruct or RoutingTable"); break;}
1290 
1291  acXfer.acTransfer = *(PAUTOCIRCULATE_TRANSFER_STRUCT) autoCircData.pvVal1; // Reqd XferStruct
1292  AUTOCIRCULATE_TRANSFER_STATUS_STRUCT acStatus = *(PAUTOCIRCULATE_TRANSFER_STATUS_STRUCT) autoCircData.pvVal2; // Reqd XferStatusStruct
1293  if (autoCircData.pvVal3)
1294  acXfer.acTransferRoute = *(NTV2RoutingTable*) autoCircData.pvVal3; // Optional RoutingTable
1295  if (autoCircData.pvVal4)
1296  acXfer.acTask = *(PAUTOCIRCULATE_TASK_STRUCT) autoCircData.pvVal4; // Optional TaskStruct
1297 
1298  // Ensure audio buffer alignment OK
1299  if (acXfer.acTransfer.audioBufferSize && (acXfer.acTransfer.audioBufferSize % 4))
1300  {bRes = false; WDIFAIL("ACXferEx2 failed: audio buffer size " << DEC(acXfer.acTransfer.audioBufferSize) << " not mod 4"); break;}
1301  if (acXfer.acTransfer.audioBuffer && (ULWord64(acXfer.acTransfer.audioBuffer) % 4))
1302  {bRes = false; WDIFAIL("ACXferEx2 failed: audio buffer addr " << xHEX0N(acXfer.acTransfer.audioBuffer,16) << " not DWORD-aligned"); break;}
1303 
1306  &acStatus, sizeof (AUTOCIRCULATE_TRANSFER_STATUS_STRUCT), &dwBytesReturned, NULL);
1308  if (bRes)
1309  *(PAUTOCIRCULATE_TRANSFER_STATUS_STRUCT)autoCircData.pvVal2 = acStatus;
1310  else
1311  WDIFAIL("ACXferEx2 failed: " << ::GetKernErrStr(GetLastError()));
1312  break;
1313  } // eTransferAutoCirculateEx2
1314 
1315  case eSetCaptureTask:
1316  {
1318  memset(&autoCircFrame, 0, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME_EX2_S));
1319  autoCircFrame.Property.Set = _GUID_PROPSET;
1321  autoCircFrame.Property.Flags = KSPROPERTY_TYPE_SET;
1322  autoCircFrame.channelSpec = autoCircData.channelSpec;
1323  autoCircFrame.eCommand = autoCircData.eCommand;
1324  autoCircFrame.lFrameNum = 0;
1325 
1326  if (!autoCircData.pvVal1)
1327  {bRes = false; WDIFAIL("ACSetCaptureTask failed: NULL TaskStruct"); break;}
1328  autoCircFrame.acTask = *(AUTOCIRCULATE_TASK_STRUCT *) autoCircData.pvVal1; // Reqd TaskStruct
1329 
1331  bRes = DeviceIoControl(_hDevice, IOCTL_AJAPROPS_AUTOCIRC_CAPTURE_TASK, &autoCircFrame, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME_EX2_S),
1332  &autoCircFrame, sizeof(KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME_EX2_S), &dwBytesReturned, NULL);
1334  if (!bRes)
1335  WDIFAIL("ACSetCaptureTask failed: " << ::GetKernErrStr(GetLastError()));
1336  break;
1337  } // eSetCaptureTask
1338 
1339  case eSetActiveFrame:
1341  { bRes = false;
1342  WDIFAIL("Bad AC command %d" << autoCircData.eCommand);
1343  break;
1344  }
1345  } // switch on autoCircData.eCommand
1346  return bRes;
1347 } // AutoCirculate
1348 
1349 
1351 {
1352  if (!pInMessage)
1353  {WDIFAIL("Failed: NULL pointer"); return false;}
1354  DWORD dwBytesReturned(0);
1356  const bool ok = DeviceIoControl(_hDevice, IOCTL_AJANTV2_MESSAGE, pInMessage, pInMessage->GetSizeInBytes (), pInMessage, pInMessage->GetSizeInBytes(), &dwBytesReturned, NULL);
1358  if (!ok)
1359  {WDIFAIL("Failed: " << ::GetKernErrStr(GetLastError())); return false;}
1360  return true;
1361 }
1362 
1363 
1365 {
1366  if (!pInMessage)
1367  {WDIFAIL("Failed: NULL pointer"); return false;}
1368  DWORD dwBytesReturned(0);
1370  const bool ok = DeviceIoControl(_hDevice, IOCTL_AJAHEVC_MESSAGE, pInMessage, pInMessage->size, pInMessage, pInMessage->size, &dwBytesReturned, NULL);
1372  if (!ok)
1373  {WDIFAIL("Failed: " << ::GetKernErrStr(GetLastError())); return false;}
1374  return true;
1375 }
1376 
1377 
1379 {
1381 }
1382 
1384 {
1386 }
1387 
1388 
1389 //
1390 // Management of downloaded Xilinx bitfile
1391 //
1392 //
1394 {
1395  if (IsRemote())
1396  return CNTV2DriverInterface::DriverGetBitFileInformation (outBitfileInfo, bitFileType);
1397  if (::NTV2DeviceHasSPIFlash(_boardID)) // No need to query the driver for boards with SPIFlash
1398  return CNTV2DriverInterface::DriverGetBitFileInformation (outBitfileInfo, bitFileType);
1399 
1400  // Ask the driver...
1401  DWORD dwBytesReturned(0);
1403  ZeroMemory(&propStruct,sizeof(KSPROPERTY_AJAPROPS_GETSETBITFILEINFO_S));
1404  propStruct.Property.Set = _GUID_PROPSET;
1406  propStruct.Property.Flags = KSPROPERTY_TYPE_GET;
1407  if (!DeviceIoControl(_hDevice, IOCTL_AJAPROPS_GETSETBITFILEINFO, &propStruct, sizeof(KSPROPERTY_AJAPROPS_GETSETBITFILEINFO_S),
1408  &propStruct, sizeof(KSPROPERTY_AJAPROPS_GETSETBITFILEINFO_S), &dwBytesReturned, NULL))
1409  {
1410  WDIFAIL("Failed");
1411  return false;
1412  }
1413  outBitfileInfo = propStruct.bitFileInfoStruct;
1414  return true;
1415 }
1416 
1418 {
1419  DWORD dwBytesReturned(0);
1421  ZeroMemory(&propStruct, sizeof(KSPROPERTY_AJAPROPS_GETSETBITFILEINFO_S));
1422  propStruct.Property.Set = _GUID_PROPSET;
1424  propStruct.Property.Flags = KSPROPERTY_TYPE_SET;
1425  propStruct.bitFileInfoStruct = inBitfileInfo;
1426  if (DeviceIoControl(_hDevice, IOCTL_AJAPROPS_GETSETBITFILEINFO, &propStruct, sizeof(KSPROPERTY_AJAPROPS_GETSETBITFILEINFO_S),
1427  &propStruct, sizeof(KSPROPERTY_AJAPROPS_GETSETBITFILEINFO_S), &dwBytesReturned, NULL))
1428  return true;
1429 
1430  WDIFAIL("Failed");
1431  return false;
1432 }
1433 
1434 
1435 #include <ntv2devicefeatures.h>
1436 
1438 {
1440 }
KSPROPERTY_AJAPROPS_AUTOCIRC_STATUS_S::eCommand
AUTO_CIRC_COMMAND eCommand
Definition: ntv2winpublicinterface.h:321
KSPROPERTY_AJAPROPS_GETSETREGISTER
@ KSPROPERTY_AJAPROPS_GETSETREGISTER
Definition: ntv2winpublicinterface.h:73
AJA_DebugStat_GetInterruptCount
@ AJA_DebugStat_GetInterruptCount
Definition: debugshare.h:240
KSPROPERTY_AJAPROPS_DMA_S::pvVidUserVa
PVOID pvVidUserVa
Definition: ntv2winpublicinterface.h:193
KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL
@ KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL
Definition: ntv2winpublicinterface.h:79
KSPROPERTY_AJAPROPS_GETSETREGISTER_S::RegisterID
ULONG RegisterID
Definition: ntv2winpublicinterface.h:107
AJA_DebugStat_DMATransferEx
@ AJA_DebugStat_DMATransferEx
Definition: debugshare.h:242
sIntEnumToStatKeys
static const uint32_t sIntEnumToStatKeys[]
Definition: ntv2windriverinterface.cpp:497
KSPROPERTY_AJAPROPS_INTERRUPTS
@ KSPROPERTY_AJAPROPS_INTERRUPTS
Definition: ntv2winpublicinterface.h:76
KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME_S::frameStamp
FRAME_STAMP_STRUCT frameStamp
Definition: ntv2winpublicinterface.h:333
KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_EX_S::eCommand
AUTO_CIRC_COMMAND eCommand
Definition: ntv2winpublicinterface.h:289
KSPROPERTY_AJAPROPS_AUTOCIRC_STATUS_S
Definition: ntv2winpublicinterface.h:319
AJADebug::StatTimerStop
static AJAStatus StatTimerStop(const uint32_t inKey)
Definition: debug.cpp:1155
AUTOCIRCULATE_DATA::channelSpec
NTV2Crosspoint channelSpec
Definition: ntv2publicinterface.h:4372
CNTV2DriverInterface::mSkipRegWrites
bool mSkipRegWrites
True if actual register writes are skipped while recording.
Definition: ntv2driverinterface.h:683
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:315
PAUTOCIRCULATE_TASK_STRUCT
struct AUTOCIRCULATE_TASK_STRUCT * PAUTOCIRCULATE_TASK_STRUCT
kRegBoardID
@ kRegBoardID
Definition: ntv2publicinterface.h:153
CNTV2WinDriverInterface::UnmapRegisters
virtual bool UnmapRegisters(void)
Definition: ntv2windriverinterface.cpp:652
INTERRUPT_ENUMS
enum _INTERRUPT_ENUMS_ INTERRUPT_ENUMS
KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_EX_S
Definition: ntv2winpublicinterface.h:287
CNTV2WinDriverInterface::WaitForInterrupt
virtual bool WaitForInterrupt(const INTERRUPT_ENUMS eInterruptType, const ULWord timeOutMs=50)
Definition: ntv2windriverinterface.cpp:516
CNTV2WinDriverInterface::UnmapFrameBuffers
virtual bool UnmapFrameBuffers(void)
Definition: ntv2windriverinterface.cpp:590
IOCTL_AJAPROPS_AUTOCIRC_FRAME
#define IOCTL_AJAPROPS_AUTOCIRC_FRAME
Definition: ntv2winpublicinterface.h:52
AUTOCIRCULATE_DATA::bVal2
BOOL_ bVal2
Definition: ntv2publicinterface.h:4382
CNTV2WinDriverInterface::SetAudioOutputMode
virtual bool SetAudioOutputMode(NTV2_GlobalAudioPlaybackMode mode)
Definition: ntv2windriverinterface.cpp:1378
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:697
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: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:680
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:506
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:1350
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:546
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:9756
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:4254
AUTOCIRCULATE_DATA::bVal3
BOOL_ bVal3
Definition: ntv2publicinterface.h:4383
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:1383
CNTV2DriverInterface::_pCh2FrameBaseAddress
ULWord * _pCh2FrameBaseAddress
Definition: ntv2driverinterface.h:699
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:4580
CNTV2DriverInterface::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: ntv2driverinterface.cpp:340
KSPROPERTY_AJAPROPS_DMA_EX_S::ulVidSegmentCardPitch
ULWord ulVidSegmentCardPitch
Definition: ntv2winpublicinterface.h:228
PULWord
uint32_t * PULWord
Definition: ajatypes.h:254
CNTV2DriverInterface::_boardNumber
UWord _boardNumber
My device index number.
Definition: ntv2driverinterface.h:678
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:467
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:679
ePrerollAutoCirculate
@ ePrerollAutoCirculate
Definition: ntv2publicinterface.h:4251
eGetIntCount
@ eGetIntCount
Definition: ntv2publicinterface.h:3756
AUTOCIRCULATE_DATA::bVal6
BOOL_ bVal6
Definition: ntv2publicinterface.h:4386
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:3794
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:4393
CNTV2WinDriverInterface::AutoCirculate
virtual bool AutoCirculate(AUTOCIRCULATE_DATA &autoCircData)
Sends an AutoCirculate command to the NTV2 driver.
Definition: ntv2windriverinterface.cpp:1012
AUTOCIRCULATE_DATA::pvVal3
void * pvVal3
Definition: ntv2publicinterface.h:4392
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:403
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:690
AUTOCIRCULATE_DATA::lVal5
LWord lVal5
Definition: ntv2publicinterface.h:4378
NTV2RoutingTable
Definition: ntv2publicinterface.h:4057
AJA_DebugStat_DMATransferP2P
@ AJA_DebugStat_DMATransferP2P
Definition: debugshare.h:243
AUTOCIRCULATE_DATA::lVal3
LWord lVal3
Definition: ntv2publicinterface.h:4376
CNTV2DriverInterface::ConfigureInterrupt
virtual bool ConfigureInterrupt(const bool bEnable, const INTERRUPT_ENUMS eInterruptType)
Definition: ntv2driverinterface.cpp:354
NTV2_GlobalAudioPlaybackMode
NTV2_GlobalAudioPlaybackMode
Definition: ntv2enums.h:2051
eAbortAutoCirc
@ eAbortAutoCirc
Definition: ntv2publicinterface.h:4253
eTransferAutoCirculate
@ eTransferAutoCirculate
Definition: ntv2publicinterface.h:4252
NTV2DMAEngine
NTV2DMAEngine
Definition: ntv2enums.h:1801
CNTV2WinDriverInterface::HevcSendMessage
virtual bool HevcSendMessage(HevcMessageHeader *pMessage)
Sends an HEVC message to the NTV2 driver.
Definition: ntv2windriverinterface.cpp:1364
eGetFrameStamp
@ eGetFrameStamp
Definition: ntv2publicinterface.h:4249
KSPROPERTY_AJAPROPS_AUTOCIRC_TRANSFER_EX2_S
Definition: ntv2winpublicinterface.h:390
FRAME_STAMP_STRUCT
Definition: ntv2publicinterface.h:4436
AUTOCIRCULATE_DATA::eCommand
AUTO_CIRC_COMMAND eCommand
Definition: ntv2publicinterface.h:4371
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:253
IOCTL_AJAPROPS_DMA_EX
#define IOCTL_AJAPROPS_DMA_EX
Definition: ntv2winpublicinterface.h:57
NTV2BitFileType
NTV2BitFileType
Definition: ntv2enums.h:3274
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:1393
AUTOCIRCULATE_P2P_STRUCT::videoBusSize
ULWord videoBusSize
Definition: ntv2publicinterface.h:4663
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:482
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:4662
KSPROPERTY_AJAPROPS_AUTOCIRC_TRANSFER_EX
@ KSPROPERTY_AJAPROPS_AUTOCIRC_TRANSFER_EX
Definition: ntv2winpublicinterface.h:85
AUTOCIRCULATE_DATA::lVal1
LWord lVal1
Definition: ntv2publicinterface.h:4374
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:4250
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:4248
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:347
CNTV2WinDriverInterface::UnmapXena2Flash
virtual bool UnmapXena2Flash(void)
Definition: ntv2windriverinterface.cpp:707
AUTOCIRCULATE_DATA::lVal2
LWord lVal2
Definition: ntv2publicinterface.h:4375
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:4579
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:6954
WDIFAIL
#define WDIFAIL(__x__)
Definition: ntv2windriverinterface.cpp:140
UWord
uint16_t UWord
Definition: ajatypes.h:251
KSPROPERTY_AJAPROPS_NEWSUBSCRIPTIONS_S::ulIntCount
ULONG ulIntCount
Definition: ntv2winpublicinterface.h:177
PVOID
void * PVOID
Definition: ajatypes.h:316
KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_EX_S::lVal2
LWord lVal2
Definition: ntv2winpublicinterface.h:292
AUTOCIRCULATE_DATA::bVal5
BOOL_ bVal5
Definition: ntv2publicinterface.h:4385
CNTV2WinDriverInterface::DriverSetBitFileInformation
virtual bool DriverSetBitFileInformation(const BITFILE_INFO_STRUCT &inBitfileInfo)
Definition: ntv2windriverinterface.cpp:1417
KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_EX_S::bVal6
bool bVal6
Definition: ntv2winpublicinterface.h:306
IOCTL_AJAPROPS_DMA
#define IOCTL_AJAPROPS_DMA
Definition: ntv2winpublicinterface.h:49
CNTV2WinDriverInterface::MapXena2Flash
virtual bool MapXena2Flash(void)
Definition: ntv2windriverinterface.cpp:680
CNTV2WinDriverInterface::_hDevInfoSet
HDEVINFO _hDevInfoSet
Definition: ntv2windriverinterface.h:117
KSPROPERTY_AJAPROPS_INTERRUPTS_S
Definition: ntv2winpublicinterface.h:147
ntv2winpublicinterface.h
Defines & structs shared between user-space and Windows kernel driver.
KSPROPERTY_AJAPROPS_AUTOCIRC_TRANSFER_EX2_S::acTask
AUTOCIRCULATE_TASK_STRUCT acTask
Definition: ntv2winpublicinterface.h:396
KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME
@ KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME
Definition: ntv2winpublicinterface.h:81
eTransferAutoCirculateEx
@ eTransferAutoCirculateEx
Definition: ntv2publicinterface.h:4255
AUTOCIRCULATE_DATA::lVal4
LWord lVal4
Definition: ntv2publicinterface.h:4377
eStartAutoCirc
@ eStartAutoCirc
Definition: ntv2publicinterface.h:4245
eSetCaptureTask
@ eSetCaptureTask
Definition: ntv2publicinterface.h:4258
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:9753
AUTOCIRCULATE_P2P_STRUCT::videoBusAddress
ULWord64 videoBusAddress
Definition: ntv2publicinterface.h:4661
NTV2RegInfo
struct NTV2RegInfo NTV2RegInfo
Everything needed to call CNTV2Card::ReadRegister or CNTV2Card::WriteRegister functions.
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:197
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:4381
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: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:4379
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: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:4313
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:5605
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:4664
KSPROPERTY_AJAPROPS_DMA_S::dmaEngine
NTV2DMAEngine dmaEngine
Definition: ntv2winpublicinterface.h:192
CNTV2DriverInterface::_pRegisterBaseAddressLength
ULWord _pRegisterBaseAddressLength
Definition: ntv2driverinterface.h:696
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:360
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:4260
ULWord64
uint64_t ULWord64
Definition: ajatypes.h:256
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:4522
KSPROPERTY_AJAPROPS_AUTOCIRC_STATUS_S::channelSpec
NTV2Crosspoint channelSpec
Definition: ntv2winpublicinterface.h:322
ePauseAutoCirc
@ ePauseAutoCirc
Definition: ntv2publicinterface.h:4247
CNTV2DriverInterface::_pCh1FrameBaseAddress
ULWord * _pCh1FrameBaseAddress
Definition: ntv2driverinterface.h:698
eInitAutoCirc
@ eInitAutoCirc
Definition: ntv2publicinterface.h:4244
AUTOCIRCULATE_P2P_STRUCT
Definition: ntv2publicinterface.h:4657
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:4246
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:4257
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:682
AJA_DebugStat_WriteRegister
@ AJA_DebugStat_WriteRegister
Definition: debugshare.h:225
AUTOCIRCULATE_DATA::bVal4
BOOL_ bVal4
Definition: ntv2publicinterface.h:4384
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:4259
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:4755
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:4388
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: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:559
CNTV2WinDriverInterface::RestoreHardwareProcampRegisters
virtual bool RestoreHardwareProcampRegisters(void)
Definition: ntv2windriverinterface.cpp:1437
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:695
CNTV2DriverInterface::mRegWritesLock
AJALock mRegWritesLock
Guard mutex for mRegWrites.
Definition: ntv2driverinterface.h:691
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:4256
AUTOCIRCULATE_DATA::bVal7
BOOL_ bVal7
Definition: ntv2publicinterface.h:4387
KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_S::bVal3
bool bVal3
Definition: ntv2winpublicinterface.h:279
xHEX0N
#define xHEX0N(__x__, __n__)
Definition: ntv2publicinterface.h:5604
CNTV2DriverInterface::BumpEventCount
virtual void BumpEventCount(const INTERRUPT_ENUMS eInterruptType)
Atomically increments the event count tally for the given interrupt type.
Definition: ntv2driverinterface.cpp:1276
AUTOCIRCULATE_DATA::pvVal1
void * pvVal1
Definition: ntv2publicinterface.h:4390
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:329
NTV2_MAPMEMORY_FRAMEBUFFER
@ NTV2_MAPMEMORY_FRAMEBUFFER
Definition: ntv2winpublicinterface.h:117
AUTOCIRCULATE_DATA::pvVal2
void * pvVal2
Definition: ntv2publicinterface.h:4391
AJA_DebugStat_WaitForInterruptIn4
@ AJA_DebugStat_WaitForInterruptIn4
Definition: debugshare.h:229
CNTV2DriverInterface::_pFrameBaseAddress
ULWord * _pFrameBaseAddress
Definition: ntv2driverinterface.h:694
CNTV2DriverInterface::DriverGetBitFileInformation
virtual bool DriverGetBitFileInformation(BITFILE_INFO_STRUCT &outBitFileInfo, const NTV2BitFileType inBitFileType=NTV2_VideoProcBitFile)
Answers with the currently-installed bitfile information.
Definition: ntv2driverinterface.cpp:597
KSPROPERTY_AJAPROPS_DMA_S::bSync
bool bSync
Definition: ntv2winpublicinterface.h:200
BITFILE_INFO_STRUCT
Definition: ntv2publicinterface.h:4803
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:199
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:4369
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:4659
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