19 #ifdef _AJA_COMPILE_WIN2K_SOFT_LINK 23 pfcnSetupDiGetClassDevsA)(
24 IN CONST GUID *ClassGuid, OPTIONAL
25 IN PCSTR Enumerator, OPTIONAL
26 IN HWND hwndParent, OPTIONAL
33 pfcnSetupDiGetClassDevsW)(
34 IN CONST GUID *ClassGuid, OPTIONAL
35 IN PCWSTR Enumerator, OPTIONAL
36 IN HWND hwndParent, OPTIONAL
40 #define pfcnSetupDiGetClassDevs pfcnSetupDiGetClassDevsW 42 #define pfcnSetupDiGetClassDevs pfcnSetupDiGetClassDevsA 48 pfcnSetupDiEnumDeviceInterfaces)(
49 IN HDEVINFO DeviceInfoSet,
50 IN PSP_DEVINFO_DATA DeviceInfoData, OPTIONAL
51 IN CONST GUID *InterfaceClassGuid,
53 OUT PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData
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
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
81 #define pfcnSetupDiGetDeviceInterfaceDetail pfcnSetupDiGetDeviceInterfaceDetailW 83 #define pfcnSetupDiGetDeviceInterfaceDetail pfcnSetupDiGetDeviceInterfaceDetailA 89 pfcnSetupDiDestroyDeviceInfoList)(
90 IN HDEVINFO DeviceInfoSet
96 pfcnSetupDiDestroyDriverInfoList)(
97 IN HDEVINFO DeviceInfoSet,
98 IN PSP_DEVINFO_DATA DeviceInfoData, OPTIONAL
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;
108 HINSTANCE hSetupAPI =
NULL;
114 LPVOID lpMsgBuf(
NULL);
115 FormatMessage ( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
118 MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
122 string result (lpMsgBuf ? reinterpret_cast<const char*>(lpMsgBuf) :
"");
123 LocalFree (lpMsgBuf);
125 const size_t crPos(result.find(
".\r"));
126 if (crPos != string::npos)
127 result.resize(crPos);
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_)) 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__) 151 ,_previousAudioState (0)
152 ,_previousAudioSelection (0)
153 ,mInterruptEventHandles ()
154 #
if !defined(NTV2_DEPRECATE_16_0)
172 #if !defined(NTV2_NULL_DEVICE) 186 #define AJAVIDEO_NTV2_PROPSET DEFINE_GUIDNAMED(AJAVIDEO_NTV2_PROPSET) 193 DWORD dwShareMode (
GetShareMode() ? FILE_SHARE_READ | FILE_SHARE_WRITE : 0);
194 DWORD dwFlagsAndAttributes = FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED;
196 SP_DEVICE_INTERFACE_DATA spDevIFaceData;
197 memset(&spDevIFaceData, 0,
sizeof(SP_DEVICE_INTERFACE_DATA));
198 GUID myguid = refguid;
202 spDevIFaceData.cbSize =
sizeof(SP_DEVICE_INTERFACE_DATA);
215 if (GetLastError() != ERROR_INSUFFICIENT_BUFFER)
239 ULONG deviceInstanceSize = 0;
240 CM_Get_Device_ID_Size(&deviceInstanceSize,
_spDevInfoData.DevInst, 0);
241 char* deviceInstance = (
char*)
new BYTE[deviceInstanceSize*2];
242 CM_Get_Device_IDA(
_spDevInfoData.DevInst, deviceInstance, deviceInstanceSize*2, 0);
243 boardStr = deviceInstance;
244 delete [] deviceInstance;
249 WDIFAIL(
"CreateFile failed for '" << boardStr <<
"'");
282 #ifndef _AJA_COMPILE_WIN2K_SOFT_LINK 285 if (pSetupDiDestroyDeviceInfoList)
299 #endif // !defined(NTV2_NULL_DEVICE) 311 WDIFAIL(
"Shift " <<
DEC(inShift) <<
" > 31, reg=" <<
DEC(inRegNum) <<
" msk=" <<
xHEX0N(inMask,8));
314 #if defined(NTV2_NUB_CLIENT_SUPPORT) 317 #endif // defined(NTV2_NUB_CLIENT_SUPPORT) 324 DWORD dwBytesReturned = 0;
328 propStruct.
Property.Flags = KSPROPERTY_TYPE_GET;
339 #if defined(NTV2_PRETEND_DEVICE) 340 if (inRegNum ==
kRegBoardID && outValue == NTV2_PRETEND_DEVICE_FROM)
341 outValue = NTV2_PRETEND_DEVICE_TO;
344 #endif // NTV2_PRETEND_DEVICE 356 WDIFAIL(
"Shift " <<
DEC(inShift) <<
" > 31, reg=" <<
DEC(inRegNum) <<
" msk=" <<
xHEX0N(inMask,8));
359 #if defined(NTV2_WRITEREG_PROFILING) // Register Write Profiling 367 #endif // defined(NTV2_WRITEREG_PROFILING) // Register Write Profiling 368 #if defined(NTV2_NUB_CLIENT_SUPPORT) 371 #endif // defined(NTV2_NUB_CLIENT_SUPPORT) 375 DWORD dwBytesReturned = 0;
381 propStruct.
Property.Flags = KSPROPERTY_TYPE_SET;
413 DWORD dwBytesReturned = 0;
417 propStruct.
Property.Flags = bEnable ? KSPROPERTY_TYPE_GET : KSPROPERTY_TYPE_SET;
423 WDIFAIL(
"interruptType=" <<
DEC(eInterruptType) <<
" enable=" << (bEnable?
"Y":
"N") <<
" failed: " << ::
GetKernErrStr(GetLastError()));
443 if (bSubscribe && hSubscription)
447 if (!bSubscribe && !hSubscription)
452 hSubscription = CreateEvent (
NULL, FALSE, FALSE,
NULL);
454 DWORD dwBytesReturned = 0;
458 propStruct.
Property.Flags = bSubscribe ? KSPROPERTY_TYPE_GET : KSPROPERTY_TYPE_SET;
459 propStruct.
Handle = hSubscription;
464 if ((!bSubscribe && bRet) || (bSubscribe && !bRet))
466 CloseHandle(hSubscription);
473 WDIFAIL(
"'IOCTL_AJAPROPS_NEWSUBSCRIPTIONS|" << (bSubscribe ?
"KSPROPERTY_TYPE_GET" :
"KSPROPERTY_TYPE_SET") <<
"' failed for '" <<
NTV2CfgInterrupt::IntName(eInterruptType) <<
"' subscribe=" << (bSubscribe?
"Y":
"N") <<
" failed");
500 #if defined(NTV2_NUB_CLIENT_SUPPORT) 503 #endif // defined(NTV2_NUB_CLIENT_SUPPORT) 506 DWORD dwBytesReturned = 0;
510 propStruct.
Property.Flags = KSPROPERTY_TYPE_GET;
530 AJA_DebugStat_WaitForInterruptOthers,
AJA_DebugStat_WaitForInterruptOthers,
AJA_DebugStat_WaitForInterruptOthers,
AJA_DebugStat_WaitForInterruptOthers,
AJA_DebugStat_WaitForInterruptOthers,
AJA_DebugStat_WaitForInterruptOthers,
AJA_DebugStat_WaitForInterruptOthers,
AJA_DebugStat_WaitForInterruptOthers,
AJA_DebugStat_WaitForInterruptOthers,
AJA_DebugStat_WaitForInterruptOthers,
551 #if defined(NTV2_NUB_CLIENT_SUPPORT) 554 #endif // defined(NTV2_NUB_CLIENT_SUPPORT) 567 DWORD status = WaitForSingleObject(hEvent, timeOutMs);
569 if (status == WAIT_OBJECT_0)
575 if (status == WAIT_ABANDONED)
577 else if (status == WAIT_TIMEOUT)
588 #if !defined(NTV2_DEPRECATE_16_0) 597 DWORD dwBytesReturned = 0;
603 propStruct.
Property.Flags = KSPROPERTY_TYPE_GET;
629 ULWord * pFrameBaseAddress;
631 if (!pFrameBaseAddress)
635 DWORD dwBytesReturned = 0;
639 propStruct.
Property.Flags = KSPROPERTY_TYPE_SET;
662 DWORD dwBytesReturned = 0;
668 propStruct.
Property.Flags = KSPROPERTY_TYPE_GET;
693 DWORD dwBytesReturned = 0;
697 propStruct.
Property.Flags = KSPROPERTY_TYPE_SET;
718 DWORD dwBytesReturned = 0;
724 propStruct.
Property.Flags = KSPROPERTY_TYPE_GET;
748 DWORD dwBytesReturned = 0;
752 propStruct.
Property.Flags = KSPROPERTY_TYPE_SET;
773 DWORD dwBytesReturned = 0;
777 propStruct.
Property.Flags = bMap ? KSPROPERTY_TYPE_GET : KSPROPERTY_TYPE_SET;
784 WDIFAIL (
KR(GetLastError()) <<
" -- numBytes=" << ulNumBytes <<
" map=" << (bMap?
"Y":
"N"));
856 if (*vecIter == pFrameBuffer)
863 #endif // !defined(NTV2_DEPRECATE_16_0) 871 const ULWord inFrameNumber,
873 const ULWord inOffsetBytes,
875 const bool inSynchronous)
879 inOffsetBytes, inByteCount, inSynchronous);
884 DWORD dwBytesReturned = 0;
888 propStruct.
Property.Flags = inIsRead ? KSPROPERTY_TYPE_GET : KSPROPERTY_TYPE_SET;
895 propStruct.
bSync = inSynchronous;
902 WDIFAIL (
"failed: " << ::
GetKernErrStr(GetLastError()) <<
": eng=" << inDMAEngine <<
" frm=" << inFrameNumber
903 <<
" off=" <<
HEX8(inOffsetBytes) <<
" len=" <<
HEX8(inByteCount) <<
" " << (inIsRead ?
"Rd" :
"Wr"));
912 const ULWord inFrameNumber,
914 const ULWord inOffsetBytes,
916 const ULWord inNumSegments,
919 const bool inSynchronous)
923 inOffsetBytes, inByteCount, inNumSegments, inHostPitch, inCardPitch, inSynchronous);
928 DWORD dwBytesReturned = 0;
932 propStruct.
Property.Flags = inIsRead ? KSPROPERTY_TYPE_GET : KSPROPERTY_TYPE_SET;
942 propStruct.
bSync = inSynchronous;
949 WDIFAIL (
"failed: " << ::
GetKernErrStr(GetLastError()) <<
": eng=" << inDMAEngine <<
" frm=" << inFrameNumber
950 <<
" off=" <<
HEX8(inOffsetBytes) <<
" len=" <<
HEX8(inByteCount) <<
" " << (inIsRead ?
"Rd" :
"Wr"));
958 const bool inIsTarget,
959 const ULWord inFrameNumber,
960 const ULWord inCardOffsetBytes,
962 const ULWord inNumSegments,
969 inByteCount, inNumSegments, inHostPitch, inCardPitch, inP2PData);
978 DWORD dwBytesReturned(0);
988 propStruct.
Property.Flags = KSPROPERTY_TYPE_GET;
997 propStruct.
Property.Flags = KSPROPERTY_TYPE_SET;
1018 WDIFAIL (
"Failed: " << ::
GetKernErrStr(GetLastError()) <<
": eng=" << inDMAEngine <<
" ch=" << inDMAChannel
1019 <<
" frm=" << inFrameNumber <<
" off=" <<
HEX8(inCardOffsetBytes) <<
" siz=" <<
HEX8(inByteCount)
1020 <<
" #segs=" << inNumSegments <<
" hostPitch=" << inHostPitch <<
" cardPitch=" << inCardPitch
1021 <<
" target=" << (inIsTarget?
"Y":
"N"));
1029 WDIFAIL (
"Target failed: " << ::
GetKernErrStr(GetLastError()) <<
" eng=" << inDMAEngine <<
" ch=" << inDMAChannel
1030 <<
" frm=" << inFrameNumber <<
" off=" <<
HEX8(inCardOffsetBytes) <<
" vSiz=" <<
HEX8(inByteCount)
1031 <<
" segs=" << inNumSegments <<
" hostPitch=" << inHostPitch <<
" cardPitch=" << inCardPitch
1032 <<
" target=" << (inIsTarget?
"Y":
"N") <<
" p2pBytesRet=" <<
HEX8(dwBytesReturned)
1054 DWORD dwBytesReturned(0);
1060 if (autoCircData.
lVal4 <= 1 && autoCircData.
lVal5 == 0 && autoCircData.
lVal6 == 0)
1066 autoCircControl.
Property.Flags = KSPROPERTY_TYPE_SET;
1094 autoCircControl.
Property.Flags = KSPROPERTY_TYPE_SET;
1134 autoCircControl.
Property.Flags = KSPROPERTY_TYPE_SET;
1170 autoCircStatus.
Property.Flags = KSPROPERTY_TYPE_GET;
1185 {bRes =
false;
WDIFAIL(
"GetAC failed: NULL pvVal1");}
1195 autoCircFrame.
Property.Flags = KSPROPERTY_TYPE_GET;
1213 {bRes =
false;
WDIFAIL(
"GetFrameStamp failed: NULL pvVal1");}
1223 autoCircFrame.
Property.Flags = KSPROPERTY_TYPE_GET;
1248 {bRes =
false;
WDIFAIL(
"GetFrameStampEx2 failed: NULL pvVal1");}
1258 acXfer.
Property.Flags = KSPROPERTY_TYPE_GET;
1262 {bRes =
false;
WDIFAIL(
"ACXfer failed: pvVal1 or pvVal2 NULL");
break;}
1289 acXfer.
Property.Flags = KSPROPERTY_TYPE_GET;
1293 {bRes =
false;
WDIFAIL(
"ACXferEx failed: NULL XferStruct or XferStatusStruct");
break;}
1322 acXfer.
Property.Flags = KSPROPERTY_TYPE_GET;
1326 {bRes =
false;
WDIFAIL(
"ACXferEx2 failed: NULL XferStruct or RoutingTable");
break;}
1358 autoCircFrame.
Property.Flags = KSPROPERTY_TYPE_SET;
1363 if (!autoCircData.
pvVal1)
1364 {bRes =
false;
WDIFAIL(
"ACSetCaptureTask failed: NULL TaskStruct");
break;}
1390 {
WDIFAIL(
"Failed: NULL pointer");
return false;}
1393 DWORD dwBytesReturned(0);
1426 DWORD dwBytesReturned(0);
1431 propStruct.
Property.Flags = KSPROPERTY_TYPE_GET;
1444 DWORD dwBytesReturned(0);
1449 propStruct.
Property.Flags = KSPROPERTY_TYPE_SET;
Everything needed to call CNTV2Card::ReadRegister or CNTV2Card::WriteRegister functions.
Defines & structs shared between user-space and Windows kernel driver.
virtual bool RestoreHardwareProcampRegisters(void)
#define IOCTL_AJAPROPS_AUTOCIRC_FRAME
#define IOCTL_AJAPROPS_AUTOCIRC_CONTROL_EX
ULWord * _pRegisterBaseAddress
ULWord ulVidSegmentHostPitch
#define IOCTL_AJAPROPS_DMA_P2P
ULWord * _pCh2FrameBaseAddress
AUTO_CIRC_COMMAND eCommand
BITFILE_INFO_STRUCT bitFileInfoStruct
virtual bool UnmapFrameBuffers(void)
AUTO_CIRC_COMMAND eCommand
INTERRUPT_ENUMS eInterrupt
#define IOCTL_AJAPROPS_AUTOCIRC_FRAME_EX2
Declares the AJADebug class.
virtual UWord GetIndexNumber(void) const
void setDeviceIndexNumber(const UWord num)
#define NTV2_IS_VALID_INTERRUPT_ENUM(__e__)
#define IOCTL_AJAPROPS_MAPMEMORY
bool NTV2DeviceHasSPIFlash(const NTV2DeviceID inDeviceID)
AUTO_CIRC_COMMAND eCommand
virtual HANDLE GetEventHandleForInterrupt(const INTERRUPT_ENUMS eInterruptType)
defined(NTV2_DEPRECATE_17_6)
virtual bool Close(void)
Closes me, releasing host resources that may have been allocated in a previous Open call...
virtual bool AutoCirculate(AUTOCIRCULATE_DATA &autoCircData)
Sends an AutoCirculate command to the NTV2 driver.
AUTO_CIRC_COMMAND eCommand
#define IOCTL_AJAPROPS_NEWSUBSCRIPTIONS
if(!(riid==IID_IUnknown) &&!(riid==IID_IClassFactory))
DMA_LOCKED_VEC _vecDmaLocked
ULONG(__stdcall *_RegisterTraceGuids)(__in IN WMIDPREQUEST RequestAddress
static bool GetShareMode(void)
#define IOCTL_AJAPROPS_AUTOCIRC_TRANSFER_EX2
virtual ~CNTV2WinDriverInterface()
My default destructor.
struct AUTOCIRCULATE_TASK_STRUCT * PAUTOCIRCULATE_TASK_STRUCT
virtual bool WaitForInterrupt(const INTERRUPT_ENUMS eInterruptType, const ULWord timeOutMs=50)
Efficiently waits for the next given interrupt to be signaled on the device.
#define AJAVIDEO_NTV2_PROPSET
virtual bool PrepareMemoryForDMA(ULWord *pFrameBuffer, const ULWord ulNumBytes)
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...
NTV2Channel
These enum values are mostly used to identify a specific widget_framestore. They're also commonly use...
PSP_DEVICE_INTERFACE_DETAIL_DATA _pspDevIFaceDetailData
ULWord ulVidSegmentCardPitch
#define NTV2_ASSERT(_expr_)
virtual bool ReadRegister(const ULWord inRegNum, ULWord &outValue, const ULWord inMask=0xFFFFFFFF, const ULWord inShift=0)
Physical device implementation of CNTV2DriverInterface::ReadRegister.
NTV2Crosspoint channelSpec
static AJAStatus StatTimerStop(const uint32_t inKey)
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...
#define IOCTL_AJAPROPS_GETSETBITFILEINFO
virtual bool IsRemote(void) const
NTV2Crosspoint channelSpec
struct AUTOCIRCULATE_TRANSFER_STATUS_STRUCT * PAUTOCIRCULATE_TRANSFER_STATUS_STRUCT
#define IOCTL_AJAPROPS_AUTOCIRC_TRANSFER_EX
ULWord GetSizeInBytes(void) const
My total size, in bytes, including header, body and trailer (but excluding embedded NTV2Buffer data) ...
NTV2DeviceID _boardID
My cached device ID.
AUTOCIRCULATE_TASK_STRUCT acTask
virtual bool MapMemory(PVOID pvUserVa, ULWord ulNumBytes, bool bMap, ULWord *ulUser=NULL)
virtual bool DriverSetBitFileInformation(const BITFILE_INFO_STRUCT &inBitfileInfo)
virtual bool UnmapRegisters(void)
virtual bool IsOpen(void) const
AUTOCIRCULATE_TRANSFER_STRUCT acTransfer
bool _boardOpened
True if I'm open and connected to the device.
SP_DEVINFO_DATA _spDevInfoData
AUTOCIRCULATE_STATUS_STRUCT autoCircStatus
virtual void BumpEventCount(const INTERRUPT_ENUMS eInterruptType)
Atomically increments the event count tally for the given interrupt type.
virtual bool MapFrameBuffers(void)
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...
virtual bool WriteRegister(const ULWord inRegNum, const ULWord inValue, const ULWord inMask=0xFFFFFFFF, const ULWord inShift=0)
Physical device implementation of CNTV2DriverInterface::WriteRegister.
virtual bool DriverGetBitFileInformation(BITFILE_INFO_STRUCT &outBitfileInfo, const NTV2BitFileType inBitfileType=NTV2_VideoProcBitFile)
defined(NTV2_DEPRECATE_17_2)
enum _INTERRUPT_ENUMS_ INTERRUPT_ENUMS
virtual bool MapRegisters(void)
bool mRecordRegWrites
True if recording; otherwise false when not recording.
AUTOCIRCULATE_TASK_STRUCT acTask
All new NTV2 structs start with this common header.
virtual bool NTV2Message(NTV2_HEADER *pInMessage)
Sends a message to the NTV2 driver (the new, improved, preferred way).
AJALock mRegWritesLock
Guard mutex for mRegWrites.
ULWord _pRegisterBaseAddressLength
INTERRUPT_ENUMS eInterrupt
NTV2_GlobalAudioPlaybackMode
Declares data types and structures used in NTV2 "nub" packets.
ULWord ulVidSegmentCardPitch
virtual bool MapXena2Flash(void)
NTV2Crosspoint channelSpec
ULWord ulVidSegmentHostPitch
FRAME_STAMP_STRUCT frameStamp
AUTO_CIRC_COMMAND eCommand
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...
static const uint32_t sIntEnumToStatKeys[]
virtual bool NTV2Message(NTV2_HEADER *pInMessage)
Sends a message to the NTV2 driver (the new, improved, preferred way).
#define IOCTL_AJAPROPS_AUTOCIRC_STATUS
#define IOCTL_AJAPROPS_INTERRUPTS
virtual bool DriverGetBitFileInformation(BITFILE_INFO_STRUCT &outBitFileInfo, const NTV2BitFileType inBitFileType=NTV2_VideoProcBitFile)
defined(NTV2_DEPRECATE_17_2)
static AJAStatus StatTimerStart(const uint32_t inKey)
Declares the MSWindows-specific flavor of CNTV2DriverInterface.
ULWord * _pXena2FlashBaseAddress
NTV2RoutingTable acTransferRoute
struct AUTOCIRCULATE_P2P_STRUCT CHANNEL_P2P_STRUCT
#define IOCTL_AJAPROPS_DMA
AUTOCIRCULATE_TRANSFER_STRUCT acTransfer
ULWord * _pFrameBaseAddress
Added to support 64 bit driver.
ULWord64 messageBusAddress
NTV2Crosspoint channelSpec
#define IOCTL_AJAPROPS_GETSETREGISTER
ULWord64 ullMessageBusAddress
virtual bool ConfigureInterrupt(const bool bEnable, const INTERRUPT_ENUMS eInterruptType)
#define IOCTL_AJAPROPS_DMA_EX
AUTO_CIRC_COMMAND eCommand
virtual bool GetInterruptCount(const INTERRUPT_ENUMS eInterrupt, ULWord &outCount)
Answers with the current total number of interrupts of the given type processed by the driver's inter...
ULWord * _pCh1FrameBaseAddress
AUTO_CIRC_COMMAND eCommand
_EventCounts mEventCounts
My event tallies, one for each interrupt type. Note that these.
FRAME_STAMP_STRUCT frameStamp
virtual bool SetAudioOutputMode(NTV2_GlobalAudioPlaybackMode mode)
AUTO_CIRC_COMMAND eCommand
#define IOCTL_AJAPROPS_AUTOCIRC_TRANSFER
#define xHEX0N(__x__, __n__)
virtual bool WaitForInterrupt(const INTERRUPT_ENUMS eInterrupt, const ULWord timeOutMs=68)
Efficiently waits for the next given interrupt to be signaled on the device.
#define INVALID_HANDLE_VALUE
virtual bool GetAudioOutputMode(NTV2_GlobalAudioPlaybackMode *mode)
NTV2Crosspoint channelSpec
#define IOCTL_AJAPROPS_AUTOCIRC_CAPTURE_TASK
NTV2Crosspoint channelSpec
_EventHandles mInterruptEventHandles
NTV2RoutingTable acTransferRoute
CNTV2WinDriverInterface()
My default constructor.
ULWord64 ullVideoBusAddress
struct AUTOCIRCULATE_TRANSFER_STRUCT * PAUTOCIRCULATE_TRANSFER_STRUCT
virtual bool UnmapXena2Flash(void)
static std::string IntName(const INTERRUPT_ENUMS id)
NTV2RegisterWrites mRegWrites
Stores WriteRegister data.
static std::string GetKernErrStr(const DWORD inError)
AUTO_CIRC_COMMAND eCommand
virtual bool CompleteMemoryForDMA(ULWord *pFrameBuffer)
virtual bool OpenLocalPhysical(const UWord inDeviceIndex)
Opens the local/physical device connection.
bool mSkipRegWrites
True if actual register writes are skipped while recording.
AUTOCIRCULATE_TRANSFER_STRUCT acTransfer
virtual bool DmaUnlock(void)
Declares enums and structs used by all platform drivers and the SDK.
virtual bool AutoCirculate(AUTOCIRCULATE_DATA &pAutoCircData)
Sends an AutoCirculate command to the NTV2 driver.
#define IOCTL_AJAPROPS_AUTOCIRC_CONTROL
Declares device capability functions.
virtual bool GetInterruptCount(const INTERRUPT_ENUMS eInterrupt, ULWord &outCount)
Answers with the current total number of interrupts of the given type processed by the driver's inter...
virtual bool WinConfigureSubscription(const bool bSubscribe, const INTERRUPT_ENUMS eInterruptType)
virtual bool CloseLocalPhysical(void)
Releases host resources associated with the local/physical device connection.
#define GetInterruptEvent(__x__)