NdisInterlockedInsertTailList
PLIST_ENTRY
NdisInterlockedInsertTailList(
IN PLIST_ENTRY ListHead,
IN PLIST_ENTRY ListEntry,
IN PNDIS_SPIN_LOCK SpinLock
);
|
NdisInterlockedInsertTailListÇÔ¼ö´Â ¿£Æ®¸®,ÀϹÝÀûÀ¸·Î ÆÐŶÀ» ÀÌÁß¿¬°á¸®½ºÆ®ÀÇ Å×ÀÏ¿¡ »ðÀÔÇÏ¿© ¸ÖƼÇÁ·Î¼¼¼-safe¹æ¹ýÀ¸·Î µ¿±âȵǴ ¸®½ºÆ®¿¡ Á¢±ÙÇϵµ·Ï ÇÑ´Ù.
¸Å°³º¯¼ö
- ListHead
- ¿£Æ®¸®°¡ »ðÀԵǾîÁö´Â ÀÌÁß¿¬°á¸®½ºÆ®ÀÇ Å×ÀÏÀÇ Æ÷ÀÎÅÍ.
- ListEntry
- ¸®½ºÆ®ÀÇ ³¡¿¡ »ðÀԵǾîÁö´Â ¿£Æ®¸®ÀÇ Æ÷ÀÎÆ®
- SpinLock
- ¸®½ºÆ®¿¡ µ¿±âÀûÀ¸·Î Á¢±ÙÇϱâÀ§ÇØ »ç¿ëµÇ´Â È£ÃâÀÚÁ¦°ø ½ºÇɶôÀÇ Æ÷ÀÎÅÍ.
¸®Åϰª
NdisInterlockedInsertTailListÇÔ¼ö´Â ÁÖ¾îÁø ¿£Æ®¸®°¡ »ðÀԵDZâÀü¿¡ Å¥ÀÇ Å×ÀÏ¿¡ ÀÖ´Â ¿£Æ®¸®¿¡´ëÇÑ Æ÷ÀÎÅ͸¦ ¸®ÅÏÇÑ´Ù. ¸¸¾à Å¥°¡ ºñ¾ú´Ù¸é, NULLÀ» ¸®ÅÏÇÑ´Ù.
ÁÖ¼®
NdisInterlockedInsertTailListÇÔ¼öÀÇ È£ÃâÀü¿¡, µå¶óÀ̹ö´Â NdisInitializeListHeadÇÔ¼ö·Î ListHeadÀÇ º¯¼ö¸¦ ÃʱâÈ ÇØ¾ß¸¸Çϰí NdisAllocateSpinLockÇÔ¼ö·Î SpinLockÀÇ º¯¼ö¸¦ ÃʱâÈÇØ¾ß¸¸ ÇÑ´Ù. µå¶óÀ̹ö´Â ÀÌ·¯ÇÑ º¯¼öµé¿¡´ëÇÑ ±×¸®°í ³»ºÎ Å¥¿¡´ëÇÑ »óÁÖ ÀúÀåÀå¼Ò¸¦ Á¦°øÇؾ߸¸ÇÑ´Ù.
NdisInterlockedInsertTailListÇÔ¼ö°¡ ÁÖ¾îÁø ¿£Æ®¸®¸¦ »ðÀÔÇϴµ¿¾È¿¡, ½ÉÁö¾î µå¶óÀ̹ö°¡ ¸ÖƼÇÁ·Î¼¼¼ ÀåÄ¡¿¡¼ µ¿ÀÛÇÒ¶§Á¶Â÷, È£ÃâÀÚ Á¦°ø ½ºÇɶôÀº µå¶óÀ̹öÀÇ ³»ºÎ Å¥¿¡ Á¢±ÙÇϴ°ÍÀ¸·ÎºÎÅÍ ¾î¶² ´Ù¸¥ ÇÔ¼öµéÀ» ¸·´Â´Ù.
NdisInterlockedInsertTailListÇÔ¼ö´Â ÁÖ¾îÁø ½ºÇɶôÀ» Çã¿ëÇϰųª ÄÁÃß·²À» ¸®ÅÏÇϱâÀü¿¡ ¿ø·¡ IRQLÀ» ÀúÀåÇÒ¶§, IRQLÀ» DISPATCH_LEVEL·Î »ó½Â½ÃŲ´Ù. °á°úÀûÀ¸·Î, NdisInterlockedInsertTailListÇÔ¼ö¸¦ È£ÃâÇÏ´Â ¾î¶² µå¶óÀ̹öÇÔ¼ö´Â ÆäÀÌÁ®ºíÇÑ ÄÚµåÀϼö ¾ø´Ù.
¸®ÅÏµÈ °ªÀ» »ðÀÔµÈ ¿£Æ®¸®·Î ´Ù½Ã º¯È¯ÇϱâÀ§ÇØ, µå¶óÀ̹ö´Â CONTAINING_RECORD¸ÅÅ©·Î¸¦ »ç¿ëÇÑ´Ù(Kernel-Mode Driver Reference¸¦º¸¶ó).
NdisInterlockedInsertTailListÇÔ¼öÀÇ È£ÃâÀÚ´Â IRQL <= DISPATCH_LEVEL¿¡¼ µ¿ÀÛÇÑ´Ù.
|