谢谢你了 我邮箱是baggio_xuefeng@163.com
我现在在dm9000驱动中发现EDeviceRegisterInterrupt()这个函数。按help意思这个是申请中断的?
if((status=NdisMRegisterInterrupt(
&m_InterruptHandle,
m_pUpper->GetNdisHandle(),
m_szConfigures[CID_IRQ_NUMBER], // or say, irq vector
m_szConfigures[CID_IRQ_LEVEL], // irql level
TRUE, // request ISR
(BOOLEAN)m_szConfigures[CID_IRQ_SHARED], // shared interrupt
(KINTERRUPT_MODE)m_szConfigures[CID_IRQ_GEN_TYPE])) != NDIS_STATUS_SUCCESS)
RETAILMSG(1, (TEXT("[dm9: Error in registering interrupt is %X/r/n"), status));
THROW((ERR_STRING("Error in registering interrupt"),status));
但是我调试这个没有注册成功??不知道为什么??
m_szConfigures[CID_IRQ_NUMBER], // or say, irq vector
这里不知道填什么 ??我配置是这样的
CONFIG_PARAMETER g_szDm9ConfigParams[] =
{
{ CID_CONNECTION_TYPE, -1, NDIS_STRING_CONST("ConnectionType") },
{ CID_SLOT_NUMBER, -1, NDIS_STRING_CONST("SlotNumber")},
{ CID_BUFFER_PHYSICAL_ADDRESS, 0, NDIS_STRING_CONST("BufferPhysicalAddress")},
{ CID_TXBUFFER_NUMBER, 0x20, NDIS_STRING_CONST("XmitBuffer")},
{ CID_RXBUFFER_NUMBER, 0x10, NDIS_STRING_CONST("RecvBuffer")},
{ CID_ADAPTER_NUMBER, 0, NDIS_STRING_CONST("AdapterNumber")},
{ CID_IO_BASE_ADDRESS, 0x18000300, NDIS_STRING_CONST("IoAddress")},
{ CID_IO_RANGE, 0x10, NDIS_STRING_CONST("IoRange")},
{ CID_IRQ_NUMBER, 9, NDIS_STRING_CONST("IrqNumber")},
{ -1,-1,NULL}
};
很奇怪 不知道怎么和注册表关联起来??看样子这个dm9000不是很简单呀??