NdisDprFreePacketNonInterlocked

VOID

  NdisDprFreePacketNonInterlocked(

    IN PNDIS_PACKET  Packet

    );

NdisDprFreePacketNonInterlockedÇÔ¼ö´Â µå¶óÀ̹ö ÇÒ´ç ÆÐŶ µð½ºÅ©¸³Å͸¦ ÇØÁ¦Çϰí È£ÃâÀÚ°¡ IRQL DISPATCH_LEVEL¿¡¼­ µ¿À۵ɶ§ ÇÁ¸®¸®½ºÆ®·Î ±×°ÍÀ» ¸®ÅÏÇÑ´Ù. ±×¸®°í ±× È£ÃâÀÚ´Â ÆÐŶ POOL¿¡ Á¢±ÙÇϴ°Ϳ¡´ëÇØ ³»ºÎÀûÀ¸·Î µ¿±âÈ­¸¦ Á¦°øÇÑ´Ù.

¸Å°³º¯¼ö

Packet
NdisDprAllocatePacketNonInterlockedÇÔ¼ö¿¡ÀÇÇØ ¸®ÅÏµÈ ÆÐŶ µð½ºÅ©¸³ÅÍÀÇ Æ÷ÀÎÅÍ.

ÁÖ¼®

NdisDprFreePacketNonInterlockedÇÔ¼ö¸¦ È£ÃâÇϱâÀü¿¡, µå¶óÀ̹ö´Â ÆÐŶ¿¡ üÀÎµÈ ¸ðµç ¹öÆÛ µð½ºÅ©¸³Å͵éÀ» ÇØÁ¦ÇϱâÀ§ÇØ ÇÊ¿äÇÑ ¸¸Å­ NdisFreeBufferÇÔ¼ö¸¦ È£ÃâÇØ¾ß¸¸ ÇÑ´Ù. ȤÀº ¹öÆÛ µð½ºÅ©¸³Å͵éÀÇ ¸ðµç Æ÷ÀÎÅ͵éÀ» ÀúÀåÇϱâÀ§ÇØ ÇÊ¿äÇÑ ¸¸Å­ NdisUnchainBufferAtXxxÇÔ¼ö¸¦ È£ÃâÇØ¾ß¸¸ ÇÑ´Ù. ±×·¸Áö ¾ÊÀ¸¸é, üÀγ»ÀÇ ¹öÆÛ µð½ºÅ©¸³Å͵é°ú °ü°èµÈ ¸Þ¸ð¸®´Â µå¶óÀ̹ö¿¡ÀÇÇØ »ç¿ëµÉ¼ö ¾ø´Ù.

NdisDprFreePacketNonInterlockedÇÔ¼öÀÇ È£ÃâÀÚ¿Í »óº¸ÀûÀÎ NdisDprAllocatePacketNonInterlockedÇÔ¼ö´Â µå¶óÀ̹ö°¡ NdisAllocatePacketPoolÇÔ¼ö·Î ÇÒ´çÇÑ ÆÐŶ POOL¿¡ Á¢±Ù ÇÏ´Â ¸ðµç µ¿±âÈ­¿¡´ëÇØ Ã¥ÀÓÀÌ ÀÖ´Ù. ±×·¸Áö¾ÊÀ¸¸é, µå¶óÀ̹ö´Â NDIS°¡ NdisAllocate/FreePacket ȤÀº NdisDprAllocate/FreePacketÇÔ¼öÀÇ È£Ãâ¿¡ÀÇÇÑ ÀÌÀÍ¿¡ ÀÌ µ¿±âÈ­¸¦ ´Ù·çµµ·Ï ÇØ¾ß¸¸ÇÑ´Ù.

ÀϹÝÀûÀ¸·Î ±×·± µå¶óÀ̹ö´Â ÆÐŶ POOLÀ» µå¶óÀ̹ö ÇÒ´ç ½ºÇÉ ¶ôÀ¸·Î º¸È£ÇÑ´Ù. NdisDprFreePacketNonInterlockedÇÔ¼öÀÇ È£ÃâÀü¿¡, µå¶óÀ̹ö´Â NdisAcquireSpinLockÇÔ¼ö¸¦ È£ÃâÇÑ´Ù. À̰ÍÀº IRQL À» DISPATCH_LEVEL·Î ¿Ã¸°´Ù. NdisDprFreePacketNonInterlockedÇÔ¼ö°¡ ÄÁÃß·²À» ¸®ÅÏÇÒ¶§, ±×·± µå¶óÀ̹ö´Â ½ºÇɶôÀ» NdisReleaseSpinLockÇÔ¼ö·Î ÇØÁ¦ÇÑ´Ù.

NdisDprFreePacketNonInterlockedÇÔ¼öÀÇ È£ÃâÀÚ´Â IRQL DISPATCH_LEVEL¿¡¼­ µ¿À۵Ǿî¾ß¸¸ ÇÑ´Ù.