MiniportAllocateComplete
VOID
MiniportAllocateComplete(
IN NDIS_HANDLE MiniportAdapterContext,
IN PVOID VirtualAddress,
IN PNDIS_PHYSICAL_ADDRESS PhysicalAddress,
IN ULONG Length,
IN PVOID Context
);
|
MiniportAllocateComplete´Â ¼±ÅÃÀûÀÎ ÇÔ¼öÀÌ´Ù. NdisMAllocateSharedMemoryAsync¸¦ È£ÃâÇÏ´Â ¹ö½º
¸¶½ºÅÍ DMA NICµéÀÇ µå¶óÀ̹ö¿¡ ÀÇÇØ Á¦°øµÇ¾îÁø´Ù.
¸Å°³º¯¼ö
- MiniportAdapterContext
- µå¶óÀ̹ö°¡ MiniportInitialize¿¡ ÀÇÇØ ¼³Á¤µÈ, NIC´ç »óŸ¦ À¯ÁöÇÏ´Â ¹Ì´ÏÆ÷Æ® ÇÒ´ç ÄÁÅØ½ºÆ®
¿µ¿ª¿¡ ´ëÇÑ ÇÚµéÀ» ÁöÁ¤ÇÑ´Ù.
- VirtualAddress
- ¸¸¾à ÇÒ´ç ½Ãµµ°¡ ½ÇÆÐÇÑ´Ù¸éÀº NULLÀ̰í ȤÀº NdisMAllocateSharedMemoryASync¿¡ ´ëÇÑ ¼±Çà È£Ãâ¿¡
ÀÇÇØ ÇÒ´çµÈ °øÀ¯ ¸Þ¸ð¸®ÀÇ ±âº» °¡»ó ÁÖ¼Ò¸¦ ÁöÁ¤ÇÑ´Ù.
- PhysicalAddress
- VirtualAddress¿¡ ´ëÇØ ¸ÊµÇ¾îÁö°í NIC¿¡ ÀÇÇØ »ç¿ëÀÌ ¾Ë¸ÂÀº ±âº» ½ÇÁ¦ ÁÖ¼Ò¸¦ ÁöÁ¤ÇÑ´Ù.
- Length
- NdisMAllocateSharedMemoryAsync¿¡ ´ëÇÑ ¼±Çà È£Ãâ¿¡ ÀÇÇØ ÇÒ´çµÈ ¹ÙÀÌÆ® ¼ö¸¦ ÁöÁ¤ÇÑ´Ù.
- Context
- NdisMAllocateSharedMemoryAsync¿¡ ´ëÇÑ ¼±Çà È£Ãâ¿¡¼ Àü´ÞµÈ µå¶óÀ̹ö °áÁ¤ ÄÁÅØ½ºÆ®¸¦ °¡¸®Å²´Ù.
ÁÖ¼®
¹ö½º ¸¶½ºÅÍ DMA NICµéÀÇ µå¶óÀ̹öµéÀº ´ëºÎºÐ ¸ÖƼÆÐŶ ¸®½Ãºê ÀεðÄÉÀ̼ǵéÀ» Áö¿øÇÔÀ¸·Î½á Áß¿äÇÑ
ÆÛÆ÷¸Õ½º À̵æµéÀ» ¾ò´Â °Í °°´Ù.
³ôÀº ³×Æ®¿öÅ© Æ®·¡ÇÈ¿¡ ±âÀÎÇØ¼ ¸®½Ãºê ¹öÆÛµéÀ» À§ÇÑ °øÀ¯ ¸Þ¸ð¸®¿¡¼ Àû°Ô ½ÇÇàÇÒ ¶§
NdisMAllocateSharedMemoryAsync¸¦ È£ÃâÇÒ ¼ö ÀÖ°Ô Çϱâ À§ÇØ MiniportAllocateComplete ÇÔ¼ö¸¦ Á¦°øÇÑ´Ù.
NdisMAllocateSharedMemoryAsync´Â °¡»ó ÁÖ¼ÒµéÀ» »ç¿ëÇÏ´Â µå¶óÀ̹ö¿Í ´ëÀÀÇÏ´Â ½ÇÁ¦ ÁÖ¼ÒµéÀ» »ç¿ëÇÏ´Â
¹ö½º¸¶½ºÅÍ DMA NIC »çÀÌ¿¡ °øÀ¯ÇÒ ¼ö ÀÖ´Â ¸Þ¸ð¸®¸¦ ÇÒ´çÇÑ´Ù.
NdisMAllocateSharedMemoryAsync´Â ÇÒ´ç ½Ãµµ°¡ ¼º°øÀ̵ç ȤÀº ½ÇÆÐÀ̵çÁö MiniportAllocateComplete¸¦
È£ÃâÇÑ´Ù.
NdisMAllocateSharedMemoryAsync¿¡ ´ëÇÑ È£ÃâÀº ±×°ÍÀÌ NdisMIndicateReceivePacketÀ¸·Î ¹ÙÀεåµÈ
ÇÁ·ÎÅäÄݵ鿡°Ô µé¾î¿À´Â ¸®½ÃºêµéÀ» ÀεðÄÉÀÌÆ®ÇÒ ¶§ °¡´ÉÇÑÇÑ µå¶óÀ̹öÀÇ MiniportHandleInterrupt
ȤÀº MiniportTimer ÇÔ¼ö·ÎºÎÅÍ IRQL <= DISPATCH_LEVEL¿¡¼ ÀϾ ¼ö ÀÖ´Ù.
±×·¯ÇÑ µå¶óÀ̹ö´Â ¶ÇÇÑ MiniportReturnPacket ÇÔ¼ö¸¦ °¡Á®¾ß ÇÑ´Ù.
MiniportAllocateCompleteÀº NdisMAllocateSharedMemoryAsync¿¡ ´ëÇÑ È£ÃâÀÌ ¼º°øÀÎÁö¸¦ °áÁ¤Çϱâ À§ÇØ
VirtualAddressÀÇ °ªÀ» Å×½ºÆ®ÇØ¾ß ÇÑ´Ù.
¸¸¾à È£ÃâÀÌ ¼º°øÀûÀ̶ó¸éÀº, VirtualAddress´Â NULLÀÌ ¾Æ´Ñ °ªÀÌ´Ù. ¸¸¾à È£ÃâÀÌ ½ÇÆÐÇÑ´Ù¸éÀº,
VirtualAddress´Â NULL °ªÀÌ´Ù.
¸¸¾à NdisMAllocateSharedMemoryAsync°¡ ¼º°øÀûÀ̶ó¸éÀº, MiniportAllocateCompleteÀº »õ·Ó°Ô ÇÒ´çµÈ
°øÀ¯ ¸Þ¸ð¸® ºí·°³»¿¡ Ãß°¡ÀûÀÎ ¸®½Ãºê ¹öÆÛµéÀ» ¼³Á¤ÇÒ ¼ö ÀÖ´Ù.
¸¸¾à ÀÌ È£ÃâÀÌ Ä³½¬ ¸Þ¸ð¸®¸¦ ÇÒ´çÇÑ´Ù¸éÀº, MiniportAllocateCompleteÀº ij½¬ ¶óÀÎ °æ°è¿¡ °¢ »õ·Î¿î
¸®½Ãºê ¹öÆÛ¸¦ Á¤·ÄÇØ¾ß ÇÑ´Ù.
MiniportAllocateCompleteÀº ¹öÆÛ pool·ÎºÎÅÍ ÀÌ·¯ÇÑ »õ·Î¿î ¸®½Ãºê ¹öÆÛµéÀ» ¸ÊÇÏ´Â ¹öÆÛ µð½ºÅ©¸³Å͵éÀ»
ÇÒ´çÇØ¾ß ÇÑ´Ù.
±×·¯ÇÑ ¹Ì´ÏÆ÷Æ®´Â ¸ÖƼ ÆÐŶ ¸®½Ãºê ÀεðÄÉÀ̼ǵéÀ» °è¼ÓÇØ¼ ÇÒ ¼ö ÀÖ´Ù À̰͵éÀº NDIS°¡
ÀÌ ÇÔ¼ö¸¦ ÀͽºÆ÷Æ®ÇÑ ¹ÙÀεåµÈ ÇÁ·ÎÅäÄÝÀÇ ProtocolReceivePacket ÇÔ¼ö¿¡ Æ÷¿öµåÇϰųª ȤÀº °¢ ÆÐŶµéÀÌ
´Ù¸¥ ¹ÙÀεåµÈ ÇÁ·ÎÅäÄÝÀÇ ProtocolReceive ÇÔ¼ö¿¡ Æ÷¿öµåµÈ´Ù.
¸¸¾à NdisMAllocateSharedMemoryAsync¿¡ ´ëÇÑ È£ÃâÀÌ ½ÇÆÐÇÑ´Ù¸éÀº, MiniportAllocateCompleteÀÌ µå¶óÀ̹ö°¡
°è¼ÓÇØ¼ ÀεðÄÉÀÌÆ®ÇÏ´Â ÆÐŶµéÀ» À§ÇØ ¾Æ¿ô¿Àºê¹êµåºí·°ÀÇ Status ¸â¹ö³»¿¡ NDIS_STATUS_RESOURCES¸¦
¼³Á¤ÇØ¾ß ÇÏ´Â °ÍÀ» °¡¸®Å°´Â MiniportAdapterContext ¿µ¿ª³»¿¡ »óÅ º¯¼ö¸¦ ¼³Á¤ÇØ¾ß ÇÑ´Ù.
ÀÌ »óÅ´ NDIS°¡ ¹Ì´ÏÆ÷Æ®°¡ NDIS_STATUS_RESOURCES°¡ ¼³Á¤ÇÏ´Â °¢ ÆÐŶÀ¸·Î ¹ÙÀεåµÈ ÇÁ·ÎÅäÄݵéÀÇ
ProtocolReceive ÇÔ¼öµéÀ» È£ÃâÇÏ°Ô ÇÏ°í ±×·¡¼ ÇÁ·ÎÅäÄÝ µå¶óÀ̹öµéÀº ÇÁ·ÎÅäÄÝÀÌ ¸ðµç ÀεðÄÉÀÌÆ®µÈ
µ¥ÀÌÅ͸¦ ó¸®ÇÒ ¶§±îÁö ÆÐŶµéÀ» À¯ÁöÇÏ´Â °Íº¸´Ù ÀεðÄÉÀÌÆ®µÈ °¢ ¿¬°áµÈ ¸®½Ãºê ¹öÆÛµéÀ» °¡Áø
¹Ì´ÏÆ÷Æ® ÇÒ´ç ¹öÆÛµéÀ» ÇØÁ¦ÇÑ´Ù.
¹Ì´ÏÆ÷Æ®ÀÇ Á¸ÀçÇÏ´Â °øÀ¯ ¸Þ¸ð¸® ¿µ¿ª³»ÀÇ ¸®½Ãºê ¹öÆÛ °ø°£ÀÌ º¸ÃæµÇ¾îÁø´Ù¸éÀº µå¶óÀ̹ö´Â »óÅÂ
º¯¼ö¸¦ ¸®¼ÂÇÒ ¼ö ÀÖ°í NDIS_STATUS_SUCCESS·Î ÆÐŶ ¹è¿µéÀ» ´Ù½Ã ÀεðÄÉÀÌÆ®ÇÑ´Ù.
µðÆúÆ®·Î, MiniportAllocateCompleteÀº IRQL DISPATCH_LEVEL¿¡¼ ½ÇÇàÇÑ´Ù.
|