internal protected PCIE_Device(DWORD dwVendorId, DWORD dwDeviceId,//构造函数 WD_PCI_SLOT slot) { m_wdcDevice = new WDC_DEVICE(); m_wdcDevice.id.pciId.dwVendorId = dwVendorId; m_wdcDevice.id.pciId.dwDeviceId = dwDeviceId; m_wdcDevice.slot.pciSlot = slot; m_wdcDeviceMarshaler = new MarshalWdcDevice(); m_eventHandler = new EVENT_HANDLER_DOTNET(PCIE_EventHandler); m_regs = new PCIE_Regs(); SetDescription(); }
public PCIE_Device(DWORD dwVendorId, DWORD dwDeviceId, WD_PCI_SLOT slot) { m_wdcDevice = new WDC_DEVICE(); m_wdcDevice.id.pciId.dwVendorId = dwVendorId; m_wdcDevice.id.pciId.dwDeviceId = dwDeviceId; m_wdcDevice.slot.pciSlot = slot; m_wdcDeviceMarshaler = new MarshalWdcDevice(); m_eventHandler = new EVENT_HANDLER_DOTNET(NEWAMD86_EventHandler); m_regs = new PCIE_Regs(); SetDescription(); m_dmaMarshaler = new MarshalWdDma(); }
protected BOOL IsItemExists(WDC_DEVICE Dev, DWORD item) { int i; DWORD dwNumItems = Dev.cardReg.Card.dwItems; for (i = 0; i < dwNumItems; i++) { if (Dev.cardReg.Card.Item[i].item == item) { return(true); } } return(false); }
public bool IntEnable(DWORD index, WDC_DEVICE funcIntHandler) { DWORD dwStatus; //WDC_ADDR_DESC *pAddrDesc = NULL; // var S =wdapi_dotnet.wdc_lib_decl.WDC WDC_GetDevContext(pDev); //AfxMessageBox("IntEnable"); /* Check if interrupts are already enabled */ if (wdc_lib_decl.WDC_IntIsEnabled(funcIntHandler.hDev)) { return(true); } /////////5.10前版////////////// #define NUM_TRANS_CMDS 1 /////////////////////////////5.10前版本///////////////////////////////////////// // pTrans = (WD_TRANSFER*)calloc(NUM_TRANS_CMDS, sizeof(WD_TRANSFER)); // if (!pTrans) //{ // strcpy_s(infor,"IntEnable函数中pTrans内存分配失败\n"); // return FALSE; //} // pAddrDesc = &pDev->pAddrDesc[0]; //BAR0 // /* Define the number of interrupt transfer commands to use */ //pTrans[0].dwPort = pAddrDesc->kptAddr + 0x34; //pTrans[0].cmdTrans = WM_DWORD; //pTrans[0].Data.Dword = 1; //////////////////////////////////////////////////////////////////////// // funcDiagIntHandler = funcIntHandler; /* Enable the interrupts */ DWORD dwStatus1 = EnableInterrupts(new USER_INTERRUPT_CALLBACK(PC1220X64_IntHandler), Handle); //DWORD dwStatus2= wdc_lib_decl.WDC_IntEnable(m_wdcDevice, pTrans, 0, 2, FuncIntHandler,m_wdcDevice. pDev, false); if (dwStatus1 == 1) { //strcpy_s(infor, "中断处理函数注册失败\n"); //strcat_s(infor, Stat2Str(dwStatus)); return(false); } return(true); }