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¿¡¼­ ½ÇÇàÇÒ ¼ö ÀÖ´Ù.