NdisQueryPacket
VOID
NdisQueryPacket(
IN PNDIS_PACKET Packet,
OUT PUINT PhysicalBufferCount OPTIONAL,
OUT PUINT BufferCount OPTIONAL,
OUT PNDIS_BUFFER *FirstBuffer OPTIONAL,
OUT PUINT TotalPacketLength OPTIONAL
);
|
NdisQueryPacketÀº ÁÖ¾îÁø ÆÐŶ¿¡ ´ëÇÑ Á¤º¸¸¦ ¸®ÅÏÇÑ´Ù.
¸Å°³º¯¼ö
- Packet
- ÆÐŶ µð½ºÅ©¸³Å͸¦ °¡¸®Å²´Ù.
- PhysicalBufferCount
- ÀÌ ÇÔ¼ö´Â ÁÖ¾îÁø ÆÐŶ¿¡ ¿¬°áµÈ ¹öÆÛ µð½ºÅ©¸³Å͵鿡 ÀÇÇØ ¸ÊµÈ ¹°¸®breaksÀÇ ÃÖ´ë ¼ö¸¦ ¸®ÅÏÇÑ´À È£ÃâÀÚ Á¦°ø º¯¼ö¸¦ °¡¸®Å²´Ù.
- BufferCount
- ÀÌ ÇÔ¼ö´Â ÁÖ¾îÁø ÆÐŶ¿¡ ´ëÇØ ¿¬°áµÈ ¹öÆÛ µð½ºÅ©¸³Å͵éÀÇ ¼ö¸¦ ¸®ÅÏÇϴ ȣÃâÀÚ Á¦°ø º¯¼ö¸¦ °¡¸®Å²´Ù. ÀÌ ¸Å°³º¯¼ö´Â NULLÀÌ µÉ ¼ö ÀÖ´Ù.
- FirstBuffer
- ÀÌ ÇÔ¼ö´Â ÁÖ¾îÁø ÆÐŶ¿¡¿¬°áµÈ ¹öÆÛ µð½ºÅ©¸³Å͵éÀÇ ¼ö¸¦ ¸®ÅÏÇϴ ȣÃâÀÚ Á¦°ø º¯¼ö¸¦ °¡¸®Å²´Ù. ÀÌ ¸Å°³º¯¼ö´Â NULLÀÌ µÉ ¼ö ÀÖ´Ù.
- TotalPacketLength
- ÀÌ ÇÔ¼ö´Â ¸ðµç ¿¬°áµÈ ¹öÆÛ µð½ºÅ©¸³Å͵鿡 ÀÇÇØ ¸ÊµÈ ÆÐŶ µ¥ÀÌÅÍÀÇ ¹ÙÀÌÆ® ¼ö¸¦ ¸®ÅÏÇϴ ȣÃâÀÚ Á¦°ø º¯¼ö¸¦ °¡¸®Å²´Ù. ÀÌ ¸Å°³º¯¼ö´Â NULLÀÌ µÉ ¼ö ÀÖ´Ù.
ÁÖ¼®
NdisQueryPacketÀº ÁÖ¾îÁø ÆÐŶ¿¡ ´ëÇØ È£ÃâÀÚ ¼±Åà Á¤º¸¸¦ ¸®ÅÏÇÑ´Ù. È£ÃâÀÚ´Â Àû¾îµµ Packet ¸Å°³º¯¼ö¿¡ µû¶ó PhysicalBufferCount, BufferCount, FirstBuffer, TotalPacketLength Æ÷ÀÎÅ͵éÀÇ Àû¾îµµ Çϳª¸¦ ÁöÁ¤ÇØ¾ß ÇÑ´Ù. È£ÃâÀÚ´Â ¸ðµç ¸Å°³º¯¼öµéÀ» À§ÇØ ¿Ü¿¬ÀûÀ¸·Î Æ÷ÀÎÅ͵éÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù.
¿Ü¿¬ÀûÀ¸·Î PhysicalBufferCount Æ÷ÀÎÅ͸¦ ÁöÁ¤ÇÏ´Â °ÍÀº ÆÐŶ µð½ºÅ©¸³Åͳ»¿¡ °¢ ¹öÆÛ µð½ºÅ©¸³Å͸¦ À§ÇØ NdisGetBufferPhysicalArraySize¿¡ ´ëÇÑ È£ÃâµéÀ» summing ÇÏ´Â °Í°ú µ¿µîÇÏ´Ù. µå¶óÀ̹ö´Â ¸¸¾à È£ÃâÀÌ ÆÐŶ µð½ºÅ©¸³ÅͰ¡ µ¥ÀÌÅͰ¡ ¾ø´Ù´Â °ÍÀ» °¡¸®Å°´Â 0À» ¸®ÅÏÇÏÁö ¾Ê´Â´Ù¸éÀº üÀγ»¿¡¼ ¾î¶² °è¼ÓµÈ ¹öÆÛ µð½ºÅ©¸³Å͵鿡 ´ëÇÑ Æ÷ÀÎÅ͵éÀ» °Ë»öÇϴµ¥ ÇÊ¿äÇÑ ¸¸Å ¿©·¯¹ø NdisGetNextBuffer¸¦ È£ÃâÇÒ ¼ö ÀÖ´Ù.
¸¸¾à È£ÃâÀÚ°¡ ¿Ü¿¬ÀûÀÎ BufferCount Æ÷ÀÎÅ͸¦ Á¦°øÇÑ´Ù¸éÀº, NdisQueryPacketÀº ÆÐŶ üÀγ»¿¡¼ ¹öÆÛ µð½ºÅ©¸³Å͵éÀÇ ¼ö¸¦ ¸®ÅÏÇÑ´Ù. ¸®ÅÏµÈ °ªÀº NdisUnchainBufferXxx ÇÔ¼öµéÀÇ ¾î¶°ÇÑ °ÍÀ¸·Î üÀγ»¿¡ ¹öÆÛ µð½ºÅ©¸³Å͵éÀ» °Ë»öÇϱâ À§ÇØ loop Ä«¿îÅ͵é·Î »ç¿ëµÇ¾îÁú ¼ö ÀÖ´Ù.
¸¸¾à È£ÃâÀÚ°¡ ¿Ü¿¬ÀûÀÎ FirstBuffer Æ÷ÀÎÅ͸¦ Á¦°øÇÏÁö¸¸Àº ÆÐŶÀÇ ¹öÆÛ üÀÎÀÌ ºó´Ù¸éÀº, NdisQueryPacketÀº FirstBufferÀº NULLÀ» ¸®ÅÏÇÑ´Ù. ±×·¸Áö ¾Ê´Ù¸éÀº, È£ÃâÀÚ´Â ÆÐŶÀ» À§ÇØ ÃʱâÈµÈ ¹öÆÛ µð½ºÅ©¸³ÅÍ¿¡ ´ëÇØ ÀÚ¼¼ÇÑ Á¤º¸¸¦ ¾ò±â À§ÇØ °è¼ÓÇØ¼ NdisQueryBuffer¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ´õ ºü¸¥ ´ë¾ÈÀ¸·Î, µå¶óÀ̹öµéÀº Ãʱ⠹öÆÛ µð½ºÅ©¸³ÅÍ¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ ¾ò±â À§ÇØ NdisGetFirstBufferFromPacket ÇÔ¼ö¸¦ È£ÃâÇÒ ¼ö ÀÖ´Ù.
¸¸¾à È£ÃâÀÚ°¡ ¿Ü¿¬ÀûÀÎ TotalPacketLength Æ÷ÀÎÅ͸¦ Á¦°øÇÑ´Ù¸éÀº, NdisQueryPacket ÇÔ¼ö´Â ÁÖ¾îÁø ÆÐŶ¿¡ ¿¬°áµÈ ¸ðµç ¹öÆÛ µð½ºÅ©¸³ÅÍ¿¡ ÀÇÇØ ÁöÁ¤µÈ ¹ÙÀÌÆ®µéÀÇ ÃÑ ¼ö¸¦ ¸®ÅÏÇÑ´Ù.
NdisQueryPacketÀÇ È£ÃâÀÚµéÀº ¾î¶² IRQL¿¡¼ ½ÇÇàÇÒ ¼ö ÀÖ´Ù.
|