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¿¡¼­ ½ÇÇàÇÑ´Ù.