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¿¡¼ µ¿ÀÛÇÑ´Ù.
|