NdisMRegisterIoPortRange

NDIS_STATUS 

  NdisMRegisterIoPortRange(

    OUT PVOID  *PortOffset,

    IN NDIS_HANDLE  MiniportAdapterHandle,

    IN UINT  InitialPort,

    IN UINT  NumberOfPorts

    );

NdisMRegisterIoPortRange´Â NdisRawReadPortXxx ¿Í NdisRawWritePortXxx ÇÔ¼öµé·Î ÀåÄ¡ I/O Æ÷Æ®µé¿¡°Ô µå¶óÀ̹ö Á¢±ÙÀ» ¼³Á¤ÇÏ°í ±×·¯ÇÑ µå¶óÀ̹öÀÇ NICÀ» À§ÇØ ·¹Áö½ºÆ®¸® ³»¿¡ I/O Æ÷Æ® ÁÖ¼ÒµéÀÇ ¹üÀ§¸¦ ¿ä±¸ÇÑ´Ù.

¸Å°³º¯¼ö

PortOffset
ÀÌ ÇÔ¼ö´Â InitialPort ¿Í NumberOfPorts¿¡ ÀÇÇØ ÁöÁ¤µÈ ÁÖ¾îÁø ¹ö½º °ü·Ã I/O Æ÷Æ® ¹üÀ§¸¦ À§ÇÑ ¸ÊµÈ ±âº» °¡»ó ÁÖ¼Ò¸¦ ¸®ÅÏÇÑ´Ù.

MiniportAdapterHandle
MiniportInitialize¿¡ ´ëÇÑ ÀÔ·Â ÇÚµéÀ» ÁöÁ¤ÇÑ´Ù.

InitialPort
¸ÊµÈ Æ÷Æ® ¹üÀ§¸¦ À§Çؼ­ ¹ö½º °ü·Ã º£À̽º Æ÷Æ® ÁÖ¼Ò¸¦ ÁöÁ¤ÇÑ´Ù.

NumberOfPorts
¸ÊµÈ ¹üÀ§³»¿¡¼­ Æ÷Æ®µéÀÇ ¼ö¸¦ ÁöÁ¤ÇÑ´Ù.

¸®Åϰª

NdisMRegisterIoPortRange´Â ´ÙÀ½°ú °°Àº ÇϳªÀÇ °ªÀ» ¸®ÅÏÇÒ ¼ö ÀÖ´Ù.

NDIS_STATUS_SUCCESS
I/O Æ÷Æ®µéÀÇ ÁÖ¾îÁø ¹üÀ§¿¡¼­ ¼º°øÀûÀ¸·Î ¸ÊµÇ¾îÁö°í ±×·¡¼­ PortOffset¿¡ °ªÀº À¯È¿ÇÏ°í ¸ÊµÈ ¹üÀ§´Â NICÀ» À§ÇØ ·¹Áö½ºÆ®¸®³»¿¡¼­ ¿ä±¸µÇ¾îÁú °ÍÀÌ´Ù.

NDIS_STATUS_RESOURCE_CONFLICT
¶Ç ÇϳªÀÇ µå¶óÀ̹ö°¡ ÀÌ¹Ì ±× ÀåÄ¡¸¦ À§ÇØ ¹üÀ§¸¦ ¿ä±¸Ç߱⠶§¹®¿¡ ·¹Áö½ºÆ®¸®³»¿¡¼­ I/O Æ÷Æ® ¹üÀ§¸¦ ¿ä±¸ÇÏ´Â ½Ãµµ°¡ ½ÇÆÐÇß´Ù. NdisMRegisterIoPortRange´Â ¸¸¾à À̰ÍÀÌ ¹ß»ýÇϸéÀº, ¿¡·¯¸¦ ·Î±×ÇÑ´Ù.

NDIS_STATUS_RESOURCES
Æ÷Æ® ¹üÀ§´Â Çϵå¿þ¾î ÀÚ¿ø Ãæµ¹µéÀ» À§ÇØ ·¹Áö½ºÆ®¸®¸¦ üũÇϱâ À§ÇØ Æ÷Æ® ¹üÀ§°¡ ¸ÊµÇ¾îÁú ¼ö ¾ø°Å³ª NDIS°¡ ÀÚ¿øµéÀ» ÇÒ´çÇÒ ¼ö ¾ø´Ù.

NDIS_STATUS_FAILURE
¹ö½º ŸÀÔ È¤Àº ¹ö½º ³Ñ¹ö´Â ¹üÀ§¸¦ ¹þ¾î³ª°Å³ª ȤÀº ÁÖ¾îÁø InitialPort¿Í NumberOfPorts°¡ À¯È¿ÇÏÁö ¾Ê´Ù.(°¡´ÉÇÏ´Ù¸éÀº, Çö Ç÷§ÆûÀÇ I/O Æ÷Æ® °ø°£³»¿¡ ¾ø´Ù.)

ÁÖ¼®

NIC µå¶óÀ̹ö´Â MiniportInitialize ÇÔ¼ö·ÎºÎÅÍ NdisMRegisterIoPortRange ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù. MiniportInitialize ÇÔ¼ö´Â NdisMRegisterIoPortRange ÇÔ¼ö¸¦ È£ÃâÇϱâ Àü¿¡ NdisMSetAttributes ȤÀº NdisMSetAttributesEx¸¦ È£ÃâÇØ¾ß ÇÑ´Ù.

NdisMRegisterIoPortRange ÇÔ¼ö´Â ¹Ì´ÏÆ÷Æ®°¡ °è¼ÓÇØ¼­ NdisRawXxx ÇÔ¼öµéÀ» È£ÃâÇÔÀ¸·Î½á NIC¿¡¼­ I/O Æ÷Æ® ¹üÀ§¸¦ Á¢±ÙÇϱâ À§ÇØ »ç¿ëÇÒ ¼ö ÀÖ´Â ¹ö½º °ü·Ã ÀåÄ¡ ÁÖ¼Ò ¹üÀ§¸¦ ¸ÊÇÑ´Ù. ¼º°øÀûÀΠȣÃâÀº È£ÃâÀÚÀÇ NICÀ» À§ÇØ ·¹Áö½ºÆ®¸® ³»¿¡¼­ ƯÁ¤ÇÑ I/O Æ÷Æ® ¹üÀ§µéÀÇ ¹üÀ§¸¦ ¿ä±¸ÇÒ ¼ö ÀÖ´Ù.

NdisRawXxx ÇÔ¼öµé·Î Àü´ÞµÇ´Â ¸Å°³º¯¼öµéÀÌ ¸ÊµÇ¾îÁö±â ¶§¹®¿¡, ÀÌ·¯ÇÑ ÇÔ¼öµéÀº ÀǹÌÀûÀ¸·Î ÀÀ´äÇÏ´Â NdisImmediate...PortXxx ÇÔ¼öº¸´Ù ´õ ºü¸£°Ô ½ÇÇàÇÑ´Ù. NdisMRegisterIoPortRange¿¡ ´ëÇÑ ¼º°øÀûÀΠȣÃâ ÈÄ¿¡, ¹Ì´ÏÆ÷Æ®´Â ¹ö½º °ü·Ã ÁÖ¼Òµé ȤÀº ±×·¯ÇÑ I/O Æ÷Æ® ¹üÀ§³»¿¡¼­ ¸ÊµÈ °¡»ó ÁÖ¼Òµé·Î ¾î¶² NdisImmediate..PortXxx ÇÔ¼öµéÀ» È£ÃâÇÒ ¼ö ¾ø´Ù.

¸¸¾à NdisMRegisterPortRange¿¡ ´ëÇÑ È£ÃâÀÌ ½ÇÆÐÇÑ´Ù¸éÀº, MiniportInitialize ÇÔ¼ö´Â ÀÌ¹Ì NICÀ» À§ÇØ ÇÒ´çµÈ, ±×¸®°í ±×·¯ÇÑ NICÀ» À§ÇÑ ÃʱâÈ­°¡ ½ÇÆÐÇÑ´Ù¸éÀº, ¸ðµç ÀÚ¿øµéÀ» ÇØÁ¦ÇØ¾ß ÇÑ´Ù.

È£½ºÆ® ¸Þ¸ð¸® °ø°£³»¿¡¼­ ÀåÄ¡ ·¹Áö½ºÅ͵é·Î NICµéÀÇ µå¶óÀ̹ù¸£Àº NdisMMapIoSpace¸¦ È£ÃâÇÏ°í °è¼ÓÇØ¼­, NIC ·¹Áö½ºÅ͵éÀ» Á¢±ÙÇϱâ À§ÇØ NdisRead/WriteRegisterXxx ÇÔ¼öµéÀ» È£ÃâÇÑ´Ù.

NdisMRegisterIoPortRangeÀÇ È£ÃâÀÚµéÀº IRQL PASSIVE_LEVEL¿¡¼­ È£ÃâÇÑ´Ù.