NdisMAllocateSharedMemory

VOID 

  NdisMAllocateSharedMemory(

    IN NDIS_HANDLE  MiniportAdapterHandle,

    IN ULONG  Length,

    IN BOOLEAN  Cached,

    OUT PVOID  *VirtualAddress,

    OUT PNDIS_PHYSICAL_ADDRESS  PhysicalAddress

    );

NdisMAllocateSharedMemory´Â È£½ºÆ® ¸Þ¸ð¸® ¹üÀ§¸¦ ÇÒ´çÇÏ°í ¸ÊÇÑ´Ù. ±×·¡¼­ µ¿½Ã¿¡ ½Ã½ºÅÛ°ú ¹ö½º¸¶½ºÅÍ DMA NICÀ¸·ÎºÎÅÍ Á¢±ÙÇÒ ¼ö ÀÖ´Ù.

¸Å°³º¯¼ö

MiniportAdapterHandle
MiniportInitialize¿¡ ´ëÇÑ ÇÚµé ÀÔ·ÂÀ» ÁöÁ¤ÇÑ´Ù.

Length
ÇÒ´çÇÒ ¹ÙÀÌÆ® ¼öµéÀ» ÁöÁ¤ÇÑ´Ù.

Cached
¸¸¾à ¸Þ¸ð¸® ¹üÀ§°¡ ij½¬È­µÈ ¸Þ¸ð¸®·ÎºÎÅÍ ÇÒ´çµÉ ¼ö ÀÖ´Ù¸éÀº TRUE¸¦ ÁöÁ¤ÇÑ´Ù.

VirtualAddress
ÀÌ ÇÔ¼ö´Â ¹Ì´ÏÆ÷Æ®¿¡ ÀÇÇØ »ç¿ëÇϱâ À§ÇÑ ÇÒ´çÀÇ º£À̽º °¡»ó ÁÖ¼Ò¸¦ ¸®ÅÏÇϴ ȣÃâÀÚ Á¦°ø º¯¼ö¸¦ °¡¸®Å²´Ù. ¸¸¾à NdisMAllocateSharedMemory ÇÔ¼ö°¡ È£ÃâÀÚ¸¦ ¸¸Á·ÇÒ ¼ö ¾ø´Ù¸éÀº, ¸Þ¸ð¸®°¡ ÇÒ´çµÇÁö ¾Ê¾Ò´Ù´Â °ÍÀ» °¡¸®Å°´Â NULLÀ» ¸®ÅÏÇÑ´Ù.

PhysicalAddress
ÀÌ ÇÔ¼ö´Â VirtualAddress¿¡ ¸®ÅÏÇÏ´Â °Í¿¡ ´ëÇØ ÀÀ´äÇÏ´Â NIC¿¡ ÀÇÇØ »ç¿ëÀ» À§ÇØ Àû´çÇÑ ½ÇÁ¦ ÁÖ¼Ò¸¦ ¸®ÅÏÇϴ ȣÃâÀÚ Á¦°ø º¯¼ö¸¦ °¡¸®Å²´Ù. ȤÀº NULLÀ» ¸®ÅÏÇÏ´Â

ÁÖ¼®

NdisMAllocateSharedMemory´Â µå¶óÀ̹ö°¡ °øÀ¯ ¸Þ¸ð¸® ºí·°¿¡ Á¢±ÙÇϱâ À§ÇØ »ç¿ëÇÏ´Â ¸ÊµÈ °¡»ó ÁÖ¼Ò ¹üÀ§¿Í NICÀÌ »ç¿ëÇÏ´Â NDIS_PHYSICAL_ADDRESS ŸÀÔ ¹üÀ§À» Á¦°øÇÑ´Ù. PhysicalAddress¿¡ ¸®ÅÏµÈ °ªÀº 2ÁßÀ¸·Î(doubly) ½Ã½ºÅÛ¿¡ ÀÇÇØ ¸ÊµÇ¾îÁú ¼ö ÀÖ´Ù. Áï, PhysicalAddress¿Í Length¿¡ °ª¿¡ ÀÇÇØ ¼³¸íµÈ ½ÇÁ¦("physical") ÁÖ¼Ò ¹üÀ§´Â ¸ðµç °¡´ÉÇÑ Ç÷§Æû¿¡¼­ ÇÒ´çÀ» À§ÇØ È£½ºÆ® ¹°¸®ÀûÀÎ ÁÖ¼Ò¿Í ÀÏÄ¡ÇÏÁö ¾Ê´Â ¸ÊµÈ ³í¸®ÀûÀÎ ÁÖ¼ÒµéÀÇ ¹üÀ§°¡ µÉ ¼ö ÀÖ´Ù.

NdisMAllocateSharedMemory´Â ´ÜÁö MiniportInitialize ÇÔ¼ö·ÎºÎÅÍ È£ÃâµÇ¾îÁú ¼ö ÀÖ´Ù. ¿ä±¸µÇ¾îÁö´Â °ÍÀÌ ¾ó¸¶³ª ¸¹ÀÌ ÇÒ´çµÇ¾îÁö´Â °¡´Â µå¶óÀ̹ö °³¹ßÀÚ°¡ NICÀÇ Æ¯Â¡µé°ú ´É·ÂµéÀ» ¾Ë°í ÀÖ´Â, ´ÙÀ½°ú °°Àº ÆÛÆ÷¸Õ½º¿Í Å©±â µô·¹¸¶»çÀÌ¿¡ ÀýÃæ(tradeoff)À» ÇÐ À§ÇØ °áÁ¤µÇÁö´Â °Í¿¡ ÀÇÁ¸ÇÑ´Ù.

  • °í¼Ó ³×Æ®¿öÅ© Æ®·¡ÇÈÀÇ ½Ã±â¿¡¼­, ¹Ì´ÏÆ÷Æ®´Â ¸¸¾à ÀåÄ¡°¡ Á¢±ÙÇÒ ¼ö ÀÖ´Â µ¥ÀÌÅÍ ¹öÆÛµéÀ» À§ÇØ °øÀ¯µÈ ¸Þ¸ð¸® °ø°£ÀÌ ³Ê¹« ÀÛ´Ù¸éÀº ³ôÀº I/O throughputÀ» À¯ÁöÇÒ ¼ö ¾ø´Ù.

    ¿¹¸¦ µé¾î, ¹Ì´ÏÆ÷Æ®´Â ±×·¯ÇÑ ¹öÆÛµéÀÌ ¸¹Àº ¼ö½ÅµéÀÌ NIC¿¡ µé¾î¿Ã ¶§ ¹ÙÀεåµÈ ÇÁ·ÎÅäÄݷκÎÅÍ ¸®ÅϵǾîÁö´Â °Íº¸´Ù ºü¸£°Ô °øÀ¯ ¸Þ¸ð¸®³»¿¡ ¼ö½Å ¹öÆÛµéÀ» ÀεðÄÉÀÌÆ®ÇÒ ¼ö ÀÖ´Ù. ¸¸¾à ¸ðµç °øÀ¯µÈ ¸Þ¸ð¸® °ø°£ÀÌ ³ªÅ¸³ª´Â(outstanding) ¼ö½Å ¹öÆÛµé¿¡ ÀÇÇØ ¼ÒºñµÇ¾îÁø´Ù¸éÀº, ¹Ì´ÏÆ÷Æ®´Â ¼ö½Å ¹öÆÛµéÀ» À§ÇØ ÀÌ¿ëÇÒ ¼ö ÀÖ´Â ¸î¸î °øÀ¯µÈ ¸Þ¸ð¸® °ø°£À» °¡Áú ¶§±îÁö NIC¿¡°Ô ¼ö½Å ÀÎÅÍ·´Æ®µéÀ» ºÒ°¡´ÉÇÏ°Ô ÇØ¾ß ÇÑ´Ù.

  • ¹Ý¸é, ¸î¸î ÃÖ´ë Àü¼Û(transfer : ¼ö½Å) ¿ä±¸¸¦ ±â´ëÇϱâ À§ÇØ ¼±ÅÃÇÑ Length·Î NdisMAllocateSharedMemory¸¦ È£ÃâÇÏ´Â °ÍÀº µå¶óÀ̹öÀÇ À̹ÌÁö¸¦ ´õ Å©°Ô ¸¸µé°í ´õ ³ôÀº I/O ¿ä±¸ÀÇ µå¹®(rare) °æ¿ìµé(periods)À» Á¦¿ÜÇÏ°í ºñ°æÁ¦ÀûÀÌ´Ù. ´õ¿ì±â, NdisMAllocateSharedMemory´Â ¸¸¾à ºÒÃæºÐÇÑ ½Ã½ºÅÛ ¸Þ¸ð¸®°¡ µå¶óÀ̹ö°¡ °­Á¦ÀûÀ¸·Î ÃʱâÈ­¸¦ ½ÇÆÐÇÒ ¶§ ÀÌ¿ëÇÒ ¼ö ÀÖ´Ù¸éÀº, ±×·¯ÇÑ ´õ Å« ºí·°À» Á¦°øÇÏÁö ¾ÊÀ» °ÍÀÌ´Ù.
MiniportAllocateComplete ÇÔ¼ö¸¦ Á¦°øÇÏ´Â NIC µå¶óÀ̹ö´Â Å©±â µô·¹¸¶¿Í ¼±Çà(preceding) ÆÛÆ÷¸Õ½º¸¦ ÇØ°áÇÔÀ¸·Î½á »ó´çÈ÷ ´õ Å« À¯¿¬¼º(flexibility)À» °¡Áø´Ù. MiniportInitialize ÇÔ¼ö´Â ´ÜÁö ¸¸¾à µå¶óÀ̹ö°¡ MiniportAllocateComplete ÇÔ¼ö¸¦ °¡Áø´Ù¸éÀº, NICÀ» ÅëÇØ ³×Æ®¿öÅ© Àü¼Û(transfer) ¿¬»êµéÀ» À§ÇÑ Àû´çÇÑ ¿ä±¸¸¦ À§ÇØ NdisMAllocateSharedMemory·Î ´ÜÁö ÃæºÐÇÑ °øÀ¯µÈ ¸Þ¸ð¸®¸¦ ÇÒ´çÇØ¾ß ÇÑ´Ù. ±×·¯ÇÑ ¹Ì´ÏÆ÷Æ®´Â µ¿ÀûÀ¸·Î NIC¿¡¼­ ¸¹Àº Àü¼Û(transfer) ¿ä±¸ÀÇ ½Ã±â¿¡¼­ ´õ ¸¹Àº °øÀ¯ ¸Þ¸ð¸®¸¦ ÇÒ´çÇϱâ À§ÇØ NdisMAllocateSharedMemoryAsync¸¦ ÇÒ´çÇÒ ¼ö ÀÖ´Ù. Àü¼Ûµé(transfers)À» À§ÇÑ ³ôÀº ¿ä±¸°¡ °¡¶ó¾ÉÀ¸¸éÀº, ±×·¯ÇÑ µå¶óÀ̹ö´Â ÇÒ´çµÈ Ãß°¡ÀûÀÎ ¸Þ¸ð¸®¸¦ ÇØÁ¦Çϱâ À§ÇØ NdisMFreeSharedMemory¸¦ È£ÃâÇÑ´Ù.

NdisMAllocateSharedMemory ¿Í NdisMAllocateSharedMemoryAsync´Â ´ÜÁö °¡»ó ¸Þ¸ð¸®¸¦ »ç¿ëÇÏ´Â µå¶óÀ̹ö¿Í ÀÀ´äÇÏ´Â ³í¸® ÁÖ¼ÒµéÀ» »ç¿ëÇÏ´Â ¹ö½º¸¶½ºÅÍ NIC »çÀÌ¿¡¼­ °øÀ¯µÇ´Â È£½ºÆ® ¸Þ¸ð¸®¸¦ ÇÒ´çÇϱâ À§ÇØ È£ÃâµÇ¾îÁú ¼ö ÀÖ´Â NdisXxx ÇÔ¼öµéÀÌ´Ù.

°¡´ÉÇÒ ¶§¸¶´Ù, NIC µå¶óÀ̹ö´Â ¿ä±¸°¡ ¼º°øÀûÀ̱⠶§¹®¿¡ Cached°¡ TRUE·Î NdisMAllocateSharedMemory¸¦ È£ÃâÇÑ´Ù. ¾î¶² Ç÷§Æû¿¡¼­, ºñij½¬È­µÈ ¸Þ¸ð¸®´Â Ç×»ó scarce ½Ã½ºÅÛ ÀÚ¿øÀÌ´Ù. Ç×»ó, µå¶óÀ̹öµéÀº ¸¶Âù°¡Áö·Î ij½¬È­µÈ ¸Þ¸ð¸®·ÎºÎÅÍ ´õ Å« ÇÒ´çµéÀ» ¾òÀ» ¼ö ÀÖ´Ù. NIC µå¶óÀ̹ö´Â ¸¸¾à ´ÙÀ½°ú °°Àº °ÍÀÌ »ç½ÇÀ̶ó¸éÀº ºñij½¬È­µÈ ¸Þ¸ð¸®·ÎºÎÅÍ °øÀ¯µÈ ¸Þ¸ð¸® °ø°£À» ÇÒ´çÇØ¾ß ÇÑ´Ù:

  • NIC ȤÀº ¹Ì´ÏÆ÷Æ®´Â Á÷Á¢ ¹Ì´ÏÆ÷Æ®°¡ »õ·Ó°Ô ¼ö½ÅµÈ µ¥ÀÌÅ͸¦ ÀεðÄÉÀÌÆ®Çϱâ Àü¿¡ ¼ö½Å ¹öÆÛµé¿¡ ¾´´Ù.

    ¿¹¸¦ µé¾î, Àü¼ÛµÇ¾îÁø ÈÄ¿¡ °¢ ¼ö½ÅµÈ ÇÁ·¹ÀÓ³»¿¡¼­ Ç÷¡±×µéÀ» ¼³Á¤ÇÏ´Â NICÀº ºñij½¬È­µÈ ¸Þ¸ð¸®³»¿¡ ¼ö½Å ¹öÆÛµé¿¡ ´ëÇÑ Á¢±ÙÀ» °¡Á®¾ß ÇÑ´Ù. ±×·¸Áö ¾Ê´Â´Ù¸éÀº, ¹Ì´ÏÆ÷Æ®´Â ij½¬ À¯Âø(coherency)À» À¯ÁöÇϱâ À§ÇØ Ç÷¯½¬(flush)¸¦ ¹ß»ýÇØ¾ß ÇÒ ¶§¸¦ °áÁ¤ÇÏÁö ¾Ê´Â´Ù. ¹Ì´ÏÆ÷Æ®´Â ¶ÇÇÑ Ä³½¬È­µÈ ¹öÆÛ¸¦ Ç÷¯½¬(flush)Çϱâ À§ÇÑ ½ÇÆÐ ¾ÈÀü °£°ÝÀ» À§ÇØ ±â´Ù¸²À¸·Î½á ÆÛÆ÷¸Õ½º hit¸¦ °¡Áú °ÍÀ̰ųª ȤÀº ¹Ì´ÏÆ÷Æ®´Â ÇÁ·¹ÀÓ Ç÷¡±×µéÀÌ ·£´ýÇÏ°Ô ¼³Á¤µÇ´Â °Í¿¡ ´ëÇØ ÀεðÄÉÀ̼ÇÇÒ °ÍÀÌ´Ù.

  • NICÀº ¿¬¼ÓÀûÀ¸·Î °øÀ¯ ¸Þ¸ð¸® °ø°£³»¿¡ ¿¬¼ÓÀûÀÎ ½ÇÁ¦ ¸Þ¸ð¸®³»·Î ¸î¸î ¼ö½Å ¹öÆÛµéÀ» Àü¼ÛÇÑ´Ù.(transfer)

    ¸¸¾à ±×·¯ÇÑ NICÀÌ µé¾î¿À´Â ÇÁ·¹ÀÓµéÀ» ¿¬¼ÓÀûÀΠij½¬È­µÈ ¸Þ¸ð¸®³»¿¡ Àü¼ÛÇÑ´Ù¸éÀº, µå¶óÀ̹ö´Â ¾î¶² ÇÁ·¹ÀÓÀÌ Ä³½¬¶óÀÎ °æ°è¸¦ °Ç³Ê¾ß(straddle)ÇÒ ¶§ ¸ðµç ±×·¯ÇÑ ÇÁ·¹ÀÓµéÀ» À§ÇØ µ¥ÀÌÅÍ ¹«°á¼ºÀ» À¯ÁöÇÒ ¼ö ¾ø´Ù. ¹Ì´ÏÆ÷Æ®°¡ ±×·¯ÇÑ ÇÁ·¹ÀÓÀ» À§ÇÑ ¹üÀ§¸¦ Ç÷¯½¬(flush)ÇÒ ¶§, ¶ÇÇÑ ¸¸¾à ÀÌ¹Ì Àü¼ÛµÇ¾ú´Ù¸éÀº ±×·¯¹Ç·Î ±×·¯ÇÑ ´ÙÀ½ ÇÁ·¹ÀÓÀÌ À¯ÂøµÇÁö ¾ÊÀ¸¹Ç·Î(incoherent) ¸î¸î ´ÙÀ½ Ç÷¹ÀÓÀ» Æ÷ÇÔÇϴ ij½¬ °ø°£À» Ç÷¯½¬ÇÒ °ÍÀÌ´Ù.

¹Ì´ÏÆ÷Æ®´Â DMA µ¿¾È ij½¬ ¶óÀÎ ²÷¾îÁö´Â °ÍÀ»(tearing)À» ¸·±â À§ÇØ È£½ºÆ® ij½¬ ¶óÀÎ °æ°èÀÇ ¹«°á¼º¿¡ °øÀ¯µÈ ij½¬È­µÈ ¸Þ¸ð¸®·ÎºÎÅÍ ÇÒ´çÇÏ´Â ¹öÆÛµéÀ» Á¤·ÄÇØ¾ß ÇÑ´Ù. ij½¬ ¶óÀÎ ²÷±â´Â µå¶óÀ̹ö³»ÀÇ µ¥ÀÌÅÍ ¹«°á¼º ¹®Á¦µéÀ» ¾ß±âÇÒ ¼ö Àְųª ȤÀº µå¶óÀ̹öÀÇ (±×¸®°í ½Ã½ºÅÛÀÇ) I/O ÆÛÆ÷¸Õ½º¸¦ µ¥ÀÌÅÍ ¹«°á¼ºÀ» À¯ÁöÇϱâ À§ÇØ °ú´ÙÇÑ µ¥ÀÌÅÍ Ä³½¬ Ç÷¯½Ì(flushing)À» ¿ä±¸ÇÔÀ¸·Î½á ³·Ãâ¼ö ÀÖ´Ù.(degrade)

MiniportInitialize ÇÔ¼ö´Â µå¶óÀ̹ö°¡ °øÀ¯µÈ ¸Þ¸ð¸®ÀÇ ÇÒ´çµÈ ¹üÀ§³»¿¡¼­ ¼³Á¤ÇÒ ÀåÄ¡ Á¢±Ù ¹öÆÛµéÀ» À§ÇØ ÇöÀç Ç÷§Æû³»¿¡¼­ Á¤·Ä °æ°è¸¦ °áÁ¤Çϱâ À§ÇØ NdisGetCacheFillSize¸¦ È£ÃâÇÒ ¼ö ÀÖ´Ù.

MiniportInitialize ÇÔ¼ö´Â ¶ÇÇÑ ¸¸¾à µå¶óÀ̹ö °³¹ßÀÚ°¡ ¾î¶² SMP ±â°è°¡ ¿öÅ©½ºÅ×À̼Ǻ¸´Ù NIC¿¡ ´ëÇÑ ´õ ³ôÀº ³×Æ®¿öÅ© Àü¼Û ¿ä±¸µéÀ» °¡Áø ³×Æ®¿öÅ© ¼­¹ö°¡ µÉ°Å¶ó°í ÃßÃøÇÑ´Ù¸éÀº ¸ÖƼÇÁ·Î¼¼¼­ ±â°èµé¿¡¼­ ´õ Å« °øÀ¯µÈ ¸Þ¸ð¸® ºí·°À» ÇÒ´çÇϱâ À§ÇØ °áÁ¤ÇÑ´Ù¸éÀº NdisMAllocateSharedMemory¸¦ È£ÃâÇϱâ Àü¿¡ NdisSystemProcessCount¸¦ È£ÃâÇÒ °ÍÀÌ´Ù.

MiniportInitialize ÇÔ¼ö´Â NdisMAllocateSharedMemory¸¦ È£ÃâÇϱâ Àü¿¡ NdisMAllocateMapRegisters¸¦ È£ÃâÇØ¾ß ÇÑ´Ù. ±×·¸Áö ¾ÊÀ¸¸éÀº, ¸Þ¸ð¸®°¡ ÇÒ´çµÇÁö ¾ÊÀ» °ÍÀÌ´Ù. NDIS´Â ÇÒ´çµÉ ¶§ °øÀ¯µÈ ¸Þ¸ð¸® ¹üÀ§¸¦ À§ÇØ ³»ºÎÀûÀ¸·Î Ãß°¡ÀûÀ¸·Î ¸Ê ·¹Áö½ºÅ͸¦ ÇÒ´çÇÑ´Ù.

¸¸¾à MiniportInitialzie ÇÔ¼ö°¡ NICÀÌ NdisMSetAttributes ȤÀº NdisMSetAttributesEx ¸¦ È£ÃâÇÒ ¶§, ¹ö½º¸¶½ºÅͶó´Â °ÍÀ» ÁöÁ¤ÇÏÁö ¾Ê´Â´Ù¸éÀº, NdisMAllocateSharedMemory¸¦ °£´ÜÇÏ°Ô ÇÒ´çÇÏ´Â °ÍÀ» ½ÃµµÇÏ´Â °Í ¾øÀÌ Á¦¾î¸¦ ¸®ÅÏÇÑ´Ù.

¸¸¾à NdisMAllocateSharedMemory¿¡ ´ëÇÑ È£ÃâÀÌ ½ÇÆÐÇÑ´Ù¸éÀº, MiniportInitialize ÇÔ¼ö´Â ´Ù½Ã ´õ Á¶±Ý¸¸ÇÑ ÇÒ´çÀ» ¿ä±¸Çϱâ À§ÇØ È£ÃâÇÒ ¼ö ÀÖ´Ù. ±×·¯³ª ¸¸¾à MiniportInitialize´Â NICÀ» À§ÇØ ÃæºÐÇÑ °øÀ¯µÈ ¸Þ¸ð¸®¸¦ ÇÒ´çÇÒ ¼ö ¾ø´Ù¸éÀº ÀÌ¹Ì ÇÒ´çµÈ ¸ðµç ÀÚ¿øµéÀ» ÇØÁ¦ÇØ¾ß Çϰí ÃʱâÈ­´Â ½ÇÆÐÇÑ´Ù.

¸¸¾à NIC µå¶óÀ̹ö´Â °è¼ÓÇØ¼­ NdisMIndicateReceivePacket·Î ¼ö½ÅµéÀ» ÀεðÄÉÀÌÆ®ÇÑ´Ù¸éÀº, °øÀ¯µÈ ¸Þ¸ð¸® ºí·°³»¿¡¼­ NICÀÇ ¼ö½Å ¹öÆÛµéÀ» ¸ÊÇϱâ À§ÇØ ¹öÆÛ Ç®(pool)·ÎºÎÅÍ ¸î¸î ¹öÆÛ µð½ºÅ©¸³Å͵éÀ» ÇÒ´çÇØ¾ß ÇÑ´Ù.

¸¸¾à ÇÒ´çµÈ ¸Þ¸ð¸®°¡ ij½¬È­µÇ°í ±×·¯¹Ç·Î, Àü¼Ûµé¿¡ ´ëÇØ Ç÷¯½¬µÇ¾îÁú Çʿ䰡 ÀÖ´Ù¸éÀº, ¹Ì´ÏÆ÷Æ®´Â °øÀ¯µÈ ¸Þ¸ð¸® ¹üÀ§¸¦ À§ÇØ NDIS_BUFFER ŸÀÔ µð½ºÅ©¸³Å͸¦ ÇÒ´çÇϱâ À§ÇØ NdisAllocateBuffer¸¦ È£ÃâÇØ¾ß ÇÑ´Ù. NIC µå¶óÀ̹ö´Â ±×·¯ÇÑ Ç÷¯½¬¸¦ ÇàÇϱâ À§ÇØ ÀÌ·¯ÇÑ ¹öÆÛ µð½ºÅ©¸³ÅÍ·Î NdisFlushBuffer ¸¦ È£ÃâÇØ¾ß ÇÑ´Ù. Ãß°¡ÀûÀ¸·Î, ±×·¯ÇÑ ¹Ì´ÏÆ÷Æ®´Â ¸ðµç °¡´ÉÇÑ Ç÷§Æûµé¿¡¼­ µ¥ÀÌÅÍ ¹«°á¼ºÀ» È®½ÇÈ÷ Çϱâ À§ÇØ NdisMUpdateSharedMemory¸¦ È£ÃâÇØ¾ß ÇÑ´Ù.

NdisMAllocateSharedMemoryAsync ȤÀº NdisMAllocateSharedMemory¸¦ È£ÃâÇÏ´Â ¾î¶² ¹Ì´ÏÆ÷Æ®´Â NICÀÌ Á¦°ÅµÉ ¶§, Áï MiniportHalt°¡ È£ÃâµÇ¾îÁú ¶§, NdisMFreeSharedMemory¿¡ ´ëÇÑ Çϳª³ª ȤÀº ±× ÀÌ»óÀÇ È£Ãâ·Î ¸ðµç ¹ß»ýÇÏ´Â ÇÒ´çµéÀ» ÇØÁ¦ÇØ¾ß ÇÑ´Ù.

NdisMAllocateSharedMemoryÀÇ È£ÃâÀÚµéÀº IRQL PASSIVE_LEVEL¸¦ ½ÇÇàÇÑ´Ù.