Exemplo n.º 1
0
 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();
 }
Exemplo n.º 2
0
 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();
 }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }