NdisFlushBuffer

VOID
  NdisFlushBuffer(
    IN PNDIS_BUFFER  Buffer,
    IN BOOLEAN  WriteToDevice
    );

NdisFlushBuffer´Â ¸ðµç ÇÁ·Î¼¼¼­ ij½¬µé·ÎºÎÅÍ ÁÖ¾îÁø ¹öÆÛ µð½ºÅ©¸³ÅÍ¿¡ ÀÇÇØ ¼³¸íµÈ ¸Þ¸ð¸® ¿µ¿ªÀ» Ç÷¯½¬ÇÑ´Ù.

¸Å°³º¯¼ö

Buffer
µ¥ÀÌÅͰ¡ ¹ö½º¸¶½ºÅÍ DMA ¿¬»êÀ¸·Î Àü¼ÛµÇ¾îÁö´Â °ÍÀ¸·Î ȤÀº °ÍÀ¸·ÎºÎÅÍ ¹öÆÛ¸¦ ¸ÊÇÎÇÏ´Â ¹öÆÛ µð½ºÅ©¸³¼ÇÀ» °¡¸®Å²´Ù.

WriteToDevice
NIC µå¶óÀ̹ö´Â È£½ºÆ® ¸Þ¸ð¸®·ÎºÎÅÍ NIC¿¡°Ô Àü¼ÛÇϱâ Àü¿¡ ¹öÆÛ¸¦ Ç÷¯½¬Çϱâ À§ÇØ ÀÌ ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù¸éÀº TRUE¸¦ ¼³Á¤ÇÑ´Ù.

¸¸¾à NIC µå¶óÀ̹ö°¡ FALSE¸¦ ÁöÁ¤ÇÑ´Ù¸éÀº, ij½¬¶óÀÎ °æ°è¿¡¼­ ¹öÆÛ°¡ ½ÃÀÛÇÏ°í ³¡³ª´Â °ÍÀ» È®½ÇÈ÷ ÇØ¾ß ÇÑ´Ù.

ÁÖ¼®

¹ö½º¸¶½ºÅÍ DMA NICµéÀÇ µå¶óÀ̹öµéÀº °øÀ¯ ¸Þ¸ð¸®³»¿¡ µ¥ÀÌÅÍ ¹«°á¼ºÀ» À¯ÁöÇϱâ À§ÇØ NdisFlushBuffer¸¦ È£ÃâÇÑ´Ù. ¹öÆÛ¸¦ FlushingÇÏ´Â °ÍÀº ³×Æ®¿öÅ© ÀÎÅÍÆäÀ̽º Ä«µå·ÎºÎÅÍ È¤Àº Ä«µå¿¡ DMA Àü¼ÛÀ» ÇϱâÀü¿¡ È£½ºÆ® ¸Þ¸ð¸® ij½¬¿Í ÇÁ·Î¼¼¼­ ½ÇÁ¦ ¸Þ¸ð¸® »çÀÌ¿¡ coherency¸¦ È®½ÇÈ÷ ÇÑ´Ù.

µå¶óÀ̹ö´Â NIC°ú °øÀ¯µÇ´Â µ¥ÀÌÅͰ¡ ij½¬È­µÉ ¶§ ±×·¯ÇÑ ¹öÆÛ´Â Ç÷¯½¬ÇÑ´Ù. È£½ºÆ® ¸Þ¸ð¸®¿Í ¹ö½º¸¶½ºÅÍ DMA NIC »çÀÌ¿¡ ¾î¶² Àü¼ÛÀ» À§ÇØ, ¹Ì´ÏÆ÷Æ®´Â Àü¼ÛÀ» ½ÃÀÛÇϱâ Àü¿¡ ¹öÆÛ¸¦ Ç÷¯½¬ÇØ¾ß ÇÑ´Ù. ±×·¯ÇÑ µå¶óÀ̹ö´Â ¶ÇÇÑ È£½ºÆ® ¸Þ¸ð¸®°¡ Àü¼ÛÀÌ ¿Ï·áµÉ ¶§±îÁö Á¢±ÙÇÏÁö ¾Ê´Â °ÍÀ» È®½ÇÈ÷ ÇØ¾ß ÇÑ´Ù.

NdisFlushBufferÀÇ È£ÃâÀÚµéÀº IRQL <= DISPATCH_LEVEL¿¡¼­ ½ÇÇàÇÑ´Ù.