NdisMMapIoSpace
NDIS_STATUS
NdisMMapIoSpace(
OUT PVOID *VirtualAddress,
IN NDIS_HANDLE MiniportAdapterHandle,
IN NDIS_PHYSICAL_ADDRESS PhysicalAddress,
IN UINT Length
);
|
NdisMMapIoSpace ÇÔ¼ö´Â ½Ã½ºÅÛ °ø°£ °¡»ó ¹üÀ§¿¡ ÀåÄ¡ ·¥ ȤÀº ·¹Áö½ºÅ͵éÀÇ ÁÖ¾îÁø ¹ö½º °ü·Ã ¹üÀ§¸¦ ¸ÊÇÑ´Ù.
¸Å°³º¯¼ö
- VirtualAddress
- ¸¸¾à È£ÃâÀÌ ¼º°øÀûÀ̶ó¸éÀº, º¯È¯µÈ °¡»ó ÁÖ¼Ò¸¦ ¼³Á¤Çϴ ȣÃâÀÚ Á¦°ø º¯¼ö¸¦ °¡¸®Å²´Ù.
- MiniportAdapterHandle
- MiniportInitialize¿¡ ´ëÇÑ ÇÚµé ÀÔ·ÂÀ» ÁöÁ¤ÇÑ´Ù.
- PhysicalAddress
- ¸ÊµÈ ÀåÄ¡ ¸Þ¸ð¸® ¹üÀ§ÀÇ ¹ö½º °ü·Ã º£À̽º ½ÇÁ¦ ÁÖ¼Ò¸¦ ÁöÁ¤ÇÑ´Ù.
- Length
- ¸ÊµÈ ¹ÙÀÌÆ® ¼ö¸¦ ÁöÁ¤ÇÑ´Ù.
¸®Åϰª
NdisMMapIoSpace´Â ´ÙÀ½°ú °°Àº »óÅ °ªµé Áß¿¡ Çϳª¸¦ ¸®ÅÏÇÑ´Ù. :
- NDIS_STATUS_SUCCESS
- ÀåÄ¡ ¸Þ¸ð¸® ¹üÀ§´Â ¼º°øÀûÀ¸·Î ¸ÊµÇ¾îÁø´Ù. ±×·¡¼ VirtualAddress´Â À¯È¿ÇÏ°í ¸ÊµÈ ¹üÀ§´Â NICÀ» À§ÇØ ·¹Áö½ºÆ®¸®³»¿¡ ¿ä±¸µÇ¾îÁø´Ù.
- NDIS_STATUS_RESOURCE_CONFLICT
- ¶Ç ÇϳªÀÇ µå¶óÀ̹ö°¡ ÀÌ¹Ì ÀåÄ¡¸¦ À§ÇØ ¹üÀ§¸¦ ¿ä±¸Çß±â ‹š¹®¿¡ ·¹Áö½ºÆ®¸®³»¿¡ ÀåÄ¡ ¸Þ¸ð¸® ¹üÀ§¸¦ ¿ä±¸ÇÏ´Â ½Ãµµ´Â ½ÇÆÐÇß´Ù. ¸¸¾à À̰ÍÀÌ ÀϾ¸éÀº NdisMMapIoSpace´Â ¿¡·¯¸¦ ·Î±×ÇÑ´Ù.
- NDIS_STATUS_RESOURCES
- ¸Þ¸ð¸®°¡ ¸ÊµÇ¾îÁöÁö ¾Ê°Å³ª ȤÀº ÃæºÐÇÑ °¡»ó ¸Þ¸ð¸®°¡ ÇÒ´çµÇ¾îÁöÁö ¾Ê´Â´Ù.
- NDIS_STATUS_FAILURE
- ¹ö½º ŸÀÔ È¤Àº ¹ö½º ³Ñ¹ö°¡ ¹üÀ§ ¹Û¿¡ÀÖµçÁö ȤÀº ÁÖ¾îÁø PhysicalAddress ¿Í Length°¡ À¯È¿ÇÏÁö ¾Ê´Ù. (°¡´ÉÇÑ ÇÑ Çö Ç÷§ÆûÀÇ I/O °ø°£³»¿¡ ¾ø´Ù.)
ÁÖ¼®
ÀÌ ÇÔ¼ö´Â on-board¸Þ¸ð¸® ȤÀº È£½ºÆ®ÀÇ I/O °ø°£³»¿¡ ³ªÅ¸³ª´Â ÀåÄ¡ ·¹Áö½ºÅ͵éÀÇ ¹ðÅ©¸¦ °¡Áö´Â NICµéÀÇ µå¶óÀ̹öµé¿¡ ÀÇÇØ È£ÃâµÇ¾îÁø´Ù. ¿¹·Î PIO¸¦ »ç¿ëÇÏ´Â NICÀÇ µå¶óÀ̹ö´Â NdisMMapIoSpace¸¦ È£ÃâÇÑ´Ù.
NdisMMapIoSpace¿¡ ´ëÇÑ ¼º°øÀûÀΠȣÃâÀº µå¶óÀ̹öÀÇ NICÀ» À§ÇØ ·¹Áö½ºÆ®¸®³»¿¡ Çϵå¿þ¾î ÀÚ¿øµéÀ» ¿ä±¸ÇÑ´Ù. °á°úÀûÀ¸·Î, ´ÜÁö MiniportInitialize ÇÔ¼öµéÀº NdisMMapIoSpace¸¦ È£ÃâÇÑ´Ù. NdisMMapIoSpace´Â ¸¸¾à NDIS_STATUS_SUCCESS·Î ¸®ÅÏÇÏÁö ¾Ê´Â´Ù¸éÀº VirtualAddress¿¡ º¯¼ö´Â NULL·Î ¼³Á¤ÇÑ´Ù.
MiniportInitialize ÇÔ¼ö´Â µå¶óÀ̹öÀÇ Parameters ·¹Áö½ºÆ®¸® Ű·ÎºÎÅÍ PhysicalAddress °ªÀ» ¾ò°Å³ª ȤÀº ¹ö½º ŸÀÔ Æ¯Á¤ NdisXxx ±¸¼º ÇÔ¼ö¸¦ È£ÃâÇÔÀ¸·Î½á PhysicalAddress °ªÀ» ¾ò´Â´Ù. ÁÖ¾îÁø ¹°¸® ÁÖ¼Ò ¹üÀ§´Â Çö Ç÷§ÆûÀÇ I/O °ø°£³»¿¡ ¶³¾îÁ®¾ß ÇÑ´Ù.(fall) È£½ºÆ® ¹°¸®ÀûÀÎ ¸Þ¸ð¸® ÁÖ¼Ò·Î NdisMMapIoSpace¸¦ È£ÃâÇÏ´Â °ÍÀº ÇÁ·Î±×·¡¹Ö ¿¡·¯ÀÌ´Ù.
¹Ì´ÏÆ÷Æ®´Â ¸¸¾à MiniportInitialize ÇÔ¼ö°¡ °è¼ÓÇØ¼ NICÀ» ÃʱâÈÇÏ´Â °ÍÀ» ½ÇÆÐÇÑ´Ù¸éÀº, ¸¸¾à NICÀÌ ±â°è·ÎºÎÅÍ Á¦°ÅµÈ´Ù¸éÀº, ȤÀº µå¶óÀ̹ö°¡ unloading ÇÒ¶§, »óÈ£ÀûÀÎ(reciprocal) NdisMUnmapIoSpace¸¦ È£ÃâÇØ¾ß ÇÑ´Ù.
NdisMMapIoSpaceÀÇ È£ÃâÀÚµéÀº IRQL PASSIVE_LEVEL¿¡¼ ½ÇÇàÇÑ´Ù.
|