NDIS_SET_PACKET_STATUS

NDIS_SET_PACKET_STATUS(

  IN PNDIS_PACKET  Packet,

    IN NDIS_STATUS  Status

    );

NDIS_SET_PACKET_STATUS ÇÔ¼ö´Â µå¶óÀ̹ö°¡ NdisMIndicateReceivePacket ÇÔ¼ö¸¦ È£ÃâÇϱâ Àü¿¡ ȤÀº µå¶óÀ̹öÀÇ MiniportSendPackets ÇÔ¼ö°¡ Á¦¾î¸¦ ¸®ÅÏÇϱâ Àü¿¡ ÁÖ¾îÁø ÆÐŶ µð½ºÅ©¸³ÅÍ¿Í °ü·ÃµÈ out-of-band µ¥ÀÌÅÍ ºí·°¿¡¼­ Status °ªÀ» ¼³Á¤ÇÑ´Ù.

¸Å°³º¯¼ö

Packet
¼ö½Å ÀεðÄÉÀ̼ÇÀ» À§ÇÑ È£ÃâÀÚ¿¡ ÀÇÇØ ȤÀº º¸³»±â¸¦ À§ÇÑ ÇÁ·ÎÅäÄÝ¿¡ ÀÇÇØ ÇÒ´çµÈ ÆÐŶ µð½ºÅ©¸³Å͸¦ °¡¸®Å²´Ù.

Status
¼³Á¤µÈ »óŸ¦ ÁöÁ¤ÇÑ´Ù.

¼ö½Å ÀεðÄÉÀ̼ǵ鿡¼­ »ç¿ëµÈ ÆÐŶ µð½ºÅ©¸³Å͸¦ À§ÇØ, °ªÀº ´ÙÀ½°ú °°Àº °ªÀÌ µÉ ¼ö ÀÖ´Ù. :

NDIS_STATUS_SUCCESS
µå¶óÀ̹ö´Â ÆÐŶ µð½ºÅ©¸³ÅͰ¡ MiniportReturnPacket ÇÔ¼ö·Î ¸®Å쵃 ¶§±îÁö NdisMIndicateReceivePacket ÇÔ¼ö·Î ¸· ÀεðÄÉÀÌÆ®µÇ´Â ÆÐŶÀÇ ¼ÒÀ¯±ÇÀ» ¾çµµÇÑ´Ù.

ÀεðÄÉÀ̼ÇÀ» ¼ö½ÅÇÏ´Â ÇÁ·ÎÅäÄݵéÀº ÆÐŶ¿¡ Á¦°øµÈ ¾î¶² out-of-band Á¤º¸¿Í ÆÐŶ µð½ºÅ©¸³ÅÍ¿Í Ã¼ÀÎµÈ ¹öÆÛ µð½ºÅ©¸³Å͵鿡 ÀÇÇØ ¸ÊµÈ ¸ðµç ¹öÆÛµé°ú ÇÔ²² °¡´ÉÇÑÇÑ °ü½ÉÀִ Ŭ¶óÀÌ¾ðÆ®µé¿¡°Ô ó¸®µÈ º¹»çº¹À» Æ÷¿öµåÇϸ鼭 ÀεðÄÉÀÌÆ®µÈ net ÆÐŶ µ¥ÀÌÅ͸¦ º¹»çÇϱâ À§ÇØ ÆÐŶ µð½ºÅ©¸³Å͸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù.

NDIS_STATUS_RESOURCES
µå¶óÀ̹ö´Â NdisMIndicateReceivePacket ÇÔ¼ö·Î ÀεðÄÉÀÌÆ®µÈ ÆÐŶ°ú ÆÐŶ ¹è¿­³»¿¡¼­ ¸ðµç ¿¬¼ÓµÈ ÆÐŶµéÀÇ ¼ÒÀ¯±ÇÀ» À¯ÁöÇÑ´Ù. ¸ðµç ÀÌ·¯ÇÑ ÆÐŶµéÀº ¹Ù¿îµåµÈ ÇÁ·ÎÅäÄݵéÀÇ ProtocolReceive ÇÔ¼öµé¿¡ ´ëÇØ Çѹø¿¡ Çѹø ÀεðÄÉÀÌÆ®µÉ °ÍÀÌ´Ù.

ÀÌ·¯ÇÑ »óŸ¦ ¼³Á¤ÇÏ´Â °ÍÀº °¢ ÆÐŶ µð½ºÅ©¸³ÅÍÀÇ ´õ ºü¸£°Ô ÀεðÄÉÀÌÆ®ÇÏ´Â µå¶óÀ̹ö¿¡°Ô üÀÎÈ­µÈ ¹öÆÛ µð½ºÅ©¸³Å͵鿡 ÀÇÇØ ¸Þ¸ð¸® ¸ÊµÈ °¢ ÆÐŶ µð½ºÅ©¸³Å͸¦ À§ÇÑ out-of-band µ¥ÀÌÅÍ ºí·°³»¿¡ ¾î¶² ¹Ìµð¾ö ƯÁ¤ ¹öÆÛÀÇ °¢°¢ ±×·¯ÇÑ ÆÐŶ µð½ºÅ©¸³ÅÍÀÇ ¼ÒÀ¯±ÇÀ» ¹Ù¿îµåµÈ ÇÁ·ÎÅäÄݵéÀÌ ¸®ÅÏÇϵµ·Ï ÇÑ´Ù. ÇÁ·ÎÅäÄݵéÀº ±×µéÀÌ ÀεðÄÉÀ̼ÇÀ¸·ÎºÎÅÍ º¹»çµÇ´Â µ¥ÀÌÅ͸¦ ÈÄó¸®ÇÏ°í ±×µéÀÇ Å¬¶óÀÌ¾ðÆ®µé¿¡°Ô ó¸®µÈ µ¥ÀÌÅ͸¦ Æ÷¿öµå¸¦ ½ÃÀÛÇϱâ À§ÇØ ProtocolReceiveComplete ÇÔ¼öµé¿¡ ´ëÇÑ È£ÃâÀ» À§ÇØ ±â´Ù·Á¾ß ÇÑ´Ù.

ÀεðÄÉÀ̼ÇÇÏ´Â µå¶óÀ̹ö´Â ¸¸¾à ÆÐŶ pool ȤÀº ¹öÆÛ poolÀÌ ÀÛÀº °÷¿¡¼­ ½ÇÇàÇÑ´Ù¸éÀº ÀÌ·¯ÇÑ »óŸ¦ ¼³Á¤ÇÒ ¼ö ÀÖ´Ù. ÀεðÄÉÀ̼ÇÇÏ´Â NIC µå¶óÀ̹ö´Â Ç×»ó ¸¸¾à ³ôÀº ³×Æ®¿öÅ© Æ®·¡Çȶ§¹®¿¡ NIC ¼ö½Å ¹öÆÛµéº¸´Ù ³·Àº °÷¿¡¼­ ½ÇÇàÇÑ´Ù¸éÀº Ç×»ó ÀÌ »óŸ¦ ¼³Á¤ÇÑ´Ù. ¹ö½º¸¶½ºÅÍ DMA NIC µå¶óÀ̹ö´Â Ãß°¡ÀûÀÎ NIC ¼ö½Å ¹öÆÛ °ø°£À» ¾ò±â À§ÇØ ÀÌ·¯ÇÑ È¯°æ¿¡¼­ NdisMAllocateSharedMemoryAsync ÇÔ¼ö¸¦ È£ÃâÇÒ °ÍÀÌ´Ù.

NDIS´Â ¸¸¾à ÀÌ·¯ÇÑ »óŰ¡ ÀεðÄÉÀÌÆ®µÈ ¹è¿­³»¿¡ ÆÐŶÀ» À§ÇØ ¼³Á¤µÈ´Ù¸éÀº, ±×·¯ÇÑ ¹è¿­¿¡¼­ ¸ðµç ¿¬¼ÓÀûÀÎ ÆÐŶµéÀ» À§ÇØ ¼³Á¤µÈ´Ù´Â °ÍÀ» ÃßÃøÇÑ´Ù. °á°úÀûÀ¸·Î, ÀεðÄÉÀ̼ǵǴ µå¶óÀ̹ö´Â ÇϳªÀÇ ÆÐŶ µð½ºÅ©¸³Å͸¦ À§ÇØ out-of-band µ¥ÀÌÅÍ ºí·°³»¿¡¼­ ÀÌ·¯ÇÑ »óŸ¦ ¼³Á¤ÇÑ ÈÄ¿¡ ¹è¿­ ³»¿¡¼­ ¿¬¼ÓµÈ ÆÐŶ µð½ºÅ©¸³Å͸¦ À§ÇÑ »óŸ¦ ¼³Á¤ÇÒ Çʿ䰡 ¾ø´Ù.

º¸³»±âµéÀ» À§ÇØ »ç¿ëµÈ ÆÐŶ µð½ºÅ©¸³Å͵éÀ» À§ÇØ, MiniportSendPackets ÇÔ¼ö´Â ´ÙÀ½°ú °°Àº °ªµéÀÇ Çϳª¸¦ ¼³Á¤ÇÒ ¼ö ÀÖ´Ù.

NDIS_STATUS_PENDING
µå¶óÀ̹ö´Â ºñµ¿±âÀûÀ¸·Î ¿ä±¸µÈ º¸³»±â ¿¬»êÀ» ¿Ï¼ºÇÒ °ÍÀÌ´Ù.

MiniportSendPackets ÇÔ¼ö°¡ Á¦¾î¸¦ ¸®ÅÏÇÑ ÈÄ¿¡, µå¶óÀ̹ö´Â NDIS°¡ ÆÐŶ µð½ºÅ©¸³ÅÍ¿¡ ÀÇÇØ ÁöÁ¤µÈ ÀÚ¿øµéÀ» ÇÒ´çÇÏ°í º¸³»±â¸¦ ÃʱâÈ­ÇÑ µå¶óÀ̹öÀÇ ProtocolSendComplete ÇÔ¼ö¿¡ Àü´ÞÇÏ´Â(propagate) ÁÖ¾îÁø ÆÐŶ µð½ºÅ©¸³Å͸¦ À§ÇÑ ¸¶Áö¸· ¿Ï¼º »óÅ·ΠNdisMSendComplete ÇÔ¼ö¸¦ È£ÃâÇÒ °ÍÀÌ´Ù.

NDIS_STATUS_RESOURCES
µå¶óÀ̹ö´Â Çö ÀÚ¿ø Á¦ÇѶ§¹®¿¡ ÁÖ¾îÁø ÆÐŶ ¹è¿­³»¿¡ ÁöÁ¤µÈ ¸ðµç º¸³»±âµéÀ» ó¸®ÇÒ ¼ö ¾ø´Ù.

NDIS´Â MiniportSendPackets¿¡ ÁÖ¾îÁø ¹è¿­³»¿¡ ¸ðµç ¿¬¼ÓµÈ ÆÐŶ µð½ºÅ©¸³Å͵éÀ» À§ÇÑ Status ¸â¹ö°¡ °°Àº °ªÀ¸·Î ¼³Á¤µÈ´Ù°í ÃßÃøÇÑ´Ù. NDIS´Â µå¶óÀ̹ö°¡ óÀ½ È£ÃâÀÌ ¹ß»ýÇÒ ¼ö ÀÖ´Â °ÍÀÌ NdisMSendResourcesAvailable ÇÔ¼ö ȤÀº NdisMSendComplete ÇÔ¼ö¸¦ È£ÃâÇÒ ¶§ MiniportSendPackets ÇÔ¼ö¿¡ ´ëÇÑ ÀçÁ¦ÃâÀ» À§ÇØ °°Àº ¼ø¼­·Î ³»ºÎÀûÀ¸·Î ÀÌ·¯ÇÑ ÆÐŶ µð½ºÅ©¸³Å͵éÀ» Å¥¿¡ ÀúÀåÇÑ´Ù. NDIS´Â ÀÌ·¯ÇÑ ¹Ì´ÏÆ÷Æ® ¼³Á¤ »óÅ °ªÀ» NDIS_STATUS_PENDINGÀ¸·Î ÇÁ·ÎÅäÄݵ鿡°Ô ¹Ý¿µÇÑ´Ù.

NDIS_STATUS_XXX
MiniportSendPackets ÇÔ¼ö´Â Á¦¾î¸¦ ¸®ÅÏÇϱâ Àü¿¡ ÁÖ¾îÁø º¸³»±â ¿ä±¸¸¦ ¿Ï¼ºÇϰí ÀÖ´Ù.

±×·¯ÇÑ º¸³»±â ÆÐŶÀº NDIS_STATUS_SUCCESS·Î ¿Ï¼ºÇϰųª µå¶óÀ̹ö °áÁ¤ ¿¡·¯ »óÅ·Π¿Ï¼ºµÈ´Ù¸éÀº, MiniportSendPackets ÇÔ¼öµéÀº ÁÖ¾îÁø ÆÐŶ µð½ºÅ©¸³Å͸¦ À§ÇØ Status ¸â¹ö¸¦ ¼³Á¤ÇØ¾ß ÇÏ°í ±×·¡¼­ NDIS´Â NDIS°¡ ¸®ÅÏµÈ ÆÐŶ µð½ºÅ©¸³ÅÍ·Î ProtocolSendComplete ÇÔ¼ö¸¦ È£ÃâÇÒ ¶§ º¸³»±â¸¦ ÃʱâÈ­ÇÏ´Â ÇÁ·ÎÅäÄÝ¿¡°Ô µÇµ¹·ÁÁÖ´Â ÀÌ·¯ÇÑ »ýŸ¸¦ ¹Ý¿µÇÒ ¼ö ÀÖ´Ù.

ÁÖ¼®

¹Ù¿îµåµÈ ÇÁ·ÎÅäÄݵ鿡 ´ëÇÑ NdisMIndicateReceivePacket ÇÔ¼ö·Î ¼ö½ÅµéÀ» ÀεðÄÉÀÌÆ®ÇÏ´Â µå¶óÀ̹öµé°ú ȤÀº MiniportSendPackets ÇÔ¼öµéÀ» °¡Áö´Â µå¶óÀ̹öµéÀº NDIS_SET_PACKET_STATUS ¸ÅÅ©·Î¸¦ »ç¿ëÇÑ´Ù.

±×·¯ÇÑ ¾Æ·¡ µå¶óÀ̹ö°¡ ¹è¿­³»¿¡ ¸î¸î ¼öÀÇ ÆÐŶ µð½ºÅ©¸³Å͵éÀÇ Status °ªÀ» ¼³Á¤ÇÑ ÈÄ ÀÌ·¯ÇÑ ÆÐŶ µð½ºÅ©¸³Å͵éÀÇ ¹è¿­·Î NdisMIndicateReceivePacket ÇÔ¼öÀ» È£ÃâÇÑ ÈÄ¿¡ NdisMIndicateReceivePacket ÇÔ¼ö°¡ Á¦¾î¸¦ ¸®ÅÏÇÒ ¶§ NDIS_GET_PACKET_STATUS ¸ÅÅ©·Î¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù. µå¶óÀ̹ö°¡ NDIS_STATUS_SUCCESS·Î ÃʱâÈ­µÈ °¢ ÆÐŶ µð½ºÅ©¸³ÅÍ¿Í °ü·ÃµÈ NDIS_PACKET_OOB_DATA ºí·°³»¿¡ ¸®ÅÏµÈ »óŰªÀº ÀεðÄÉÀÌÆ®ÇÏ´Â µå¶óÀ̹ö°¡ ´ÙÀ½¿¡ ÇÏ´Â °ÍÀ» °áÁ¤ÇÑ´Ù. ´ÙÀ½°ú °°Àº °ªÀÌ´Ù.

NDIS_STATUS_SUCCESS
¸¸¾à À̰ÍÀÌ NdisMIndicateReceivePacket ÇÔ¼ö¿¡ ´ëÇÑ ¹Ì´ÏÆ÷Æ®ÀÇ È£Ãâ·ÎºÎÅÍ ¸®ÅÏÇÏÀÚ¸¶ÀÚ ¼³Á¤µÈ´Ù¸éÀº, ¹Ì´ÏÆ÷Æ®´Â ´ÙÀ½°ú °°Àº ¼ÒÀ¯±ÇÀ» ´Ù½Ã ¾ò´Â´Ù:

  • ÆÐŶ µð½ºÅ©¸³ÅÍ
  • ÆÐŶ µð½ºÅ©¸³ÅÍ¿Í °ü·ÃµÈ °ü·ÃµÈ out-of-band µ¥À̹ö ºí·°°ú ÀÌ·¯ÇÑ ºí·°°ú °ü·ÃµÈ ¾î¶² ¹Ìµð¾î ƯÁ¤ Á¤º¸ ¹öÆÛ
  • ÆÐŶ µð½ºÅ©¸³ÅÍ¿¡ üÀÎµÈ ¹öÆÛ µð½ºÅ©¸³Å͵鿡 ÀÇÇØ ¸ÊµÈ ¸ðµç ¹öÆÛµé

NDIS_STATUS_PENDING
¸¸¾à À̰ÍÀÌ NdisMIndicateReceivePacket ÇÔ¼ö·ÎºÎÅÍ ¸®ÅÏÇÏÀÚ¸¶ÀÚ ¼³Á¤µÈ´Ù¸éÀº, ÇÁ·ÎÅäÄݵéÀº °ü·ÃµÈ out-of-band µ¥ÀÌÅÍ ºí·°ÀÇ ±×¸®°í ÀÌ·¯ÇÑ ºí·°³»¿¡ ÁöÁ¤µÈ ¾î¶² ¹öÆÛÀÇ ÆÐŶ µð½ºÅ©¸³ÅͰ¡ ÀεðÄÉÀÌÆ®ÇÏ´Â µå¶óÀ̹öÀÇ MiniportReturnPacket ÇÔ¼ö¿¡ ¸®Å쵃 ¶§±îÁö ÆÐŶ µð½ºÅ©¸³ÅÍ¿¡ üÀÎµÈ ¹öÆÛ µð½ºÅ©¸³ÅÍ¿¡ ¸ÊµÈ ¸ðµç ¹öÆÛµéÀÇ ¼ÒÀ¯±ÇÀ» À¯ÁöÇÑ´Ù. ±×·¯³ª, ÇÁ·ÎÅäÄݵéÀº ÀÌ·¯ÇÑ ¹Ì´ÏÆ÷Æ® ÇÒ´ç ÀÚ¿øµé¿¡ ´ëÇÑ Àбâ Àü¿ë Á¢±ÙÀÌ ÁÖ¾îÁø´Ù.

MiniportSendPackets ÇÔ¼ö´Â NDIS_STATUS_PENDING ȤÀº NDIS_STATUS_RESOURCES¿Í ´Ù¸¥ ¾î¶² °ÍÀ¸·Î µé¾î¿À´Â º¸³»±â ÆÐŶÀ» À§ÇØ Status °ªÀ» ¼³Á¤ÇÑ´Ù¸éÀº, ÆÐŶÀ» ¿Ï¼ºÇÏ°í °ü·ÃµÈ ÆÐŶ µð½ºÅ©¸³ÅÍ¿¡ ÀÇÇØ ÁöÁ¤µÈ ¸ðµç ÀÚ¿øµé¿¡ ´ëÇÑ ¼ÒÀ¯±ÇÀ» ¾çµµÇÑ´Ù. NDIS´Â ÆÐŶ µð½ºÅ©¸³Å͸¦ ÇÒ´çÇÑ µå¶óÀ̹öÀÇ ProtocolSendComplete ÇÔ¼ö¿¡ ¸®ÅÏÇϰí ÀÔ·Â ¸Å°³º¯¼ö·Î¼­ ¹Ì´ÏÆ÷Æ® ¼³Á¤ »óÅ °ªÀ» ProtocolSendComplete ÇÔ¼ö¿¡ Àü´ÞÇÑ´Ù.(propagate) ±×·¸Áö ¾Ê´Â´Ù¸éÀº, ¾Æ·¡ µå¶óÀ̹ö´Â ÆÐŶ µð½ºÅ©¸³ÅͷΠȤÀº ºñµ¿±â º¸³»±â ¿¬»êÀÌ ÇàÇØÁú ¶§ ¸¶Áö¸· »óÅ·ΠNdisMSendComplete ÇÔ¼ö¸¦ È£ÃâÇÒ °ÍÀÌ´Ù.

ÇÁ·ÎÅäÄÝ µå¶óÀ̹öµéÀº NdisSendPackets ÇÔ¼ö ȤÀº NdisSend ÇÔ¼ö·ÎºÎÅÍ ¸®ÅÏÇÏÀÚ ¸¶ÀÚ °ü·ÃµÈ out-of-band µ¥ÀÌÅÍ ºí·°³»¿¡ Status °ªÀ» Å×½ºÆ®ÇÒ Çʿ䰡 ¾ø´Ù. NDIS ȤÀº ¾Æ·¡ µå¶óÀ̹ö´Â ÆÐŶ µð½ºÅ©¸³ÅÍ, °ü·ÃµÈ out-of-band ºí·°, ÀÌ ºí·°³»¿¡ ÁöÁ¤µÈ ¾î¶² ¹öÆÛµé, ProtocolSendComplete ÇÔ¼ö°¡ ÆÐŶ µð½ºÅ©¸³ÅͷΠȣÃâµÉ ¶§±îÁö ÆÐŶ µð½ºÅ©¸³ÅÍ¿¡ üÀÎµÈ ¹öÆÛ µð½ºÅ©¸³Å͵鿡 ÀÇÇØ ¸ÊµÈ ¸ðµç ¹öÆÛµéÀÇ ¼ÒÀ¯±ÇÀ» º¸À¯ÇÑ´Ù.

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