NdisInterlockedRemoveHeadList

PLIST_ENTRY

  NdisInterlockedRemoveHeadList(

    IN PLIST_ENTRY  ListHead,

    IN PNDIS_SPIN_LOCK  SpinLock

    );

NdisInterlockedRemoveHeadListÇÔ¼ö´Â ÀÌÁß¿¬°áµÈ ¸®½ºÆ®ÀÇ ¿£Æ®¸®, ÀϹÝÀûÀ¸·Î ÆÐŶ,¸¦ Á¦°ÅÇÏ¿© ¸®½ºÆ®¿¡´ëÇÑ Á¢±ÙÀÌ ¸ÖƼÇÁ·Î¼¼¼­-safe¹æ¹ý¿¡¼­ µ¿±âÀûÀ¸·Î µÇµµ·Ï ÇÑ´Ù.

¸Å°³º¯¼ö

ListHead
¿£Æ®¸®°¡ Á¦°ÅµÇ¾îÁö´Â°ÍÀ¸·ÎºÎÅÍ ÀÌÁß¿¬°áµÈ ¸®½ºÆ®ÀÇ ÇìµåÀÇ Æ÷ÀÎÅÍ.

SpinLock
¸®½ºÆ®¿¡ µ¿±âÀûÀ¸·Î Á¢±ÙÇϱâÀ§ÇØ »ç¿ëµÇ´Â, È£ÃâÀÚ ÇÒ´ç ½ºÇÉ ¶ôÀÇ Æ÷ÀÎÅÍ.

¸®Åϰª

NdisInterlockedRemoveHeadListÇÔ¼ö´Â deÅ¥µÇ´Â ¿£Æ®¸®ÀÇ Æ÷ÀÎÅ͸¦ ¸®ÅÏÇÑ´Ù. ¸¸¾à ¸®½ºÆ®°¡ ºñ¾ú´Ù¸é, NULLÀ» ¸®ÅÏÇÑ´Ù.

ÁÖ¼®

¾î¶² NdisInterlocked..ListÇÔ¼ö¸¦ È£ÃâÇϱâÀü¿¡, µå¶óÀ̹ö´Â NdisInitializeListHeadÇÔ¼ö·Î ListHeadº¯¼ö¸¦ ÃʱâÈ­ ÇØ¾ß¸¸ Çϰí NdisAllocateSpinLockÇÔ¼ö·Î SpinLockº¯¼ö¸¦ ÃʱâÈ­ ÇØ¾ß¸¸ ÇÑ´Ù. µå¶óÀ̹ö´Â ¶ÇÇÑ ÀÌ·±ÇÑ º¯¼öµé°ú ³»ºÎ Å¥¿¡´ëÇÑ »óÁÖ °ø°£À» Á¦°øÇؾ߸¸ÇÑ´Ù.

NdisInterlockedRemoveHeadListÇÔ¼ö¸¦ È£ÃâÇϱâÀü¿¡, ¿£Æ®¸®µéÀº NdisInterlockedInsert..ListÇÔ¼öÀÇ ÇѹøÈ¤Àº ±×ÀÌ»óÀÇ È£Ãâ·Î Å¥È­ÇØ¾ßÇÑ´Ù.

È£ÃâÀÚ Á¦°ø ½ºÇɶôÀº NdisInterlockedRemoveHeadListÇÔ¼ö°¡ ¿£Æ®¸®¸¦ Á¦°ÅÇϴµ¿¾È µå¶óÀ̹öÀÇ ³»ºÎ Å¥¿¡ Á¢±ÙÇϴ°ÍÀ¸·ÎºÎÅÍ ¾î¶² ´Ù¸¥ ÇÔ¼öµéÀ» ¸·´Â´Ù. ½ÉÁö¾î µå¶óÀ̹ö°¡ ¸ÖƼÇÁ·Î¼¼¼­ ¸Ó½Å¿¡¼­ µ¿ÀÛÇÒ¶§Á¶Â÷.

NdisInterlockedRemoveHeadListÇÔ¼ö´Â ÁÖ¾îÁø ½ºÇɶôÀ» Çã¿ëÇÒ¶§ IRQLÀ» DISPATCH_LEVEL±îÁö ¿Ã¸®°í ÄÁÃß·²À» ¸®ÅÏÇϱâÀü¿¡ ¿ø·¡ IRQLÀ» ÀúÀåÇÑ´Ù. °á°úÀûÀ¸·Î, NdisInterlockedRemoveHeadListÇÔ¼ö¸¦ È£ÃâÇÏ´Â ¾î¶² µå¶óÀ̹öÇÔ¼ö´Â ÆäÀÌÁ®ºíÇÑ ÄÚµåÀϼö ¾ø´Ù.

¸®ÅÏµÈ °ªÀ» »ðÀÔµÈ ¿£Æ®¸®ÀÇ ¾îµå·¹½º·Î ´Ù½Ã ¹Ù²Ù±âÀ§ÇØ, µå¶óÀ̹ö´Â CONTAINING_RECORD¸ÞÅ©·Î¸¦ »ç¿ëÇÒ¼ö ÀÖ´Ù(Kernel-Mode Driver Reference¸¦ º¸¶ó).

NdisInterlockedRemoveHeadListÇÔ¼öÀÇ È£ÃâÀÚ´Â IRQL <= DISPATCH_LEVEL¿¡¼­ µ¿ÀÛÇÑ´Ù.