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º¸´Ù ÀÛÀº ·¹º§¿¡¼ µ¿ÀÛÇÑ´Ù.
|