NdisInitializeReadWriteLock
VOID
NdisInitializeReadWriteLock(
IN PNDIS_RW_LOCK Lock
);
|
NdisInitializeReadWriteLockÇÔ¼ö´Â NDIS_RW_LOCKŸÀÔÀÇ º¯¼ö¸¦ ÃʱâÈ ÇÑ´Ù. NDIS_RW_LOCKº¯¼ö´Â Çѹø¿¡ ÇϳªÀÇ ºñISRµå¶óÀ̹ö ½º·¹µå¿¡´ëÇÑ °øÀ¯µÈ ÀÚ¿øÀÇ ¾²±âÁ¢±ÙÁ¦ÇÑÀ»À§ÇØ »ç¿ëµÈ´Ù. ÀÌ NDIS_RW_LOCK´Â ¿©·¯°³ÀÇ ºñISRµå¶óÀ̹ö ½º·¹µåµéÀÌ µ¿½Ã¿¡ ±×·¯ÇÑ ¸®¼Ò½ºµé¿¡ Á¢±ÙÇÒ¼ö ÀÖµµ·ÏÇÑ´Ù. ±×·± Àбâ Á¢±ÙÀº ¾²±â Á¢±Ùµ¿¾È¿¡ Çã¿ëµÇÁö ¾Ê´Â´Ù.
¸Å°³º¯¼ö
- Lock
- ¶ôÀ» ³ªÅ¸³»´Â ¸ðÈ£ÇÑ º¯¼öÀÇ Æ÷ÀÎÅÍ. È£ÃâÀÚ´Â ÀÌ ¶ôÀ» ºñISRµå¶óÀ̹ö ½º·¹µåµé»çÀÌÀÇ °øÀ¯µÈ ¸®¼Ò½ºÀÇ ¾²±â ȤÀº Àбâ Á¢±ÙÀ» ¾ò±âÀ§ÇØ ÀÌ ¶ôÀ» »ç¿ëÇÒ¼ö ÀÖ´Ù.
ÁÖ¼®
NdisInitializeReadWriteLockÇÔ¼ö¿¡°Ô ³Ñ°ÜÁö´Â ¶ô Æ÷ÀÎÅÍ´Â ¸ðµç ´Ù¸¥ Ndis..ReadWriteLockÇÔ¼öµé¿¡°Ô ÇÊ¿äÇÑ ÆÄ¶ó¹ÌÅÍÀÌ´Ù.
µå¶óÀ̹ö°¡ ¸®¼Ò½ºµé¿¡´ëÇÑ ¾²±â ȤÀº Àбâ Á¢±ÙÀ» ¾ò±âÀ§ÇØ NdisAcquireReadWriteLockÇÔ¼ö¸¦ È£ÃâÇϱâÀü¿¡, µå¶óÀ̹ö´Â ±× ¸®¼Ò½ºµé°ú °ü°èµÈ ¶ôÀ» ÃʱâÈ ÇϱâÀ§ÇØ NdisInitializeReadWriteLockÇÔ¼ö¸¦ È£ÃâÇØ¾ß¸¸ ÇÑ´Ù. È£ÃâÀÚ´Â LockÀÇ º¯¼ö¿¡ ºñÆäÀÌÁöÈµÈ ÀúÀå°ø°£À» Á¦°øÇؾ߸¸ÇÑ´Ù.
NdisInitializeReadWriteLockÇÔ¼öÀÇ È£ÃâÈÄ, µå¶óÀ̹ö´Â ±× ¸®¼Ò½º¿¡´ëÇÑ ¾²±â ȤÀº Àбâ Á¢±ÙÀ» ¾ò±âÀ§ÇØ NdisAcquireReadWriteLockÇÔ¼ö¸¦ È£ÃâÇÒ¼ö ÀÖ´Ù. ´ÜÁö Çѹø¿¡ ÇϳªÀÇ ºñISRµå¶óÀ̹ö ½º·¹µå¸¸ÀÌ ±× ¸®¼Ò½º¿¡´ëÇÑ ¾²±â Á¢±ÙÀ» ¾òÀ»¼ö ÀÖ´Ù. ÇϳªÀÇ ºñISR½º·¹µå°¡ ¾²±âÁ¢±ÙÀ» °¡Áú¶§, ´Ù¸¥ ºñISR½º·¹µå¿¡ÀÇÇÑ ¸ðµç Àбâ¿Í ¾²±â Á¢±ÙµéÀº ±× ¾²±â Á¢±Ù¼ÒÀ¯ÀÚ°¡ ¶ôÀ» ÇØÁ¦ ÇÒ¶§±îÁö ±â´Ù·Á¾ß¸¸ÇÑ´Ù. ±×·¯³ª ¸¸¾à ºñISR½º·¹µå°¡ ÀбâÁ¢±ÙÀ» °®´Â´Ù¸é, ´Ù¸¥ ºñISR½º·¹µåµéÀº µ¿½Ã¿¡ Àϱâ Á¢±ÙÀ» Çã¿ëÇÑ´Ù.
Àϱ⿡´ëÇØ ºó¹øÇÏ°Ô Á¢±ÙµÇ¾îÁö°í ¾²±â¿¡´ëÇØ µå¹°°Ô Á¢±ÙµÇ¾îÁö´Â ¸®¼Ò½º¿¡´ëÇØ ÀÌ Å¸ÀÔÀÇ ¶ôÀ» ÃʱâÈ ÇÏ°í »ç¿ëÇ϶ó.
¸®¼Ò½ºÁ¢±ÙÀÌ ¿Ï·áµÉ¶§, µå¶óÀ̹ö´Â NdisReleaseReadWriteLockÇÔ¼ö¸¦ È£ÃâÇÑ´Ù.
µå¶óÀ̹ö°¡ ÃʱâÈÇÏ´Â °¢ ¶ôÀº ´ÙÀ½Áß Çϳª¸¦ ÇàÇÑ´Ù.:
- IRQL <= DISPATCH_LEVEL¿¡¼ µ¿ÀÛÇÏ´Â µå¶óÀ̹ö ½º·¹µåµé¿¡ÀÇÇØ µ¿½Ã¿¡ ÀϾ´Â Àбâ, ¾²±âÁ¢±ÙÀ¸·ÎºÎÅÍ °øÀ¯µÈ ¸®¼Ò½ºµéÀÇ ºÐ¸®µÈ ¼³Á¤À» º¸È£ÇÑ´Ù.
- IRQL <= DISPATCH_LEVEL¿¡¼ µ¿ÀÛÇÏ´Â µå¶óÀ̹ö ½º·¹µåµé¿¡ÀÇÇØ µ¿½Ã¿¡ ÀбâÁ¢±ÙÀ» ÇϱâÀ§ÇÑ °øÀ¯µÈ ¸®¼Ò½ºµéÀÇ ºÐ¸®µÈ ¼³Á¤À» µå·¯³½´Ù.
NdisInitializeReadWriteLockÇÔ¼öÀÇ È£ÃâÀÚ´Â ¾î¶² IRQL¿¡¼µµ µ¿ÀÛÇÒ¼ö ÀÖ´Ù. ÀϹÝÀûÀº È£ÃâÀÚ´Â Ãʱâȵ¿¾È IRQL PASSIVE_LEVEL¿¡¼ µ¿ÀÛÇϰí ÀÖ´Ù.
|