NDIS_PACKET_OOB_DATA
typedef struct _NDIS_PACKET_OOB_DATA {
union {
ULONGLONG TimeToSend;
ULONGLONG TimeSent;
};
ULONGLONG TimeReceived;
UINT HeaderSize;
UINT SizeMediaSpecificInfo;
PVOID MediaSpecificInformation;
NDIS_STATUS Status;
} NDIS_PACKET_OOB_DATA, *PNDIS_PACKET_OOB_DATA;
|
NDIS_PACKET_OOB_DATA ´Â ATM NICÀ» À§ÇÑ Á¤º¸Ã³·³ ¹Ìµð¾î´Â out-of-band Á¤º¸¸¦
Á¦°øÇϰí, ¿ä±¸Çϰí, ȤÀº Çã¶ôÇÏ´Â µå¶óÀ̹ö¿¡ ÀÇÇØ ±×¸®°í ¸ÖƼÆÐŶ ¼ö½Åµé°ú
º¸³»±âµéÀ» Á¦°øÇÏ´Â µå¶óÀ̹öµé¿¡ ÀÇÇØ »ç¿ëµÈ ÆÐŶ µð½ºÅ©¸³ÅÍ¿Í °ü·ÃµÈ
out-of-band Á¤º¸¸¦ ÁöÁ¤ÇÑ´Ù.
¸â¹ö
- TimeToSend
- ÁÖ¾îÁø ÆÐŶÀÌ ³×Æ®¿öÅ©À» ÅëÇØ Àü¼ÛµÇ¾îÁ®¾ß ÇÏ´Â ½Ã½ºÅÛ ½Ã°£ ´ÜÀ§µé·Î ½Ã°£À»
ÁöÁ¤ÇÑ´Ù.
ÇÁ·ÎÅäÄݵéÀº NdisSendPackets¿¡ ÆÐŶ µð½ºÅ©¸³ÅÍ ¹è¿ÀÇ Æ÷ÀÎÅ͵éÀ»
Àü´ÞÇϰųª NdisSend¿¡ ÆÐŶ µð½ºÅ©¸³ÅÍ Æ÷ÀÎÅ͸¦ Àü´ÞÇϱâ Àü¿¡ ÀÌ·¯ÇÑ Å¸ÀÓ½ºÅÆÇÁ¸¦
¼³Á¤ÇÒ ¼ö ÀÖ´Ù.
¾Æ·¡ µå¶óÀ̹öµé¿¡ ÀÇÇØ MiniportSendPackets ȤÀº MiniportSend ÇÔ¼öµéÀº
ÁÖ¾îÁø ÆÐŶµéÀÌ ³×Æ®¿öÅ©À» ÅëÇØ Àü¼ÛµÇ¾îÁ®¾ß ÇÒ ¶§¸¦ °áÁ¤Çϱâ À§ÇØ ÀÌ·¯ÇÑ Å¸ÀÓ½ºÅÆÇÁ
ÀÇ °ªÀ» °Ë»öÇÒ ¼ö ÀÖ´Ù.
- TimeSent
- ¼ö½ÅµÈ ÆÐŶÀº ¸®¸ðÆ® ³ëµå·ÎºÎÅÍ ³×Æ®¿öÅ©À» °ÉÃÄ ¼ö½ÅµÈ ÆÐŶµéÀÌ Àü¼ÛµÇ¾îÁö´Â ½Ã½ºÅÛ
½Ã°£ ´ÜÀ§·Î ½Ã°£À» ÁöÁ¤ÇÑ´Ù.
´ÜÁö MiniportXxx ÇÔ¼öµéÀÇ ÁýÇÕÀ» ÀͽºÆ÷Æ®ÇÏ´Â NIC µå¶óÀ̹öµé°ú °¡´ÉÇÏ´Ù¸é,
ÀÎÅ͹̵ð¾ù µå¶óÀ̹öµéÀº ¼ö½Å ÆÐŶµéÀ» ÀεðÄÉÀÌÆ®Çϱâ Àü¿¡ ÀÌ·¯ÇÑ Å¸ÀÓ½ºÅÆÇÁ¸¦
¼³Á¤ÇÑ´Ù.
±×·¯ÇÑ ¹Ì´ÏÆ÷Æ® À§¿¡¼ ¹ÙÀεåµÈ µå¶óÀ̹öµéÀÇ ProtocolReceivePacket ÇÔ¼öµéÀº
¾î¶² ƯÁ¤ ÆÐŶÀÌ ¸®¸ðÆ® ³ëµå·ÎºÎÅÍ Àü¼ÛµÇ¾îÁú ¶§¸¦ °áÁ¤Çϱâ À§ÇØ ÀÌ·¯ÇÑ Å¸ÀÓ
½ºÅÆÇÁÀÇ °ªÀ» °Ë»öÇÒ ¼ö ÀÖ´Ù. ¸¸¾à ProtocolReceive ÇÔ¼ö´Â ÀεðÄÉÀ̼ÇÀÌ Á¦°øµÇ°í
¾Æ·¡ µå¶óÀ̹ö´Â ŸÀÓ½ºÅÆÇÁ¸¦ ¼³Á¤ÇÑ´Ù¸éÀº, ProtocolReceive´Â
ÀÌ·¯ÇÑ Å¸ÀÓ½ºÅÆÇÁ¸¦ Æ÷ÇÔÇÏ´Â ÆÐŶÀ» °Ë»öÇϱâ À§ÇØ NdisGetReceivePacket°ú
NDIS_GET_ORIGINAL_PACKETÀ» È£ÃâÇÒ ¼ö ÀÖ´Ù.
- TimeReceived
- ³×Æ®¿öÅ©¿¡ ÀÖ´Â ¸®¸ðÆ® ³ëµå·ÎºÎÅÍ ÁÖ¾îÁø ÆÐŶÀÌ NIC¿¡ °Ë»öµÇ¾îÁö´Â ½Ã½ºÅÛ ½Ã°£ ´ÜÀ§·Î
½Ã°£À» ÁöÁ¤ÇÑ´Ù.
´ÜÁö MiniportXxx ÇÔ¼öµéÀÇ ÁýÇÕÀ» ÀͽºÆ÷Æ®ÇÏ´Â NIC µå¶óÀ̹öµé°ú °¡´ÉÇÏ´Ù¸é,
ÀÎÅ͹̵ð¾ù µå¶óÀ̹öµéÀº ÆÐŶ µð½ºÅ©¸³Å͵鿡 ´ëÇÑ Çϳª³ª ȤÀº ±× ÀÌ»óÀÇ Æ÷ÀÎÅ͵éÀ»
°¡Áú ¼ö ÀÖ´Â ÆÐŶ ¹è¿·Î NdisMIndicateReceivePacket¸¦ È£ÃâÇϱâ Àü¿¡ ÀÌ·¯ÇÑ
ŸÀÓ½ºÅÆÇÁµéÀ» ¼³Á¤ÇÑ´Ù.
¾î¶² ±×·¯ÇÑ ¹Ì´ÏÆ÷Æ® À§¿¡ ¹ÙÀεåµÈ µå¶óÀ̹öµéÀÇ ProtocolReceivePacket ÇÔ¼öµéÀº
ÁÖ¾îÁø ÆÐŶ(µé)ÀÌ ¼ö½ÅµÇ¾îÁú ¶§¸¦ °áÁ¤Çϱâ À§ÇØ ÀÌ·¯ÇÑ Å¸ÀÓ½ºÅÆÇÁÀÇ °ªÀ» °Ë»öÇÒ
¼ö ÀÖ´Ù. ¸¸¾à ProtocolReceive ÇÔ¼ö°¡ ÀεðÄÉÀ̼ÇÀÌ ÁÖ¾îÁö°í ¾Æ·¡ µå¶óÀ̹ö°¡
ŸÀÓ½ºÅÆÇÁ¸¦ ¼³Á¤ÇÑ´Ù¸éÀº, ProtocolReceive ÇÔ¼ö´Â ÀÌ·¯ÇÑ Å¸ÀÓ½ºÅÆÇÁ¸¦ Æ÷ÇÔÇÏ´Â
ÆÐŶÀ» °Ë»öÇϱâ À§ÇØ NdisGetReceivedPacket °ú NDIS_GET_ORIGINAL_PACKET¸¦ È£ÃâÇÒ
¼ö ÀÖ´Ù.
- HeaderSize
- ÆÐŶ µð½ºÅ©¸³ÅÍ¿¡ ¿¬°áµÈ Ãʱ⠹öÆÛ µð½ºÅ©¸³ÅÍ¿¡ ÀÇÇØ ¸ÊµÈ ¹öÆÛ³»¿¡ Æ÷ÇԵǴÂ
¹Ìµð¾ö ƯÁ¤ Çì´õÀÇ ¹ÙÀÌÆ® Å©±â¸¦ ÁöÁ¤ÇÑ´Ù.
Lower-Level µå¶óÀ̹öµéÀº °¢ µå¶óÀ̹öÀÇ MiniportInitialize ÇÔ¼ö°¡ Áö¿øÇϱâ À§ÇØ
¼±ÅÃµÈ ¹Ìµð¾ö¿¡ µû¶ó ¿¬¼ÓµÈ ¼ö½Å ÀεðÄÉÀ̼Ç(µé)À» À§ÇØ ÀÌ ¸â¹ö¸¦ ¼³Á¤ÇÑ´Ù.
±×·¯ÇÑ ¹Ì´ÏÆ÷Æ®À§¿¡ ¹ÙÀεåµÈ µå¶óÀ̹öµéÀÇ ProtocolReceivePacket ÇÔ¼öµéÀº
¹Ìµð¾ö ƯÁ¤ ³×Æ® ÆÐŶÀ» ó¸®ÇÏ´Â ¹æ¹ýÀ» °áÁ¤Çϱâ À§ÇØ ÀÌ·¯ÇÑ ¸â¹öÀÇ °ªÀ»
°Ë»öÇÒ ¼ö ÀÖ´Ù.
- SizeMediaSpecificInfo
- MediaSpecificInformation¿¡¼ ¹öÆÛÀÇ ¹ÙÀÌÆ® Å©±â¸¦ ÁöÁ¤ÇÑ´Ù.
µå¶óÀ̹ö´Â ¸¸¾à º¸³»¾îÁö°Å³ª ȤÀº ÀεðÄÉÀÌÆ®µÇ´Â ÆÐŶÀ¸·Î out-of-band Á¤º¸¸¦
Á¦°øÇÑ´Ù¸éÀº ÀÌ ¸â¹ö¸¦ ¼³Á¤ÇØ¾ß ÇÑ´Ù.
- MediaSpecificInformation
- µå¶óÀ̹ö ÇÒ´ç ¹öÆÛÀÇ ÁÖ¼Ò¸¦ ÁöÁ¤ÇÑ´Ù. ÀÌ ¹öÆÛ´Â ÆÐŶ µð½ºÅ©¸³ÅÍ·Î ÁöÁ¤µÈ ³×Æ®
ÆÐŶ°ú µ¿¹ÝÇÑ ATM NICÀ» À§ÇÑ Á¤º¸¿Í °°Àº ¾î¶² out-of-band µ¥ÀÌÅ͸¦ Æ÷ÇÔÇÑ´Ù.
out-of-band µ¥ÀÌÅÍ´Â ¼ö½Å ÀεðÄÉÀ̼ÇÀ» À§ÇØ ÇÒ´çÇÏ´Â ¹Ì´ÏÆ÷Æ®¿¡ ÀÇÇØ ȤÀº º¸³»±â¸¦
À§ÇØ ÇÒ´çÇÏ´Â ÇÁ·ÎÅäÄÝ¿¡ ÀÇÇØ ¼³Á¤µÇ¾îÁø´Ù.
µå¶óÀ̹ö ŸÀÔÀº ó¸®ÇÏ´Â ¹æ¹ýÀ» °áÁ¤Çϱâ À§ÇØ out-of-band µ¥ÀÌÅÍ ¹öÆÛÀÇ ÁÖ¼Ò¿Í
Å©±â¸¦ °Ë»öÇÒ ¼ö Àְųª ȤÀº µé¾î¿À´Â ÆÐŶ µð½ºÅ©¸³ÅÍ·Î ÁöÁ¤µÈ ¼ö½Å ȤÀº º¸³»±â¸¦
ÇØ¼®ÇÒ ¼ö ÀÖ´Ù. ¸¸¾à ProtocolReceive ÇÔ¼ö°¡ ÀεðÄÉÀ̼ÇÀÌ ÁÖ¾îÁö°í ¾Æ·¡ µå¶óÀ̹ö°¡ ÀÌ
Á¤º¸¸¦ Á¦°øÇÑ´Ù¸éÀº, ProtocolReceive´Â ÀÌ ¹öÆÛÀÇ °¡»ó ¹üÀ§¸¦ Æ÷ÇÔÇÏ´Â ÆÐŶÀ»
°Ë»öÇϱâ À§ÇØ NdisGetReceivePacket°ú NDIS_GET_ORIGINAL_PACKETÀ» È£ÃâÇÒ ¼ö ÀÖ´Ù.
- Status
- ÆÐŶ µð½ºÅ©¸³ÅÍÀÇ Çö »óÅÂ¿Í ÆÐŶ µð½ºÅ©¸³ÅÍ¿¡ ÁöÁ¤µÈ ¸ðµç µå¶óÀ̹ö ÇÒ´ç ÀÚ¿øµéÀÇ
¼ÒÀ¯±ÇÀ» ÁöÁ¤ÇÑ´Ù.
´ÜÁö lower-level µå¶óÀ̹öµé°ú NDIS°¡ ÀÌ ¸â¹ö¸¦ ¼³Á¤ÇÑ´Ù.
In the Receive Path
¹Ì´ÏÆ÷Æ®´Â °ü·ÃµÈ ÆÐŶ µð½ºÅ©¸³ÅÍ(µé)³»¿¡ ÁöÁ¤µÈ ÇÒ´çµÈ ÀÚ¿øµéÀÇ ¼ÒÀ¯±ÇÀ» ¾ó¸¶³ª °ð
¾òÀ» Çʿ䰡 ÀÖ´ÂÁö¸¦ ÀεðÄÉÀÌÆ®Çϱâ À§ÇØ NdisMIndicateReceivePacketÀ» È£ÃâÇϱâ Àü¿¡ ÀÌ
¸â¹ö¸¦ ¼³Á¤ÇÒ ¼ö ÀÖ´Ù.
Á÷·ÄÈµÈ µå¶óÀ̹ö´Â ÀεðÄÉÀ̼ÇÀ» À§ÇØ ÆÐŶ µð½ºÅ©¸³ÅÍ·Î ÁöÁ¤µÈ ÀÚ¿øµéÀÌ Áï½Ã
Àç»ç¿ëÀ» À§ÇØ Áغñ°¡ µÇ¾ú´ÂÁö¸¦ °áÁ¤Çϱâ À§ÇØ NdisMIndicateReceivePacket ÇÔ¼ö·ÎºÎÅÍ
¸®ÅÏÇÏ´Â ÀÌ·¯ÇÑ °ªÀ» °Ë»öÇÒ ¼ö ÀÖ´Ù.
±×·¯³ª ºñÁ÷·ÄÈµÈ È¤Àº ¿¬°á ÁöÇâ ¹Ì´ÏÆ÷Æ®´Â NdisMCoIndicateReceivePacketÀ¸·ÎºÎÅÍ ¸®ÅÏÇÏ´Â
ÀÌ·¯ÇÑ °ªÀ» üũÇÒ Çʿ䰡 ¾ø´Ù.
In the Send Path
Á÷·ÄÈµÈ ¹Ì´ÏÆ÷Æ®´Â ºñµ¿±âÀûÀ¸·Î ¿ä±¸¸¦ ¿Ï¼ºÇÒ °ÍÀ̶ó°í NDIS¿¡°Ô ¾Ë¸®´Â ȤÀº ¸î¸î
ȤÀº ¸ðµç µé¾î¿À´Â ÆÐŶ ¹è¿À» NDIS°¡ ´Ù½Ã Å¥¿¡ ÀúÀåÇÏ°í ³ªÁß¿¡ MiniportSendPackets
ÇÔ¼ö¿¡°Ô ÀÌ·¯ÇÑ ÆÐŶ µð½ºÅ©¸³Å͵éÀ» ´Ù½Ã Á¦ÃâÇϵµ·Ï ¿ä±¸Çϱâ À§ÇØ µé¾î¿À´Â º¸³»±â¸¦
Áï½Ã ¿Ï¼ºÇϱâ À§ÇØ MiniportSendPackets ÇÔ¼ö³»¿¡ ÀÌ ¸â¹ö¸¦ ¼³Á¤ÇÒ ¼ö ÀÖ´Ù.
ÇÁ·ÎÅäÄÝÀº NdisSendPackets ȤÀº NdisSend¿¡ ´ëÇÑ È£Ãâ·ÎºÎÅÍ ¸®ÅÏÇÏ´Â º¸³»±âÀÇ ¿Ï¼º »óŸ¦
°áÁ¤Çϱâ À§ÇØ ÀÌ °ªÀ» °Ë»öÇÒ ¼ö ¾ø´Ù.
ºñÁ÷·ÄÈµÈ È¤Àº ¿¬°á ÁöÇâ ¹Ì´ÏÆ÷Æ®´Â NDIS°¡ ¸î¸î ȤÀº ¸ðµç µé¾î¿À´Â ÆÐŶ ¹è¿À» NDIS°¡
´Ù½Ã Å¥¿¡ ÀúÀåÇÏ´Â ¿ä±¸(Status ¸â¹ö¸¦ ¼³Á¤ÇÔÀ¸·Î½á) ȤÀº µ¿±âÀûÀ¸·Î ¸ÖƼ ÆÐŶ º¸³»±â¸¦
¿Ï¼ºÇÒ ¼ö ¾ø´Ù.
±× ´ë½Å¿¡, ºñÁ÷·ÄÈµÈ È¤Àº ¿¬°á ÁöÇâ ¹Ì´ÏÆ÷Æ®´Â ¸¸¾à Áï½Ã µ¥ÀÌÅ͸¦ º¸³¾ ¼ö ¾ø´Ù¸éÀº
³»ºÎÀûÀ¸·Î ¸ðµç µé¾î¿À´Â ÆÐŶ ¹è¿À» Å¥¿¡ ÀúÀåÇØ¾ß Çϰí Ç×»ó ¹è¿³»¿¡ °¢ ÆÐŶÀ» À§ÇØ
ºñµ¿±âÀûÀ¸·Î NdisMSendComplete(ȤÀº NdisMCoSendComplete)·Î ºñµ¿±âÀûÀ¸·Î ¸ÖƼ ÆÐŶ º¸³»±â¸¦
¿Ï¼ºÇØ¾ß ÇÑ´Ù.
ÁÖ¼®
NdisAllocatePacket·Î ÇÒ´çµÈ ¸ðµç ÆÐŶ µð½ºÅ©¸³ÅÍ´Â °ü·ÃµÈ NDIS_PACKET_OOB_DATA ºí·°À»
°¡Áø´Ù. ´ÜÁö Àü¼ÛµÇ¾îÁö´Â °¢ ³×Æ®¿öÅ© ÆÐŶÀ» °¡Áö´Â, ¸ÖƼÆÐŶ º¸³»±âµé°ú ȤÀº ¼ö½ÅµéÀ»
Áö¿øÇÏ´Â µå¶óÀ̹öµé°ú ÆÐŶ ¿ì¼±±Ç°ú °°Àº out-of-band Á¤º¸¸¦ Áö¿øÇÏ´Â µå¶óÀ̹öµéÀº OOB
ºí·°À» »ç¿ëÇÑ´Ù.
±×·³¿¡µµ ºÒ±¸Çϰí, ¹Ù¿îµåµÈ µå¶óÀ̹ö »çÀÌ¿¡ Àü¼ÛµéÀ» À§ÇØ ÆÐŶ µð½ºÅ©¸³Å͵éÀ» ÇÒ´çÇÏ´Â
NDIS µå¶óÀ̹ö´Â ÃʱâÈÇÒ ¶§ °¢ ±×·¯ÇÑ NDIS µå¶óÀ̹ö´Â Ç×»ó ÇÒ´çÇÏ´Â ÆÐŶ pool·ÎºÎÅÍ
NdisAllocatePacketÀ¸·Î ÀÌ·¯ÇÑ ÆÐŶ µð½ºÅ©¸³Å͵éÀ» ÇÒ´çÇØ¾ß ÇÑ´Ù.
ÀϹÝÀûÀ¸·Î, ³ôÀº ´É·Â(capacity)ÀÇ ¹ö½º ¸¶½ºÅÍ DMA NICµéÀÇ µå¶óÀ̹öµéÀº ±×·¯ÇÑ NIC
µå¶óÀ̹ö´Â ¸ÖƼ ÆÐŶ Àü¼ÛµéÀ» Áö¿øÇÔÀ¸·Î½á °¡Àå Å« ÆÛÆ÷¸Õ½º À̵æµéÀ» ¸¸µé±â ¶§¹®¿¡
¸ÖƼÆÐŶ ¼ö½Åµé°ú º¸³»±âµéÀ» Áö¿øÇÒ °ÍÀÌ´Ù. ±×·¯ÇÑ ¾Æ·¡ NIC µå¶óÀ̹ö¿Í ¹ÙÀεåµÈ
ÇÁ·ÎÅäÄÝÀº ¶ÇÇÑ ÃÖ´ë ÆÛÆ÷¸Õ½º¸¦ À§ÇØ ¸ÖƼÆÐŶ º¸³»±âµé°ú ¼ö½ÅµéÀ» ¶ÇÇÑ Áö¿øÇØ¾ß ÇÑ´Ù.
±×·¯ÇÑ ÇÁ·ÎÅäÄÝÀº ¶ÇÇÑ ¸ÖƼ ÆÐŶ Àü¼Û Áö¿ø¾øÀÌ ¶ÇÇϳªÀÇ NIC µå¶óÀ̹ö¿Í ¹ÙÀεåµÈ´Ù¸éÀº
NDIS´Â Ç×»ó ÇÁ·ÎÅäÄÝÀÇ ProtocolReceive ÇÔ¼ö¸¦ È£ÃâÇÔÀ¸·Î½á ±×¸®°í NIC µå¶óÀ̹öÀÇ
MiniportSend ÇÔ¼ö´Â È£Ãâ´ç ÇϳªÀÇ ÆÐŶÀ¸·Î È£ÃâÇÔÀ¸·Î½á ¾çÂÊ µå¶óÀ̹ö¿¡ Åõ¸íÇÑ ½ÄÀ¸·Î
¸ÖƼ ÆÐŶ º¸³»±âµé°ú ÇϳªÀÇ ÆÐŶ ¼ö½ÅµéÀ» ´Ù·é´Ù.
À¯»çÇϰÔ, ¸¸¾à ¸ÖƼ ÆÐŶ Àü¼ÛµéÀ» Áö¿øÇÏÁö ¾Ê´Â ÇÁ·ÎÅäÄÝÀº ±×·¸°Ô ÇÏ´Â NIC µå¶óÀ̹öµé°ú
¹ÙÀεåµÈ´Ù¸éÀº, NDIS´Â ¸ÖƼÆÐŶ ¼ö½Å ÀεðÄÉÀ̼ǵé°ú ÇϳªÀÇ ÆÐŶ º¸³»±â¸¦
ºñ·Ï ¾Æ·¡ NIC µå¶óÀ̹öÀÇ MiniportSendPackets ÇÔ¼ö°¡ ´ÜÁö ±×·¯ÇÑ ÇÁ·ÎÅäÄݷκÎÅÍ
NdisSend ¿¡ ´ëÇÑ È£Ãâ´ç ÇϳªÀÇ º¸³»±â ¿ä±¸°¡ Á¦°øµÇÁö¸¸Àº ¾çÂÊ µå¶óÀ̹öµé¿¡ Åõ¸íÇÑ
½ÄÀ¸·Î ´Ù·é´Ù.
Using Timestamps
ÆÐŶ µð½ºÅ©¸³Å͵é°ú °ü·ÃµÈ NDIS_PACKET_OOB_DATA ºí·°µé³»¿¡ ¼³Á¤µÈ ¸ðµç ŸÀÓ½ºÅÆÇÁµéÀº
12:00 a.m., January 1, 1601 ÀÌ·¡ 100-nanosecond ½Ã°£°£°ÝÀÇ ¼ö·Î ½Ã½ºÅÛ ½Ã°£ ´ÜÀ§µé·Î
Ç¥ÇöµÇ¾îÁø´Ù.
NDIS µå¶óÀ̹öµéÀº NDIS_SET_PACKET_TIME_XXX ¸ÅÅ©·ÎµéÀ» »ç¿ëÇÏ¿© ÀÌ·¯ÇÑ Å¸ÀÓ½ºÅÆÇÁµéÀ»
¼³Á¤ÇÒ ¶§ NdisGetCurrentSystemTimeÀ» È£ÃâÇÒ ¼ö ÀÖ´Ù. ¾ÆÁ÷µµ »óÀ§ ·¹º§ µå¶óÀ̹öµé
ȤÀº ½Ã½ºÅÛ ¿ä¼ÒµéÀº ÀÌ·¯ÇÑ Å¸ÀÓ½ºÅÆÇÁµéÀ» ¿£µåÀ¯Àúµé¿¡°Ô ´õ ÀǹÌÀÖ´Â ·ÎÄà ƯÁ¤ °ªµé·Î
º¯È¯ÇÒ ¼ö ÀÖ´Ù.
Supplying Out-of-Band Information with Packets
SizeMediaSpecificInfo¿Í MediaSpecificInformation ¸â¹öµé³»¿¡¼ ÁöÁ¤µÈ ¾î¶² out-of-band
Á¤º¸´Â ¹Ìµð¾ö ŸÀÓ Æ¯Á¤ÀÌ´Ù. ¿¹¸¦ µé¾î, ¸î¸î ŸÀÔµéÀÇ ¹Ìµð¾î´Â ±×µéÀÌ º¸³»´Â °¢ ÆÐŶÀ»
À§ÇÑ ÆÐŶ ¿ì¼±±ÇÀ» ÁöÁ¤ÇÏ´Â ÇÁ·ÎÅäÄݵéÀ» ¿ä±¸ÇÏ°í ±×µéÀÌ ÀεðÄÉÀÌÆ®ÇÏ´Â °¢ ¼ö½Å ÆÐŶ¿¡
ÆÐŶ ¿ì¼±±ÇÀ» ÁöÁ¤ÇÏ´Â NIC µå¶óÀ̹öµéÀ» ¿ä±¸ÇÑ´Ù. ±×·¯ÇÑ NIC µå¶óÀ̹ö´Â ÀÌ·¯ÇÑ Å¸ÀÓµéÀÇ
¹Ìµð¾î ¿ä±¸µéÀ» ½ÇÇàÇϱâ À§ÇØ NdisM(Co)IndicateReceivePacketÀ» È£ÃâÇØ¾ß ÇÑ´Ù.
NDIS°¡ 0¿¡¼ 7±îÁö ¿ì¼±±Ç °ªµéÀ» À§ÇÑ Áö¿øÀ» Á¦°øÇÏ´Â ¹Ý¸é, ¸î¸î ¹Ìµð¾î´Â ´ÜÁö µÎ ·¹º§ÀÇ
¿ì¼±±ÇÀ» Áö¿øÇÑ´Ù. ÀÌ·¯ÇÑ Å¸ÀÔÀÇ ¹Ìµð¾î¸¦ À§ÇØ, NDIS µå¶óÀ̹öµéÀº ¹Ìµð¾ö ƯÁ¤ ÀϹÝÀûÀÎ
¿ì¼±±Ç °ªÀ» 0¿¡¼ 3À¸·Î °ªµéÀ» ¸ÊÇØ¾ß Çϰí(Ç×»ó ±×·¯ÇÑ ¹Ìµð¾î ŸÀÔµéÀ» À§ÇØ 0)
¹Ìµð¾ö ƯÁ¤ ³ôÀº ¿ì¼±±Ç °ªÀ» 4¿¡¼ 7·Î °ªµéÀ»( ±×·¯ÇÑ ¹Ìµð¾î ŸÀÔÀ» À§ÇØ Ç×»ó Çϳª)
¸ÊÇØ¾ß ÇÑ´Ù.
MediaSpecificInformation¿¡ ¹öÆÛ³»¿¡ °¢°¢ÀÇ ·¹ÄÚµåµéÀÇ ±¸Á¶Ã¼´Â ´ÙÀ½°ú °°ÀÌ Á¤ÀǵǾîÁø´Ù.
typedef struct MediaSpecificInformation
{
UINT NextEntryOffset;
NDIS_CLASS_ID ClassId;
UINT Size;
UCHAR ClassInformation[1];
} MEDIA_SPECIFIC_INFORMATION;
ÀÌ ±¸Á¶Ã¼ÀÇ ¸â¹öµéÀº ´ÙÀ½ÀÇ Á¤º¸¸¦ Æ÷ÇÔÇÑ´Ù:
- NextEntryOffset
- ´ÙÀ½ ·¹Äڵ峻¿¡ ÀÌ ¸â¹ö³»¿¡ ¹ÙÀÌÆ® ¿É¼ÂÀ» ÁöÁ¤ÇÑ´Ù. 0Àº ¹öÆÛ³»¿¡ ¸¶Áö¸· ·¹Äڵ带
°¡¸®Å²´Ù. ¸¶Áö¸· ·¹Äڵ忡 ¸ðµç ³²¾ÆÀÖ´Â ¸â¹öµéÀÇ °ªµéÀº ¶ÇÇÑ 0ÀÌ´Ù. ÀÌ ¸â¹öÀÇ
°ªÀÌ 4¹ÙÀÌÆ® Á¤·ÄÀÌ µÉ °ÍÀÌ´Ù.
- ClassId
- ·¹ÄÚµåÀÇ Å¸ÀÔÀ» ÁöÁ¤ÇÑ´Ù. °¡´ÉÇÑ °ªµéÀº ´ÙÀ½ÀÇ ÇϳªÀÌ´Ù:
- NdisClass802_3Priority
- ÀÌ °ªÀ» ´õ ÀÌ»ó »ç¿ëÇÏÁö ¾Ê´Â´Ù. ÆÐŶ ´ç ¿ì¼±±ÇÀº NDIS_PACKET_EXTENSION ±¸Á¶Ã¼³»¿¡
Æ÷ÇԵǾî ÀÖ´Â ¹è¿ÀÇ ¸â¹öÀÌ´Ù.
µå¶óÀ̹öµéÀº ÆÐŶ µð½ºÅ©¸³ÅͷκÎÅÍ ÆÐŶ ¿ì¼±±Ç¿¡ Á¢±ÙÇϱâ À§ÇØ
NDIS_PER_PACKET_INFO_FROM_PACKET ȤÀº NDIS_PACKET_EXTENSION_FROM_PACKET ¸ÅÅ©·ÎµéÀ»
»ç¿ëÇÑ´Ù.
- NdisClassWirelessWanMbxMailbox
- ¾Æ·¡ NIC µå¶óÀ̹ö´Â ¸ÞÀϹڽº Ç÷¡±×°¡ °ü·ÃµÈ ÆÐŶÀ» À§ÇØ ¼³Á¤µÉ °ÍÀÎÁö¸¦(1 = ¸ÞÀÏ
¹Ú½º Ç÷¡±× ¼³Á¤, 0 = ¸ÞÀϹڽº Ç÷¡±×¸¦ ¼³Á¤¾ÈÇÔ.) °áÁ¤Çϱâ À§ÇØ ClassInformation¿¡
ULONG Å©±â ·¹Äڵ带 Á¶»çÇÑ´Ù.
- NdisClassIrdaPacketInfo
- ¾Æ·¡ IrDA NIC µå¶óÀ̹ö´Â Àü¼ÛµÉ ÇÁ·¹ÀÓÀ» Ãß°¡ÇØ¾ß ÇÏ´Â Frame(BOF) Ç÷¡±×µéÀÇ Ãß°¡ÀûÀÎ
BeginnignÀÇ ¼ö¿Í NICÀÌ Àü¼ÛÀ» ½ÃÀÛÇÒ ¼ö ÀÖ±â Àü¿¡ Àü¼ÛÀ» ¼ö½Å ÈÄ¿¡ ±â´Ù·Á¾ß ÇÏ´Â
(¸¶ÀÌÅ©·Î ÃÊ·Î) ÃÖ¼Ò ½Ã°£À» °áÁ¤Çϱâ À§ÇØ ClassInformation ³»¿¡ NDIS_IRDA_PACKET_INFO¸¦
Á¶»çÇÑ´Ù.
NDIS_IRDA_PACKET_INFO ±¸Á¶Ã¼´Â ´ÙÀ½°ú °°ÀÌ Á¤ÀǵȴÙ:
typedef struct _NDIS_IRDA_PACKET_INFO
{
UINT ExtraBOFs;
UINT MinTurnAroundTime;
} NDIS_IRDA_PACKET_INFO, *PNDIS_IRDA_PACKET_INFO;
- NdisClassAtmAALInfo
- ATM NICÀ» À§ÇØ ¾Æ·¡ NDIS µå¶óÀ̹ö¿¡°Ô ÆÐŶÀ» º¸³»±â Àü¿¡, ÇÁ·ÎÅäÄÝ µå¶óÀ̹ö´Â
ClassInformation¿¡ ATM_AAL_OOB_INFO ±¸Á¶Ã¼³»¿¡ Àû´çÇÑ Á¤º¸¸¦ ¼³Á¤ÇÑ´Ù.
ATM_AAL_OOB_INFO ±¸Á¶Ã¼´Â ´ÙÀ½°ú °°ÀÌ Á¤ÀǵȴÙ:
typedef struct _ATM_AAL_OOB_INFO
{
ATM_AAL_TYPE AalType;
union
{
struct _ATM_AAL5_INFO
{
BOOLEAN CellLossPriority;
UCHAR PayLoadTypeIdentifier;
} ATM_AAL5_INFO;
struct _ATM_AAL0_INFO
{
BOOLEAN CellLossPriority;
UCHAR PayLoadTypeIdentifier;
} ATM_AAL0_INFO;
};
} ATM_AAL_OOB_INFO, *PATM_AAL_OOB_INFO;
AAL5 ÆÐŶÀ» º¸³¾ ¶§, ÇÁ·ÎÅäÄÝÀº ¹Ì´ÏÆ÷Æ®°¡ ATM ÆÐŶ Çì´õÀÇ ÀÀ´äÇÏ´Â ÇʵåµéÀ»
¼³Á¤ÇØ¾ß ÇÏ´Â °ªµé¿¡ ´ëÇØ ATM_AAL5_INFO ±¸Á¶Ã¼ÀÇ ¸â¹öµéÀ»(CellLostPriority,
UserToUserIndication, CommonPartIndicator) ¼³Á¤ÇØ¾ß ÇÑ´Ù.
AAL0 ÆÐŶÀ» º¸³¾ ¶§, ÇÁ·ÎÅäÄÝÀº ¹Ì´ÏÆ÷Æ®°¡ ATM ¼¿ Çì´õÀÇ ÀÀ´äÇÏ´Â ÇʵåµéÀ»
¼³Á¤ÇØ¾ß ÇÏ´Â °ªµé¿¡ ´ëÇØ ATM_AAL0_INFO ±¸Á¶Ã¼ÀÇ ¸â¹öµéÀ»(CellLossPriority,
CommonPartIndicator) ¼³Á¤ÇØ¾ß ÇÑ´Ù.
¾Æ·¡ µå¶óÀ̹ö´Â AAL5 ÆÐŶ Çì´õ ȤÀº AAL0 ¼¿ Çì´õ³»¿¡ ÇʵåµéÀ» À§ÇÑ °ªµéÀ»
¾ò±â À§ÇØ ATM_AAL_OOB_INFO ±¸Á¶Ã¼¸¦ Á¶»çÇØ¾ß ÇÑ´Ù.
- Size
- 4¹ÙÀÌÆ® °æ°è·Î ´ÙÀ½ ·¹ÄÚµåÀÇ NextEntryOffset¸¦ Á¤·ÄÇϱâ À§ÇØ ÇÊ¿äÇÑ ¾î¶² ÆÐµùÀ»
Æ÷ÇÔÇÏ´Â ClassInformation ¹è¿³»¿¡ ¹ÙÀÌÆ® ¼öµéÀ» ÁöÁ¤ÇÑ´Ù.
- ClassInformation
- ÀÌ ·¹Äڵ带 À§ÇÑ out-of-band Á¤º¸¸¦ ÁöÁ¤ÇÑ´Ù.
NDIS_CLASS_ID ŸÀÔÀº NDIS Á¤ÀÇ ¿°ÅÀÌ´Ù.(enumeration) ´ëºÎºÐÀÇ ·¹ÄÚµåµéÀ» À§ÇÑ
°øÅë Ŭ·¡½º ºÐ·ù(classifications)µéÀº ½Ã½ºÅÛ Á¤ÀÇ °ªµé·Î ÁöÁ¤µÉ °ÍÀÌ´Ù. ±×·¯³ª,
ÀÌ·¯ÇÑ ¿°Å¿¡¼ °ªµéÀÇ ¹üÀ§´Â º¥´õ Á¤ÀÇ ½ÃÇèÀûÀΠŬ·¡½ºµéÀ» À§ÇØ »ç¿ëµÉ °ÍÀÌ´Ù.
Setting Status Before Making Receive Indications
´ÜÁö ¾Æ·¡ ·¹º§ NDIS µå¶óÀ̹öµéÀº ¼ö½Å ÀεðÄÉÀ̼ǵéÀ» À§ÇØ ÀÌ·¯ÇÑ ±¸Á¶Ã¼ÀÇ Status
¸â¹ö¸¦ »ç¿ëÇÑ´Ù. ±×·¯ÇÑ µå¶óÀ̹ö°¡ NdisMIndicateReceivePacket ÇÔ¼ö¸¦ È£ÃâÇϱâ Àü¿¡,
´ÙÀ½°ú °°Àº °ªµé·Î ÀεðÄÉÀÌÆ®µÇ¾îÁö´Â ¹è¿³»¿¡ Çϳª³ª ȤÀº ±× ÀÌ»óÀÇ ÆÐŶ µð½ºÅ©¸³Å͵éÀ»
À§ÇØ NDIS_SET_PACKET_STATUS·Î Status¸¦ ¼³Á¤ÇÑ´Ù:
- NDIS_STATUS_SUCCESS
- µå¶óÀ̹ö°¡ ÆÐŶ µð½ºÅ©¸³ÅͰ¡ MiniportReturnPacket¿¡ ´ëÇØ ¸®Å쵃 ¶§±îÁö
NdisM(Co)IndicateReceivePacketÀ¸·Î ÀεðÄÉÀÌÆ®ÇÏ·Á´Â ÆÐŶÀÇ ¼ÒÀ¯±ÇÀ» ¾çµµÇÒ °ÍÀ̶ó°í
NDIS¿¡°Ô ¸»ÇÑ´Ù.
ÀεðÄÉÀ̼ÇÀ» ¼ö½ÅÇÑ ÇÁ·ÎÅäÄݵéÀº °ü½ÉÀִ Ŭ¶óÀÌ¾ðÆ®µé¿¡°Ô ÀεðÄÉÀÌÆ®µÈ µ¥ÀÌÅ͸¦ Æ÷¿öµå
Çϱâ À§ÇØ °¡´ÉÇÑÇÑ È¤Àº ÀεðÄÉÀÌÆ®µÈ net ÆÐŶ µ¥ÀÌÅ͸¦ º¹»çÇϱâ À§ÇØ ÆÐŶ¿¡ Á¦°øµÈ
¾î¶² out-of-band Á¤º¸¿Í ÆÐŶ µð½ºÅ©¸³ÅÍ¿¡ ¿¬°áµÈ ¹öÆÛ µð½ºÅ©¸³ÅÍ¿¡ ÀÇÇØ ¸ÊµÈ ¸ðµç
¹öÆÛ¿¡ µû¶ó ÆÐŶ µð½ºÅ©¸³Å͸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
- NDIS_STATUS_RESOURCES
- µå¶óÀ̹ö´Â NdisM(Co)IndicateReceivePacket ÇÔ¼ö·Î ÀεðÄÉÀÌÆ®ÇÏ·Á°í ÇÏ´Â ÆÐŶÀÇ ¼ÒÀ¯±ÇÀ»
º¸À¯ÇÒ °ÍÀ̶ó°í NDIS¿¡°Ô ¸»ÇÑ´Ù. ÀÌ ÆÐŶÀº ¹ÙÀεåµÈ ÇÁ·ÎÅäÄݵéÀÇ ProtocolReceive ȤÀº
ProtocolCoReceivePacket ÇÔ¼öµé¿¡°Ô ÀεðÄÉÀÌÆ®µÉ °ÍÀÌ´Ù.
ÀÌ »óŸ¦ ¼³Á¤ÇÏ´Â °ÍÀº ¹ÙÀεåµÈ ÇÁ·ÎÅäÄݵ鿡°Ô ´õ ºü¸£°Ô ÀεðÄÉÀÌÆ®ÇÏ´Â µå¶óÀ̹ö¿¡°Ô
°¢ ÆÐŶ µð½ºÅ©¸³Å͵éÀÇ »ó´ëÀûÀ¸·Î ¿¬°áµÈ ¹öÆÛ µð½ºÅ©¸³Åӵ鿡 ÀÇÇØ(¾Ö¸Å) ¸Þ¸ð¸®ÀÇ
°¢ ÆÐŶ µð½ºÅ©¸³ÅÍÀ» À§ÇØ out-of-band µ¥ÀÌÅÍ ºí·°³»¿¡ ¾î¶² ¹Ìµð¾ö ƯÁ¤ ¹öÆÛÀÇ
°¢ ±×·¯ÇÑ ÆÐŶ µð½ºÅ©¸³ÅÍÀÇ ¼ÒÀ¯±ÇÀ» ¸®ÅÏÇϵµ·Ï ÇÑ´Ù.
ÇÁ·ÎÅäÄݵéÀº Ŭ¶óÀÌ¾ðÆ®µé¿¡°Ô µ¥ÀÌÅ͸¦ Æ÷¿öµåÇϰí ÀεðÄÉÀ̼ǵé·ÎºÎÅÍ º¹»çÇÏ´Â µ¥ÀÌÅ͸¦
ÈÄó¸®Çϱâ(postprocessing) ½ÃÀÛÇϱâ À§ÇØ ProtocolReceiveComplete ÇÔ¼öµé¿¡ ˆ¿³ª È£ÃâÀ»
±â´Ù·Á¾ß ÇÑ´Ù.
ÀεðÄÉÀÌÆ®ÇÏ´Â µå¶óÀ̹ö´Â ¸¸¾à ÆÐŶ pool°ú ¹öÆÛ pool¿¡¼ ³·Àº ½ÇÇàÀ» ÇÑ´Ù¸éÀº
ÀÌ·¯ÇÑ »óŸ¦ ¼³Á¤ÇÒ ¼ö ÀÖ´Ù. ÀεðÄÉÀÌÆ®ÇÏ´Â NIC µå¶óÀ̹ö´Â ¸¸¾à ³ôÀº ³×Æ®¿öÅ© Æ®·¡Çȶ§¹®¿¡
NIC ¼ö½Å ¹öÆÛµé¿¡ ´ëÇØ ³·Àº ½ÇÇàÀ» ÇÑ´Ù¸éÀº ÀÌ·¯ÇÑ »óŸ¦ ¼³Á¤ÇÒ ¼ö ÀÖ´Ù. ¹ö½º¸¶½ºÅÍ
DMA NIC µå¶óÀ̹ö´Â Ãß°¡ÀûÀÎ NIC ¼ö½Å ¹öÆÛ °ø°£À» ¾ò±â À§ÇØ ÀÌ·¯ÇÑ È¯°æµé¿¡¼
NdisMAllocateSharedMemoryAsync ÇÔ¼ö¸¦ È£ÃâÇÒ °ÍÀÌ´Ù.
ºñÁ÷·ÄÈµÈ È¤Àº ¿¬°á ÁöÇâ ¹Ì´ÏÆ÷Æ® µå¶óÀ̹ö´Â ÆÐŶ µð½ºÅ©¸³Å͸¦ À§·Î ÀεðÄÉÀÌÆ®Çϱâ Àü¿¡
·ÎÄà º¯¼ö³»¿¡ out-of-band µ¥ÀÌÅÍ ºí·°ÀÇ Status ¸â¹ö¸¦ ÀúÀåÇØ¾ß ÇÑ´Ù.
´õ ÀÚ¼¼ÇÑ ¼³¸íÀÌ ¾Æ·¡ ¼³¸íÇϵíÀÌ, NdisMIndicateReceivePacket ÇÔ¼ö°¡ ¸®ÅÏÇÒ ¶§, ºñÁ÷·ÄȵÈ
¹Ì´ÏÆ÷Æ® µå¶óÀ̹ö´Â Áï½Ã ÆÐŶ µð½ºÅ©¸³ÅÍ¿Í °ü·ÃµÈ ¹öÆÛµéÀ» Àç¿ä±¸ÇÒ ¼ö ÀÖ´ÂÁö¸¦ °áÁ¤Çϱâ
À§ÇØ ÀúÀåµÈ ÆÐŶ Status ¸¦ Ã¼Å©ÇØ¾ß ÇÑ´Ù.
Getting Status on Return from NdisMIndicateReceivePacket
Á÷·ÄÈµÈ µå¶óÀ̹ö°¡ ¸î¸î ¼öÀÇ ÆÐŶ µð½ºÅ©¸³Å͵éÀ» À§ÇØ Status¸¦ ¼³Á¤ÇÏ°í ÆÐŶ µð½ºÅ©¸³Å͵鿡
´ëÇÑ ¹è¿ Æ÷ÀÎÅ͵é·Î NdisMIndicateReceivePacketÀ» È£ÃâÇÑ ÈÄ¿¡, NdisMIndicateReceivePacketÀ»
NDIS¿¡ ÀÇÇØ ¼³Á¤µÈ Status °ªÀ» °Ë»öÇϱâ À§ÇØ Á¦¾î¸¦ ¸®ÅÏÇÒ ¶§ NDIS_GET_PACKET_STATUS ¸ÅÅ©·Î¸¦
»ç¿ëÇØ¾ß ÇÑ´Ù.
Á÷·ÄÈµÈ µå¶óÀ̹ö°¡ NDIS_STATUS_SUCCESS·Î ÀεðÄÉÀÌÆ®ÇÏ´Â °¢ ÆÐŶ µð½ºÅ©¸³ÅÍ¿Í °ü·ÃµÈ
NDIS_PACKET_OOB_DATA ºí·°³»¿¡ ¸®ÅÏµÈ Status °ªÀº ÀεðÄÉÀÌÆ® ÇÏ´Â µå¶óÀ̹ö°¡ ´ÙÀ½°ú °°ÀÌ
´ÙÀ½ ÇÏ´Â °Í¿¡ ´ëÇÑ °ÍÀ» °áÁ¤ÇÑ´Ù:
- NDIS_STATUS_SUCCESS
- ¸¸¾à NdisMIndicateReceivePacket¿¡ ´ëÇÑ ¹Ì´ÏÆ÷Æ®ÀÇ È£Ãâ·ÎºÎÅÍ ¸®ÅϰªÀ» ¼³Á¤ÇÑ´Ù¸éÀº
¹Ì´ÏÆ÷Æ®´Â ´ÙÀ½ÀÇ ¼ÒÀ¯¿øÀ» ´Ù½Ã ¾ò´Â´Ù:
- ÆÐŶ µð½ºÅ©¸³ÅÍ
- ÆÐŶ µð½ºÅ©¸³ÅÍ¿Í °ü·ÃµÈ ±×¸®°í ÀÌ ºí·°³»¿¡ ÁöÁ¤µÈ ¾î¶² ¹Ìµð¾î ƯÁ¤ Á¤º¸ÀÇ °ü·ÃµÈ
out-of-band µ¥ÀÌÅÍ ºí·°
- ÆÐŶ µð½ºÅ©¸³ÅÍ¿¡ ¿¬°áµÈ ¹öÆÛ µð½ºÅ©¸³ÅÍ¿¡ ÀÇÇØ ¸ÊµÈ ¸ðµç ¹öÆÛµé
NDIS´Â ÀÌ¹Ì ¼³¸íÇßµíÀÌ ÀεðÄÉÀÌÆ®ÇÏ´Â µå¶óÀ̹ö°¡ NDIS_STATUS_RESOURCES·Î ¼³Á¤ÇÑ ¾î¶² ÆÐŶ
µð½ºÅ©¸³Å͵éÀº NDIS_STATUS_SUCCESS·Î NdisMIndicateReceivePacket¿¡ ´ëÇÑ È£Ãâ·ÎºÎÅÍ ¸®ÅϵÉ
°ÍÀ̶ó°í º¸ÀåÇÑ´Ù.
µå¶óÀ̹ö´Â Áï½Ã ¿¬¼ÓµÈ ¼ö½Å ÀεðÄÉÀ̼ǵéÀ» À§ÇØ ¹Ìµð¾î ƯÁ¤ Á¤º¸ ¹öÆÛ¿Í out-of-band ºí·°,
ÀÌ·¯ÇÑ µð½ºÅ©¸³Å͵éÀ» ÁغñÇÒ ¼ö ÀÖ´Ù.
- NDIS_STATUS_PENDING
- ¸¸¾à NdisMIndicateReceivePacketÀ¸·ÎºÎÅÍ ¸®ÅϰªÀ» ÀÌ °ªÀ¸·Î ¼³Á¤µÈ´Ù¸éÀº, ÇÁ·ÎÅäÄݵéÀº
ÆÐŶ µð½ºÅ©¸³ÅͰ¡ ÀεðÄÉÀÌÆ®ÇÏ´Â µå¶óÀ̹öÀÇ MiniportReturnPacket ÇÔ¼ö¿¡ ´ëÇØ ¸®ÅϵǾîÁú
¶§±îÁö ÆÐŶ µð½ºÅ©¸³ÅÍ·Î ¿¬°áµÈ ¹öÆÛ µð½ºÅ©¸³Å͵鿡 ÀÇÇØ ¸ÊµÈ ¸ðµç ¹öÆÛµéÀÇ, ÀÌ·¯ÇÑ ºí·°³»¿¡
ÁöÁ¤µÈ ¾î¶² ¹öÆÛÀÇ, °ü·ÃµÈ out-of-band µ¥ÀÌÅÍ ºí·°ÀÇ, ÆÐŶ µð½ºÅ©¸³ÅÍÀÇ ¼ÒÀ¯±ÇÀ»
º¸À¯ÇÑ´Ù.
Á÷·ÄÈµÈ È¤Àº ¿¬°á ÁöÇâ ¹Ì´ÏÆ÷Æ® µå¶óÀ̹ö´Â NdisMIndicateReceivePacketÀÇ ¸®ÅϰªÀ¸·Î
ÀεðÄÉÀÌÆ®µÈ ÆÐŶµéÀÇ Status °ªÀ» Á¶»çÇÒ Çʿ䰡 ¾ø´Ù. ±× ´ë½Å¿¡, ºñÁ÷·ÄÈµÈ ¹Ì´ÏÆ÷Æ®
µå¶óÀ̹ö´Â ÆÐŶ µð½ºÅ©¸³Å͸¦ À§·Î ÀεðÄÉÀÌÆ®Çϱâ Àü¿¡ ·ÎÄà º¯¼ö³»¿¡ ÆÐŶÀÇ Status¸¦
ÀúÀåÇØ¾ß ÇÑ´Ù. NdisMIndicateReceivePacket ÇÔ¼ö°¡ ¸®ÅÏÇÒ ¶§, ¹Ì´ÏÆ÷Æ® µå¶óÀ̹ö´Â
ÀúÀåµÈ ÆÐŶ Status¸¦ Ã¼Å©ÇØ¾ß ÇÑ´Ù. ¸¸¾à ¹Ì´ÏÆ÷Æ® µå¶óÀ̹ö°¡ ÆÐŶ µð½ºÅ©¸³Å͸¦
À§·Î ÀεðÄÉÀÌÆ®Çϱâ Àü¿¡ ÆÐŶÀÇ Status °ªÀ» NDIS_STATUS_RESOURCES·Î ¼³Á¤ÇÑ´Ù¸éÀº,
ÀÚ½ÅÀÇ MiniportReturnPacket ÇÔ¼ö¸¦ È£ÃâÇÔÀ¸·Î½á NdisMIndicateReceivePacketÀÌ ¸®ÅÏÈÄ¿¡
Áï½Ã ÆÐŶ µð½ºÅ©¸³Å͸¦ Àç¿ä±¸ÇØ¾ß ÇÑ´Ù. ÀÌ·¯ÇÑ °æ¿ì¿¡, NDIS´Â ÆÐŶ µð½ºÅ©¸³Å͸¦ ¸®ÅÏÇϱâ
À§ÇØ ¹Ì´ÏÆ÷Æ® µå¶óÀ̹öÀÇ MiniportReturnPacket ÇÔ¼ö¸¦ È£ÃâÇÏÁö ¾Ê´Â´Ù.
¸¸¾à ¹Ì´ÏÆ÷Æ® µå¶óÀ̹ö°¡ ÆÐŶ µð½ºÅ©¸³Å͸¦ À§·Î ÀεðÄÉÀÌÆ®Çϱâ Àü¿¡ ÆÐŶÀÇ Status¸¦
NDIS_STATUS_SUCCESS·Î ¼³Á¤ÇÑ´Ù¸éÀº ¹Ì´ÏÆ÷Æ® µå¶óÀ̹ö´Â NDIS°¡ °è¼ÓÇØ¼ ¹Ì´ÏÆ÷Æ®
µå¶óÀ̹öÀÇ MiniportReturnPacket ÇÔ¼ö¿¡ ´ëÇÑ ÆÐŶ µð½ºÅ©¸³Å͸¦ ¸®ÅÏÇÒ ¶§±îÁö ÆÐŶ
µð½ºÅ©¸³Å͸¦ Àç¿ä±¸ÇÒ Çʿ䰡 ¾ø´Ù.
Setting Status in MiniportSendPackets
´ÜÁö MiniportSendPackets ÇÔ¼öµéÀ» °¡Áö´Â ¾Æ·¡ Á÷·ÄÈµÈ NDIS µå¶óÀ̹öµéÀº
º¸³»±â¸¦ ÁöÁ¤ÇÏ´Â ÆÐŶ µð½ºÅ©¸³Å͵éÀ» À§ÇÑ ÀÌ·¯ÇÑ ±¸Á¶Ã¼ÀÇ Status ¸â¹ö¸¦
»ç¿ëÇÒ ¼ö ÀÖ´Ù. ±×·¯ÇÑ µå¶óÀ̹öÀÇ MiniportSendPackets ÇÔ¼ö´Â ´ÙÀ½°ú °°ÀÌ
ÀÔ·Â ¹è¿³»¿¡¼ ÆÐŶ µð½ºÅ©¸³Å͵é°ú °ü·ÃµÈ out-of-band µ¥ÀÌÅÍ ºí·°µé³»¿¡ Status
¸â¹ö¸¦ ¼³Á¤ÇÑ´Ù:
±×·¸Áö ¾Ê´Â´Ù¸éÀº ±×·¯ÇÑ µå¶óÀ̹ö´Â ÆÐŶ µð½ºÅ©¸³ÅÍ·Î NdisMSendCompleteÀ» È£ÃâÇÒ ¶§
°¢ ÆÐŶÀ» À§ÇØ ¿Ï¼º »óŸ¦ Á¦°øÇÑ´Ù. MiniportSendPackets ÇÔ¼öµé ´ë½Å¿¡ MiniportSend¸¦
°¡Áö´Â µå¶óÀ̹öµéÀº °¢ µé¾î¿À´Â º¸³»±â ÆÐŶÀ» À§ÇØ »óŰªÀ» ¸®ÅÏÇÏ°í ±×·¡¼ ±×·¯ÇÑ
µå¶óÀ̹ö´Â °áÄÚ º¸³»±â·Î ÁöÁ¤µÈ ÆÐŶ µð½ºÅ©¸³Å͸¦ À§ÇØ out-of-band µ¥ÀÌÅÍ ºí·°ÀÇ Status
¸â¹ö¸¦ ¼³Á¤ÇÏÁö ¾Ê´Â´Ù.
ÇÁ·ÎÅäÄݵéÀº NdisSendPackets ȤÀº NdisSend·ÎºÎÅÍ ¸®ÅÏµÈ °ü·ÃµÈ OOB ºí·°ÀÇ Status ¸â¹ö·Î
ºÎÅÍ ÇÁ·ÎÅäÄÝ ÇÒ´ç ÆÐŶ µð½ºÅ©¸³Å͸¦ À§ÇØ ¿Ï¼º »óŸ¦ °áÁ¤ÇÒ ¼ö ¾ø´Ù.
ÀÌ·¯ÇÑ °ªÀº NDIS°¡ ¾Æ·¡ µå¶óÀ̹öÀÇ MiniportSendPackets °ú ȤÀº MiniportSend ÇÔ¼öµé¿¡
´ëÇØ º¸³»±â ÆÐŶµéÀ» Á¦ÃâÇÏ°í ´Ù½Ã Å¥¿¡ ÀúÀåÇÏ°í ´Ù½Ã Á¦ÃâÇÏ´Â °Íó·³ µ¿ÀûÀ¸·Î º¯ÈÇÒ
¼ö ÀÖ´Ù.
ÇÁ·ÎÅäÄÝÀº ProtocolSendComplete ÇÔ¼ö°¡ ÆÐŶ µð½ºÅ©¸³ÅͷΠȣÃâµÉ ¶§±îÁö ±×·¯ÇÑ ÇÁ·ÎÅäÄÝ
ÇÒ´ç ÆÐŶ µð½ºÅ©¸³Å͸¦ À§ÇØ OOB µ¥ÀÌÅÍ ºí·°À» Á¢±ÙÇϱâ À§ÇØ NDIS_GET_PACKET_XXX ¸ÅÅ©·Î
ȤÀº NDIS_OOB_DATA_FROM_PACKET¸¦ »ç¿ëÇÒ ¼ö ¾ø´Ù.
|