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¿¡¼ È£ÃâÇÑ´Ù.
|