NDIS_PAGABLE_FUNCTION

NDIS_PAGABLE_FUNCTION(FunctionName)

NDIS_PAGABLE_FUNCTION ÇÔ¼ö´Â ÆäÀÌÀúºí ÄÚµå·Î½á µå¶óÀ̹ö ÇÔ¼ö¸¦ Ư¡Áþ±â À§Çؼ­ »ç¿ëµÈ ¸ÅÅ©·ÎÀÌ´Ù.

¸Å°³º¯¼ö

FunctionName
ÆäÀÌÀúºíµÇ´Â µå¶óÀ̹ö ÇÔ¼öÀÇ À̸§À» ¼­¼úÇÑ´Ù.

ÁÖ¼®

NDIS_PAGABLE_FUNCTIONÀ» °¡Áö°í Ư¡Áö¾îÁø ¾î¶² µå¶óÀ̹ö ÇÔ¼ö´Â ÅëÁ¦¸¦ ¸®ÅÏÇÒ ¶§ ¸Þ¸ð¸® ¹ÛÀ¸·Î ÆäÀÌÁöµÉ ¼ö ÀÖ´Ù. ±×¸®°í ¼øÂ÷ÀûÀ¸·Î È£ÃâµÈ´Ù¸é ¸Þ¸ð¸® ¾ÈÀ¸·Î ÆäÀÌÁöµÈ´Ù.

¿¹¸¦µé¾î ±×·¯ÇÑ ÇÔ¼ö´Â ´ÙÀ½°ú °°ÀÌ µå¶óÀ̹ö ¼Ò½º¿¡¼­ ¼±¾ðµÈ´Ù:


VOID miniportXxx(...);

#pragma NDIS_PAGABLE_FUNCTION(miniportXxx)

    ...  // ´Ù¸¥ ÇÔ¼ö ¼±¾ð

VOID

miniportXxx(...)

{

    ...

}

    ...

À©µµ¿ìÁî 2000¿¡¼­ ÆäÀÌÁö ¿¬»êÀÌ IRQL < DISPATCH_LEVEL¿¡¼­ ½ÇÇàµÇ±â ¶§¹®¿¡ IRQL >= DISPATCH_LEVEL¿¡¼­ ½ÇÇàÇÒ ¼ö ÀÖ´Â ¾î¶² µå¶óÀ̹ö ÇÔ¼ö´Â ÆäÀÌÀúºíµÉ ¼ö ¾ø´Ù. IRQL >= DISPATCH_LEVEL¿¡¼­ÀÇ ½ÇÇàµÉ ¶§ µå¶óÀ̹ö ÇÔ¼ö¸¦ ÆäÀÌÀúºíÇÏ´Â °ÍÀº ±× µå¶óÀ̹ö¿¡¼­ Ä¡¸íÀûÀÎ ÆäÀÌÁöÆúÆ®¸¦ ¾ß±âÇÒ ¼ö ÀÖ´Ù.

º¸Åë NIC µå¶óÀ̹ö´Â ±×µéÀÇ MiniportInitialize³ª MiniportHalt ÇÔ¼ö¿¡¼­ ÀÌ ¸ÅÅ©·Î¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¶ÇÇÑ ¹Ì´ÏÆ÷Æ®´Â ÆäÀÌÀúºí·Î Ư¡Áö¾îÁø ÇÔ¼ö°¡ NdisAcquireSpinLock ÇÔ¼öó·³ IRQLÀ» »ó½Â½ÃŰ´Â ¾î¶² NdisXxx ÇÔ¼ö¸¦ È£ÃâÇÏÁö ¾Ê´Â ÇÑMiniportInitialize³ª MiniportHalt ÇÔ¼ö¿¡¼­¸¸ È£ÃâµÇ´Â ³»ºÎÀÇ µå¶óÀ̹ö ÇÔ¼ö¿¡¼­ ÀÌ ¸ÅÅ©·Î¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù.

NDIS ÇÁ·ÎÅäÄÝ µå¶óÀ̹ö´Â IRQL < DISPATCH_LEVEL¿¡¼­ Ç×»ó ½ÇÇàÇÏ´Â ¾î¶² µå¶óÀ̹ö ÇÔ¼ö¿¡¼­ ÀÌ ¸ÅÅ©·Î¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ±×·¯ÇÑ ÇÔ¼ö´Â »ó½ÂµÈ IRQL¿¡¼­ Àý´ë È£ÃâµÇÁö ¾Ê´Â´Ù. ±×·¯ÇÑ ÇÔ¼ö´Â IRQL >= DISPATCH_LEVEL¿¡¼­ ½ÇÇàÇÏ´Â ½Ã½ºÅÛ Á¦°ø ÇÔ¼ö ȤÀº µå¶óÀ̹ö¸¦ È£ÃâÇÒ ¼ö ¾ø´Ù.