NdisAllocatePacketPoolEx

VOID

  NdisAllocatePacketPoolEx(

    OUT PNDIS_STATUS  Status,

    OUT PNDIS_HANDLE  PoolHandle,

    IN UINT  NumberOfDescriptors,

    IN UINT  NumberOfOverflowDescriptors,

    IN UINT  ProtocolReservedLength

    );

NdisAllocatePacketPoolEx´Â ÆÐŶµð½ºÅ©¸³ÅÍÀÇ Ç®¿¡´ëÇÑ ÀúÀåºí·°À» ÇÒ´çÇϰí ÃʱâÈ­ÇÑ´Ù.

¸Å°³º¯¼ö

Status
ÀÌÇÔ¼ö´Â ÆÐŶǮÇÒ´ç¿¡´ëÇÑ »óŸ¦ ¸®ÅÏÇϴ ȣÃâÀÚÁ¦°øº¯¼öÀÇ Æ÷ÀÎÅÍÀ̰í, ´ÙÀ½Áß ÇϳªÀϼö ÀÖ´Ù.

NDIS_STATUS_SUCCESS
»óÀ§·¹º§µå¶óÀ̹ö·ÎÀÇ ÀεðÄÉÀ̼ÇÀ» ¸¸µé±âÀ§ÇÑ ÆÐŶµð½ºÅ©¸³ÅͰ¡ ÇÊ¿äÇÒ¶§, ȤÀº ÇÏÀ§·¹º§µå¶óÀ̹ö¿¡°Ô ÆÐŶÀ» ³»·Áº¸±âÀ§ÇÑ ÆÐŶµð½ºÅ©¸³ÅͰ¡ ÇÊ¿äÇÒ¶§ µå¶óÀ̹ö´Â NdisAllocatePacket¿¡´ëÇÑ È£ÃâÀ» ¸¸µé¼ö ÀÖ´Ù.

NDIS_STATUS_RESOURCES
¸Þ¸ð¸®ºÎÁ·ÀÏ °¡´ÉÀ¸·Î ÆÐŶǮÀ» ÇÒ´çÇϱâÀ§ÇÑ ½Ãµµ°¡ ½ÇÆÐÇß´Ù. ÀÌ ¸®ÅÏÀº ²À µÚÀ̾î ÀϾ´Â È£ÃâÀÌ ½ÇÆÐÇÑ´Ù´Â °ÍÀ» ÀǹÌÇÏÁö ¾Ê´Â´Ù. ±×·¯³ª È£ÃâÀÚ´Â NumberOfDescriptors¸¦ ÁÙÀÌ·Á´Â ½Ãµµ¸¦ ÇÒÁö ¸ð¸£°í Áï½Ã È£ÃâÇÒÁö ¸ð¸¥´Ù.

PoolHandle
ÀÌÇÔ¼ö°¡ ÆÐŶǮ¿¡´ëÇÑ ÇÚµéÀ» ¸®ÅÏÇÒ¶§ÀÇ È£ÃâÀÚ°¡ Á¦°øÇÑ º¯¼öÀÇ Æ÷ÀÎÅÍ. ÀÌÇÚµéÀº µå¶óÀ̹ö°¡ ³ªÁß¿¡ È£ÃâÇÏ´Â Ndis..PacketÇÔ¼öµé¿¡°Ô ÇÊ¿äÇÑ ÆÄ¶ó¹ÌÅÍÀÌ´Ù.

NumberOfDescriptors
Ç®ÀÌ ¿¹»óµÈ º¸ÅëÀÇ »ç¿ë¿¡´ëÇØ¼­ Æ÷ÇÔÇØ¾ßÇÏ´Â ÆÐŶµð½ºÅ©¸³ÅÍÀÇ ¼ö¸¦ ³ªÅ¸³½´Ù. ÇÒ´çµÇ¾îÁú¼ö ÀÖ´Â ÃÖ´ëNumberOfDescriptors ´Â 0xFFFFÀÌ´Ù. ¸¸¾à ½Ãµµ°¡ À̰ͺ¸´Ù ´õ¸¹Àº °ÍÀ» ÇÒ´çÇÏ·ÁÇÑ´Ù¸é, NdisAllocatePacketPoolEx´Â NDIS_STATUS_RESOURCESÀÇ »óŸ¦ ¸®ÅÏÇÒ °ÍÀÌ´Ù.

NumberOfOverflowDescriptors
¿¹Á¤µÈ ¿À¹öÇ÷¯¿ì»óȲ¿¡´ëÇÑ ÆÐŶµð½ºÅ©¸³Å͸¦ÀÇ ¼ö¸¦ ³ªÅ¸³½´Ù(Áï, NumberOfDescriptors¿¡ ÀÇÇØ Á¤ÇØÁø ¸ðµç µð½ºÅ©¸³ÅͰ¡ »ç¿ëÁßÀ϶§). ¸¸¾à ÀÌÆÄ¶ó¹ÌÅÍ¿Í(NumberOfDescriptors ??) NumberOfOverflowDescriptorsÀÇ ÇÕÀÌ 0xFFFF¸¦ ³Ñ´Â´Ù¸é, NdisAllocatePacketPoolEx´Â NumberOfDescriptors¿Í NumberOfOverflowDescriptorsÀÇ ÇÕÀÌ 0xFFFF°¡ µÇµµ·Ï ÇϱâÀ§Çؼ­ ÀÌÆÄ¶ó¹ÌÅͷνá Á¦°øµÈ °ªÀ» ÁÙÀδÙ.

ProtocolReservedLength
°¢ ÆÐŶµð½ºÅ©¸³ÅÍÀÇ ProtocolReserved¹è¿­¿¡ ´ëÇÑ ÇÒ´çµÈ ¹ÙÀÌÆ®ÀÇ ¼ö¸¦ ³ªÅ¸³½´Ù. ¸®½ÃºêÀεðÄÉÀ̼ǿ¡¼­ »ç¿ëµÈ ÆÐŶµð½ºÅ©¸³ÅÍ¿¡ ´ëÇØ ÀÌÆÄ¶ó¹ÌÅÍ´Â ÃÖ´ë 16(¹ÙÀÌÆ®)Àϼö ÀÖ´Ù.

ÁÖ¼®

NdisAllocatePacketPoolExÀÇ ¼º°øÀûÀΠȣÃâÀº ÆÐŶǮÀÇ ÇÚµéÀ» ¸®ÅÏÇÑ´Ù. È£ÃâÀÚ´Â ÀúÀåÇØ¾ß¸¸ ÇÑ´Ù. ÀϹÝÀûÀ¸·Î, µå¶óÀ̹ö´Â ´ÙÀ½¿¡ NdisAllocatePacketÀ» ÆÐŶµð½ºÅ©¸³ÅÍÀÇ ¼³Á¤À» ÇÒ´çÇϱâÀ§ÇØ ÀÌÇÚµé·Î Çѹø ȤÀº ¿©·¯¹ø È£ÃâÇÏ´Ù.

NdisAllocatePacketPoolExÀº NumberOfDescriptors¿¡ÀÇÇØ ¼³Á¤µÈ ÆÐŶµð½ºÅ©¸³ÅÍÀǼö¸¦ ¼ö¿ëÇϱâÀ§ÇÑ ÃæºÐÇÑ ¸Þ¸ð¸¦ Á¤ÀûÀ¸·Î ÇÒ´çÇÑ´Ù. NdisAllocatePacketÀÇ È£Ãâ·Î Ç®·ÎºÎÅÍ ÇÒ´çµÉ ¼ö ÀÖ´Â ÆÐŶµð½ºÅ©¸³ÅÍÀÇ ÃÑ ¼ö´Â 0xFFFFº¸´Ù À۰ųª ȤÀº NdisAllocatePacketPoolEx¿¡ óÀ½¿¡ ³Ñ°ÜÁØ NumberOfDescriptors¿Í NumberOfOverflowDescriptorsÀÇ ÇÕº¸´Ù ÀÛ´Ù. ¿À¹öÇ÷ξîµð½ºÅ©¸³Å͵éÀº ¿À¹öÇ÷ξî»óȲ¿¡¼­ µ¿ÀûÀ¸·Î ÇÒ´çµÈ´Ù. - Áï, ÁÖ¾îÁø NumberOfDescriptors°¡ ÀÌ¹Ì ÇÒ´çµÇ°í ¿©ÀüÈ÷ »ç¿ëÁßÀ϶§.

µå¶óÀ̹ö°¡ ÆÐŶǮ¿¡´ëÇØ¼­ ÆÐŶµð½ºÅ©¸³Å͸¦ ÇÁ¸®¸®½ºÆ®¿¡ ¸®ÅÏÇϱâÀ§Çؼ­ NdisFreePacketÈ£ÃâÇϱâÀü¿¡ NumberOfDescriptors ¿Í NumberOfOverflowDescriptorsÀÇ ÇÕÀº µå¶óÀ̹ö°¡ NdisAllocatePacket¸¦ ¾ó¸¶³ª È£ÃâÇÒ¼ö ÀÖ´ÂÁö¿¡ ´ëÇÑ ½ÇÁ¦ÀûÀÎ Á¦ÇÑÀÌ´Ù.

NdisAllocatePacketPoolExÀÇ È£ÃâÀÚ´Â ¿¹»óµÇ´Â º¸ÅëÀÇ ·Îµå¿¡ ´ëÇØ¼­ ¿ä±¸µÇ¾îÁö´Â ÆÐŶµð½ºÅ©¸³ÅÍÀÇ ¼ö·Î NumberOfDescriptors¸¦ ¼³Á¤Çؾ߸¸ ÇÑ´Ù. µå¶óÀ̹ö´Â ¿¹»óµÇ´Â ÃÖ´ë ÇÇÅ©·Îµå¸¦ ¼ö¿ëÇϱâÀ§ÇØ ÇÊ¿äÇÑ Ãß°¡ÀûÀÎ µð½ºÅ©¸³Å͵éÀÇ ¼ö·Î NumberOfOverflowDescriptors¸¦ ¼³Á¤ÇؾßÇÑ´Ù. ¸¸¾à ÃѰ¡´ÉÇÑ ÆÐŶµð½ºÅ©¸³ÅÍÀÇ ¼ö(NumberOfDescriptors ´õÇϱâ NumberOfOverflowDescriptors)´Â Ç®·ÎºÎÅÍ ÇÒ´çµÇ¾ú´Ù¸é NdisAllocatePacketÀÇ È£ÃâÀº NDIS_STATUS_RESOURCES¸¦ ¸®ÅÏÇÑ´Ù.

º¸³»Áö°í ÀεðÄÉÀÌÆ®µÈ ÆÐŶÀÌ ÇÒ´çÇÑ µå¶óÀ̹ö·Î ¸®ÅϵÆÀ»¶§, µå¶óÀ̹ö´Â NdisReinitializePacket¸¦ È£ÃâÇÏ°í ¹öÆÛµð½ºÅ©¸³ÅÍÀÇ Ã¼ÀÎÀ¸·Î ´Ù½Ã ¼³Á¤ÇÑÈÄ °¢ÆÐŶµð½ºÅ©¸³Å͸¦ ´Ù½Ã »ç¿ëÇÒ ¼ö ÀÖ°í ȤÀº µå¶óÀ̹ö´Â ÇÁ¸®¸®½ºÆ®¿¡ ±×ÆÐŶÀ» ¸®ÅÏÇÏ´Â NdisFreePacket¸¦ È£ÃâÇÒ¼ö ÀÖ´Ù. ÆÐŶǮ·ÎºÎÅÍ ÇÒ´çµÈ ´Ù½ÃÃʱâÈ­ÇÏ°í ´Ù½Ã»ç¿ëÇÏ´Â ÆÐŶµéÀº freeingÇϰí ÀçÇÒ´çÇϴ°ͺ¸´Ù ÈξÀ ºü¸£´Ù. µå¶óÀ̹ö°¡ ÆÐŶµð½ºÅ©¸³Å͸¦ °¡Áö°í NdisReinitializePacketÀ» È£ÃâÇϱâÀü¿¡, ÆÐŶµð½ºÅ©¸³·Î üÀÎµÈ ¹öÆÛµð½ºÅ©¸³ÅÍ¿¡ ±× Æ÷ÀÎÅ͸¦ ÀúÀåÇØ¾ß¸¸ÇÑ´Ù.

¿Ö³ÄÇϸé NdisReinitializePacketÀº ¹öÆÛüÀÎÀÇ Çìµå¸¦ ³Î·Î ¼³Á¤Çϱ⶧¹®¿¡ µå¶óÀ̹ö°¡ ´õÀÌ»ó ÆÐŶµð½ºÅ©¸³Å͸¦ ¿ä±¸ÇÏÁö¾ÊÀ»¶§,µå¶óÀ̹ö´Â NdisAllocatePacketPoolEx·Î ÇÒ´çÇÑ ÀúÀå°ø°£À» ÇØÁ¦ÇϱâÀ§ÇØ NdisFreePacketPoolÀ» È£ÃâÇÑ´Ù.

NdisAllocatePacketPoolExÀÇ È£ÃâÀÚµéÀº DISPATCH_LEVELº¸´Ù ÀÛÀº ·¹º§¿¡¼­ µ¿ÀÛÇÑ´Ù.