NdisDprAllocatePacketNonInterlocked

VOID

  NdisDprAllocatePacketNonInterlocked(

    OUT PNDIS_STATUS  Status,

    OUT PNDIS_PACKET  *Packet,

    IN NDIS_HANDLE  PoolHandle

    );

È£ÃâÀÚ°¡ IRQL DISPATCH_LEVEL¿¡¼­ µ¿ÀÛµÇ°í ±× È£ÃâÀÚ°¡ ÆÐŶ POOL¿¡ ³»ºÎÀûÀÎ µ¿±âÁ¢±ÙÀ» Á¦°ø¶§, NdisDprAllocatePacketNonInterlockedÇÔ¼ö´Â ÆÐŶ µð½ºÅ©¸³Å͸¦ ÇÒ´çÇϰí ÃʱâÈ­ ÇÑ´Ù.

¸Å°³º¯¼ö

Status
ÀÌ ÇÔ¼ö°¡ ¿äû¿¡ ´ëÇÑ ¸¶Áö¸· »óŸ¦ ¸®ÅÏÇϴ ȣÃâÀÚ º¯¼öÀÇ Æ÷ÀÎÅÍ, À̰ÍÀº ´ÙÀ½Áß ÇϳªÀϼö ÀÖ´Ù.:

NDIS_STATUS_SUCCESS
È£ÃâÀÚ´Â Packet¿¡ ¸®ÅÏµÈ ÆÐŶ µð½ºÅ©¸³Å͸¦ »ç¿ëÇÒ¼ö ÀÖ´Ù.

NDIS_STATUS_RESOURCES
ÇöÀç ÆÐŶ POOL¿¡´ëÇÑ ÇÁ¸® ¸®½ºÆ®´Â ´õÀÌ»ó ÀÌ¿ëÇÒ¼ö ¾ø´Ù. NdisDprFreePacketNonInterlockedÇÔ¼ö¿¡´ëÇÑ ¼øÂ÷ÀûÀΠȣÃâÀº ÇÁ¸® ¸®½ºÆ®·Î ÁÖ¾îÁø ¿£Æ®¸®¸¦ ¸®ÅÏÇÒ°ÍÀÌ´Ù. Packetº¯¼ö´Â NULL·Î ¼³Á¤ µÉ °ÍÀÌ´Ù.

Packet
ÀÌ ÇÔ¼ö°¡ ÇÒ´çµÈ ÆÐŶ µð½ºÅ©¸³ÅÍ¿¡´ëÇÑ Æ÷ÀÎÅ͸¦ ¸®ÅÏÇÏ´Â °Í¿¡´ëÇÑ È£Ãâ ÇÒ´ç º¯¼öÀÇ Æ÷ÀÎÅÍ.

PoolHandle
ÀÌÀüÀÇ NdisAllocatePacketPoolÇÔ¼öÀÇ È£Ãâ¿¡ÀÇÇØ ¸®ÅÏµÈ ÇÚµéÀ» ÁöÁ¤ÇÑ´Ù.

ÁÖ¼®

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

NdisDprAllocatePacketNonInterlockedÇÔ¼ö´Â NdisAllocatePacketÇÔ¼öº¸´Ù Á¶±Ý ºü¸£´Ù. ¿Ö³ÄÇϸé NDIS´Â ÀüÇüÀûÀ¸·Î µå¶óÀ̹ö°¡ ÇÒ´çÇÑ ÆÐŶPOOL¿¡ µ¿±âÀûÀÎ Á¢±ÙÀ» »ç¿ëÇÏ´Â °Í¿¡´ëÇØ NDIS´Â ½ºÇÉ ¶ôÀ» Çã¿ëÇÒ Çʿ䰡 ¾ø´Ù.

´ë½Å, NdisDprAllocatePacketNonInterlocked¿Í NdisDprFreePacketNonInterlocked ÇÔ¼öÀÇ È£ÃâÀÚ´Â ³»ºÎÀûÀ¸·Î ÆÐŶ POOL¿¡ Á¢±ÙÇϴ°ÍÀ» µ¿±âÀûÀ¸·Î ´Ù·ç¾î¾ß¸¸ ÇÑ´Ù.

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

NdisDprFreePacketNonInterlockedÇÔ¼ö·Î POOL·Î ´Ù½Ã ÆÐŶ µð½ºÅ©¸³Å͸¦ ÇØÁ¦Çϰí NdisReleaseSpinLockÇÔ¼ö¸¦ È£ÃâÇϱâÀü¿¡ ºñ½ÁÇÑ ¹æ¹ýÀ¸·Î ±×·± µå¶óÀ̹ö´Â NdisAcquireSpinLockÇÔ¼ö¸¦ È£ÃâÇÑ´Ù.

µå¶óÀ̹ö°¡ ¾ð·ÎµåÇϱâÀü¿¡ ÇÒ´çÇÑ ¸®¼Ò½ºµéÀ» ÇØÁ¦ ÇÒ¶§¸¦ Á¦¿ÜÇϰí NdisDprAllocatePacketNonInterlockedÇÔ¼ö·Î ÇÒ´çµÈ ¾î¶² ÆÐŶ µð½ºÅ©¸³ÅÍ´Â NdisDprFreePacketNonInterlockedÇÔ¼ö·Î ÇØÁ¦Çؾ߸¸ÇÑ´Ù. ±×·¸Áö ¾ÊÀ¸¸é, ±×°ÍÀº ¸¸¾à ÆÐŶ µð½ºÅ©¸³ÅͰ¡ NdisDprAllocatePacketNonInterlockedÇÔ¼ö·Î ÇÒ´çµÆ´Ù¸é NdisDprFreePacket ȤÀº NdisFreePacketÇÔ¼ö·Î ¾î¶² ÆÐŶ µð½ºÅ©¸³Å͸¦ ÇØÁ¦ÇϱâÀ§ÇØ ·¹À̽º »óŸ¦ ¾ß±â ÇÒ¼ö ÀÖ´Â ·±Å¸ÀÔ µ¿±âÈ­ ¿¡·¯ÀÌ´Ù.

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