ProtocolCoReceivePacket
UINT
ProtocolCoReceivePacket(
IN NDIS_HANDLE ProtocolBindingContext,
IN NDIS_HANDLE ProtocolVcContext,
IN PNDIS_PACKET Packet
);
|
ProtocolCoReceivePacket ÇÔ¼ö´Â NdisMCoIndicateReceivePacket ÇÔ¼ö¸¦ È£ÃâÇÏ´Â ¾Æ·¡ µå¶óÀ̹öµé¿¡ ÀÇÇØ ¸¸µé¾îÁø ¼ö½Å ÀεðÄÉÀ̼ǵéÀ» ó¸®Çϴµ¥ ÇÊ¿äÇÑ ÇÔ¼öÀÌ´Ù.
¸Å°³º¯¼ö
- ProtocolBindingContext
- ÇÁ·ÎÅäÄÝ µå¶óÀ̹ö°¡ ¹ÙÀεù ´ç ·±Å¸ÀÓ Á¤º¸¸¦ À¯ÁöÇÏ´Â ÇÁ·ÎÅäÄÝ ÇÒ´ç ÄÁÅØ½ºÆ® ¿µ¿ª¿¡ ´ëÇÑ ÇÚµéÀ» ÁöÁ¤ÇÑ´Ù. µå¶óÀ̹ö´Â NdisOpenAdapter ÇÔ¼ö¸¦ È£ÃâÇÒ ¶§ ÀÌ·¯ÇÑ ÇÚµéÀ» Á¦°øÇÑ´Ù.
- ProtocolVcContext
- ÀÌ·¯ÇÑ µå¶óÀ̹ö°¡ VC´ç ·±Å¸ÀÓ »óŸ¦ À¯ÁöÇÏ´Â ÇÁ·ÎÅäÄÝ ÇÒ´ç ÄÁÅØ½ºÆ® ¿µ¿ª¿¡ ´ëÇÑ ÇÚµéÀ» ÁöÁ¤ÇÑ´Ù. Ŭ¶óÀÌ¾ðÆ® È¤Àº È¥ÀÚÀÇ ÄÝ ¸Å´ÏÀú´Â NdisCoCreateVc ÇÔ¼ö¸¦ È£ÃâÇÒ ¶§ ȤÀº ProtocolCoCreateVc ÇÔ¼ö·ÎºÎÅÍ ÀÌ ÇÚµéÀ» Á¦°øÇÑ´Ù.
- Packet
- ¼ö½ÅµÈ ³×Æ®¿öÅ© ÆÐŶÀ» À§ÇÑ ÆÐŶ µð½ºÅ©¸³ÅÍÀÇ Æ÷ÀÎÅ͸¦ °¡¸®Å²´Ù. NDIS´Â ¾Æ·¡ µå¶óÀ̹ö°¡ NdisMCoIndicateReceivePacket ÇÔ¼ö·Î Àü´ÞµÈ ÆÐŶ µð½ºÅ©¸³ÅÍ Æ÷ÀÎÅ͵éÀÇ ¹è¿·ÎºÎÅÍ ÀÌ·¯ÇÑ Æ÷ÀÎÅ͸¦ »Ì¾Æ³½´Ù.
¸®Åϰª
ProtocolCoReceivePacket ÇÔ¼ö´Â ÀÌ·¯ÇÑ ÇÁ·ÎÅäÄÝÀÌ NDIS°¡ ÀÌ·¯ÇÑ ÀÚ¿øµéÀ» ÇÒ´çÇÑ ¾Æ·¡ µå¶óÀ̹ö¿¡ ÆÐŶ ÀÚ¿øµéÀ» ¸®ÅÏÇÒ ¼ö ÀÖ±â Àü¿¡ °è¼ÓÇØ¼ ¾ó¸¶³ª ¿©·¯¹ø NdisReturnPacketsÀ» È£ÃâÇØ¾ß ÇÏ´ÂÁö NDIS¿¡°Ô °¡¸®Å°´Â µå¶óÀ̹ö °áÁ¤ °ªÀ» ¸®ÅÏÇÑ´Ù.
ÁÖ¼®
¾Æ·¡ ¿¬°á ÁöÇâ NIC µå¶óÀ̹ö¿Í ¹ÙÀεåµÈ ÇÁ·ÎÅäÄÝ µå¶óÀ̹ö´Â ProtocolCoReceivePacket ÇÔ¼ö¸¦ °¡Á®¾ß ÇÑ´Ù. ±×·¯ÇÑ ¾Æ·¡ ¹Ì´ÏÆ÷Æ®´Â Ç×»ó full-packet ¼ö½ÅµéÀ» ÀεðÄÉÀÌÆ®ÇÑ´Ù.
ProtocolCoReceivePacket ÇÔ¼ö´Â Packet¿¡ ÀÇÇØ °¡¸®ÄÑÁø ¹è¿³»¿¡ °¢ ÆÐŶ µð½ºÅ©¸³ÅÍÀ» À§ÇØ Çѹø NDIS_GET_PACKET_STATUS ¸ÅÅ©·Î¸¦ È£ÃâÇØ¾ß ÇÑ´Ù. NDIS_GET_PACKET_STATUS ¸ÅÅ©·Î´Â ÆÐŶ µð½ºÅ©¸³ÅÍ¿Í °ü·ÃµÈ OOB ºí·° Status¸¦ ¾ò´Â´Ù.
¸¸¾à ¾Æ·¡ NIC µå¶óÀ̹ö°¡ NdisMCoIndicateReceivePacket ÇÔ¼ö¸¦ È£ÃâÇϱâ Àü¿¡, NDIS_STATUS_SUCCESS·Î OOB ºí·° Status¸¦ ¼³Á¤ÇÑ´Ù¸é, NIC µå¶óÀ̹ö´Â ÀϽÃÀûÀ¸·Î ÆÐŶ µð½ºÅ©·´ÅÍ¿Í °ü·ÃµÈ ÀÚ¿øµéÀÇ ¼ÒÀ¯±ÇÀ» ¾çµµÇÑ´Ù. ÀÌ·¯ÇÑ °æ¿ì¿¡, ÇÁ·ÎÅäÄÝÀº (ȤÀº °¡»ó »óÀ§ ÇÁ·ÎÅäÄÝÀÎ TDI Ŭ¶óÀÌ¾ðÆ®µé) ¸¸¾à ProtocolCoReceivePacket ÇÔ¼ö°¡ 0ÀÌ ¾Æ´Ñ °ªÀ» ¸®ÅÏÇÑ´Ù¸é, PacketÀ¸·Î ÁöÁ¤µÈ ÁÖ¾îÁø Àб⠸ðµå Á¢±ÙÀÎ ¸ðµç ¼ö½ÅµÈ µ¥ÀÌÅ͸¦ À¯ÁöÇÒ ¼ö ÀÖ´Ù. ÀÔ·Â Packet µð½ºÅ©¸³ÅÍ Æ÷ÀÎÅ͸¦ ¸î¸î °ü½ÉÀִ Ŭ¶óÀÌ¾ðÆ®µé¿¡°Ô Æ÷¿öµåÇÏ´Â °¡»ó »óÀ§ ·¹º§ ÇÁ·ÎÅäÄÝÀ» À§ÇØ, °¢ Ŭ¶óÀÌ¾ðÆ®´Â Å¬¶óÀÌ¾ðÆ®°¡ TdiReturnChainedReceives¸¦ È£ÃâÇÒ ¶§±îÁö °ü½ÉÀÖ´Â µ¥ÀÌ·Î Àб⠸ðµå Á¢±ÙÀ» À¯ÁöÇÑ´Ù. ÇÁ·ÎÅäÄÝ µå¶óÀ̹ö´Â ProtocolCoReceivePacket ¿¡ ÀÇÇØ ¸®ÅÏµÈ ÂüÁ¶ Ä«¿îÆ® ¸¸Å PacketÀ» °¡Áø NdisReturnPackets ÇÔ¼ö¸¦ È£ÃâÇÒ ¶§±îÁö ÀεðÄÉÀÌÆ®µÈ ÆÐŶÀÇ ¼ÒÀ¯±ÇÀ» À¯ÁöÇÑ´Ù.
¸¸¾à ProtocolCoReceivePacket ÇÔ¼ö°¡ NdisReturnPackets ÇÔ¼ö¸¦ È£ÃâÇÏÁö ¾Ê´Â´Ù¸é, ÇÁ·ÎÅäÄÝÀº ProtocolCoReceivePacket ÇÔ¼ö°¡ Á¦¾î¸¦ ¸®ÅÏÇϱâ ÈÄ NdisReturnPackets ÇÔ¼ö¿¡ ´ëÇÑ ÀÔ·Â Packet Æ÷ÀÎÅ͸¦ Àü´ÞÇØ¾ß ÇÑ´Ù. ÀÌ·¯ÇÑ ½Ã³ª¸®¿À¿¡¼, ProtocolCoReceivePacket ÇÔ¼ö´Â 0ÀÌ ¾Æ´Ñ °ªÀ» ¸®ÅÏÇÒ ¶§ ProtocolBindingContext ¿µ¿ª¿¡ ÀÔ·Â Packet Æ÷ÀÎÅ͸¦ ÀúÀåÇØ¾ß ÇÑ´Ù.
NDIS ¶óÀ̺귯¸®´Â ±×·¯ÇÑ ÀεðÄÉÀÌÆ®µÈ ÆÐŶÀ» À§ÇØ ÂüÁ¶ Ä«¿îÆ®¸¦ À¯ÁöÇϰí ÇÁ·ÎÅäÄÝÀº ProtocolBindingContext ÇÔ¼ö¿¡ ÀÇÇØ ¸®ÅÏµÈ °ª¸¸Å ±×·¯ÇÑ ÆÐŶÀ¸·Î NdisReturnPackets ÇÔ¼ö¸¦ È£ÃâÇÒ ¶§±îÁö ÆÐŶÀÇ À¯Áö±ÇÀ» ¼ÒÀ¯ÇÑ´Ù.
ProtocolCoReceivePacket ÇÔ¼ö´Â ¸¸¾à ÀεðÄÉÀÌÆ®µÈ ÆÐŶ¿¡ °ü½ÉÀÌÀÖ´Â Çö Ŭ¶óÀÌ¾ðÆ®µéÀº ȤÀº ¹ÙÀεåµÈ »óÀ§ ·¹º§ ÇÁ·ÎÅäÄÝµé ¾ø°Å³ª ProtocolCoReceivePacket ÇÔ¼ö°¡ ÁÖ¾îÁø ÆÐŶ°ú °ü·ÃµÈ ÇÁ·ÎÅäÄÝ ÇÒ´ç ÀúÀå°ø°£¿¡ ´ë¿ª¿Ü ºí·°À¸·ÎºÎÅÍ µ¥ÀÌÅ͸¦ º¹»çÇÑ´Ù¸é ÁÖ¾îÁø PacketÀÇ ¼ÒÀ¯±ÇÀ» ¾çµµÇϱâ À§ÇØ 0À» ¸®ÅÏÇÑ´Ù. ProtocolCoReceivePacket ÇÔ¼ö°¡ 0À» ¸®ÅÏÇÒ ¶§, NDIS´Â ¼ö½Å ÀεðÄÉÀ̼ÇÀ¸·Î ¶ÇÇϳªÀÇ ¹ÙÀεåµÈ ÇÁ·ÎÅäÄÝÀ» È£ÃâÇϰųª ÀεðÄÉÀ̼ÇÀ» ¸¸µç ¹Ì´ÏÆ÷Æ®¿¡°Ô Packet ÀÎ ÁÖ¾îÁø ÆÐŶ µð½ºÅ©·´Å͸¦ ¸®ÅÏÇÑ´Ù.
¾Æ·¡ NICÀÌ ÀÚ¿øÀÌ ºÎÁ·ÇÑ »óÅ·Π½ÇÇàÇÒ ¶§, ÆÐŶ µð½ºÅ©¸³ÅÍÀÇ °ü·ÃµÈ OOB ºí·° Status¸¦ NDIS_STATUS_RESOURCES·Î ¼³Á¤ÇÑ´Ù. À̰ÍÀº ProtocolCoReceivePacket ÇÔ¼ö¿¡°Ô NIC µå¶óÀ̹ö ÇÒ´ç ÆÐŶ ÀÚ¿øµéÀ» À¯ÁöÇÏ´Â °Íº¸´Ù ¿ÀÈ÷·Á ÆÐŶ µ¥ÀÌÅ͸¦ º¹»çÇϵµ·Ï ÇÑ´Ù. ProtocolCoReceivePacket ÇÔ¼ö´Â ±×·¯ÇÑ »óȲ¿¡¼ 0À» ¸®ÅÏÇØ¾ß ÇÑ´Ù.
¸¸¾à ¾Æ·¡ ¹Ì´ÏÆ÷Æ®°¡ Ãß°¡ÀûÀÎ ¼ö½ÅµéÀ» À§ÇÑ ´ë¿ªÆø¿Ü Á¤º¸¸¦ Á¦°øÇÑ´Ù¸é, ProtocolCoReceivePacket ÇÔ¼ö´Â Àû´çÇÑ NDIS_GET_PACKET_XXX ¸ÅÅ©·Î·Î ÁÖ¾îÁø PacketÀ» À§ÇÑ °ü·ÃµÈ ´ë¿ª¿Ü Á¤º¸¸¦ °Ë»öÇÒ ¼ö ÀÖ´Ù.
ProtocolCoReceivePacket ÇÔ¼ö´Â IRQL DISPATCH_LEVEL·Î ½ÇÇàÇÒ ¼ö ÀÖµµ·Ï ¾²¿©Á®¾ß ÇÑ´Ù.
|