NdisAllocatePacketPool
VOID
NdisAllocatePacketPool(
OUT PNDIS_STATUS Status,
OUT PNDIS_HANDLE PoolHandle,
IN UINT NumberOfDescriptors,
IN UINT ProtocolReservedLength
);
|
NdisAllocatePacketPoolÀº ÆÐŶ µð½ºÅ©¸³Å͵éÀÇ Ç®(pool)À» À§ÇÑ ÀúÀå ¿µ¿ª(block)¸¦ ÇÒ´çÇϰí ÃʱâÈÇÑ´Ù.
¸Å°³º¯¼ö
- Status
- ÀÌ ÇÔ¼ö°¡ ÆÐŶ Ç®(pool) ÇÒ´ç¿¡ ´ëÇÑ »óŸ¦ ¸®ÅÏÇϴ ȣÃâÀÚ Á¦°ø º¯¼ö¸¦ °¡¸®Å²´Ù. ´ÙÀ½°ú °°Àº °ªµéÀÌ ¿Â´Ù.
- NDIS_STATUS_SUCCESS
- µå¶óÀ̹ö´Â NdisAllocatePacketÈ£ÃâÀ» »óÀ§ ·¹º§ µå¶óÀ̹öµé·Î ÀεðÄÉÀ̼ǵéÀ» ¿Ã¸®±â À§ÇØ ÆÐŶ µð½ºÅ©¸³Å͵éÀ» ÇÊ¿äÇÒ ¶§ ȤÀº ÇÏÀ§ ·¹º§ µå¶óÀ̹öµé¿¡°Ô ÆÐŶµéÀ» ¾Æ·¡·Î º¸³»±â À§ÇØ ÆÐŶ µð½ºÅ©¸³Å͵éÀÌ ÇÊ¿äÇÒ ¶§ ÇÒ ¼ö ÀÖ´Ù.
- NDIS_STATUS_RESOURCES
- ÆÐŶ Ç®(pool)À» ÇÒ´çÇϱâ À§ÇÑ ½Ãµµ°¡ ¸Þ¸ð¸® ºÎÁ·¿¡ ¶§¹®¿¡ ½ÇÆÐÇÑ´Ù. À̰ÍÀº ¹Ýµå½Ã ¿¬¼ÓÀûÀΠȣÃâÀÌ ½ÇÆÐÇÒ °ÍÀ̶ó´Â °ÍÀ» ÀǹÌÇÏÁö´Â ¾Ê´Â´Ù. ±×·¯³ª, È£ÃâÀÚ´Â NumberOfDescriptors¸¦ ÁÙÀÌ°í ´Ù½Ã Áï½Ã È£ÃâÇØ¾ß ÇÑ´Ù.
- PoolHandle
- ÀÌ ÇÔ¼ö´Â ÆÐŶ Ç®(pool)¿¡ ´ëÇÑ ÇÚµéÀ» ¸®ÅÏÇϴ ȣÃâÀÚ Á¦°ø º¯¼ö¸¦ °¡¸®Å²´Ù. ÀÌ ÇÚµéÀº µå¶óÀ̹ö°¡ °è¼ÓÇØ¼ È£ÃâÇÏ´Â Ndis...Packet ÇÔ¼öµé¿¡ ´ëÇÑ ÇÊ¿äÇÑ ¸Å°³º¯¼öÀÌ´Ù.
- NumberOfDescriptors
- Ç®(pool)ÀÌ Æ÷ÇÔÇÏ´Â ÆÐŶ µð½ºÅ©¸³ÅÍ ¼ö¸¦ ÁöÁ¤ÇÑ´Ù.
- ProtocolReservedLength
- °¢ ÆÐŶ µð½ºÅ©¸³ÅÍÀÇ ProtocolReserved¸¦ À§ÇØ ÇÒ´çµÇ¾îÁö´Â ¹ÙÀÌÆ® ¼ö¸¦ ÁöÁ¤ÇÑ´Ù. ¸®½Ãºê ÀεðÄÉÀ̼ǿ¡¼ »ç¿ëµÇ¾îÁö´Â ÆÐŶ µð½ºÅ©¸³Å͵éÀ» À§ÇØ, ÀÌ ¸Å°³º¯¼ö´Â Àû¾îµµ 16(¹ÙÀÌÆ®)°¡ µÉ °ÍÀÌ´Ù.
ÁÖ¼®
NdisAllocatePacketPool¿¡ ´ëÇÑ ¼º°øÀûÀΠȣÃâÀº ÆÐŶ Ç®(pool)¿¡ ´ëÇÑ ÇÚµéÀ» ¸®ÅÏÇÑ´Ù. È£ÃâÀÚ´Â ÀÌ °ªÀ» ÀúÀåÇØ¾ß ÇÑ´Ù. Ç×»ó, µå¶óÀ̹ö´Â ´ÙÀ½¿¡ ÆÐŶ µð½ºÅ©¸³Å͵éÀ»(a set of packt descriptors) ÇÒ´çÇϱâ À§ÇØ ÀÌ ÇÚµéÀ» °¡Áö°í ÇѹøÀ̳ª ¿©·¯¹ø NdisAllocatePacketÀ» È£ÃâÇÑ´Ù. NdisAllocatePacketPool¿¡ ´ëÇÑ È£Ãâ·Î ÁöÁ¤µÈ NumberOfDescriptorsÀº NdisFreePacketÀ» È£ÃâÇØ¼ ÆÐŶ Ç®(pool)¸¦ À§ÇØ ÇÁ¸® ¸®½ºÆ®(free list)¿¡ ´ëÇÑ ÆÐŶ µð½ºÅ©¸³Å͸¦ ¸®ÅÏÇϱâ Àü¿¡ µå¶óÀ̹ö´Â NdisAllocatePacket¸¦ È£ÃâÇÒ ¼ö ÀÖ´Â ¼ö¿¡ ´ëÇÑ È¿À²ÀûÀÎ Á¦ÇÑÀÌ´Ù.
º¸³»°í ȤÀº ÀεðÄÉÀÌÆ®µÇ´Â ÆÐŶµéÀÌ ÇÒ´çÇÑ µå¶óÀ̹ö¿¡ ¸®ÅϵǾîÁö¸éÀº °¢ ÆÐŶ µð½ºÅ©¸³ÅÍ´Â NdisReinitializePacket À» È£ÃâÇÏ°í ´Ù½Ã ¹öÆÛ µð½ºÅ©¸³Å͵é üÀο¡ ¼³Á¤ÇÑ ÈÄ Àç »ç¿ëÇÒ ¼ö ÀÖ°í ȤÀº NdisFreePacketÀ» È£ÃâÇÏ¿© ÇÁ¸® ¸®½ºÆ®(free list)¿¡ ´ëÇÑ ±×·¯ÇÑ ÆÐŶÀ» ¸®ÅÏÇÒ ¼ö ÀÖ´Ù. ÆÐŶ Ç®(pool)·ÎºÎÅÍ ÇÒ´çµÈ ÆÐŶµéÀ» ÀçÃʱâÈÇϰí Àç»ç¿ëÇÏ´Â °ÍÀº ÇØÁ¦Çؼ ´Ù½Ã ÀçÇÒ´ç ÇÏ´Â °Íº¸´Ù ÈξÀ ºü¸£´Ù. µå¶óÀ̹ö°¡ ÆÐŶ µð½ºÅ©¸³ÅÍ·Î NdisReinitializePacketÀ» È£ÃâÇϱâ Àü¿¡ NdisReinitializePacketÀÌ ¹öÆÛ üÀÎÀÇ Çìµå¸¦ NULL·Î ¼³Á¤ÇÑ ÈÄ ÆÐŶ µð½ºÅ©¸³ÅÍ¿¡ ¿¬°áµÈ(chained) ¹öÆÛ µð½ºÅ©¸³Å͵鿡 ´ëÇÑ Æ÷ÀÎÅ͵éÀ» ¿¬°áÇØ¾ß ÇÑ´Ù.
µå¶óÀ̹ö°¡ ´õ ÀÌ»ó ÆÐŶ Ç®(pool)À» ÇÊ¿äÇÏÁö ¾Ê´Â´Ù¸éÀº, NdisFreePacketPoolÀ» È£ÃâÇØ¼ ÆÐŶ Ç®(pool)ÀúÀå°ø°£À» ÇØÁ¦ÇØ¾ß ÇÑ´Ù.
NdisAllocatePacketPool¿¡ ´ëÇÑ È£ÃâÀÚ´Â IRQL <= DISPATCH_LEVEL¿¡¼ ½ÇÇàÇÑ´Ù.
|