NdisAllocateBufferPool
VOID
NdisAllocateBufferPool(
OUT PNDIS_STATUS Status,
OUT PNDIS_HANDLE PoolHandle,
IN UINT NumberOfDescriptors
);
|
NdisAllocateBufferPoolÀº È£ÃâÀÚ°¡ NdisAllocateBuffer¸¦ È£ÃâÇÔÀ¸·Î½á ¹öÆÛ µð½ºÅ©¸³Å͵éÀ» ÇÒ´çÇÒ ¼ö ÀÖ´Â ÇÚµéÀ» ¸®ÅÏÇÑ´Ù.
¸Å°³º¯¼ö
- Status
- ÀÌ ÇÔ¼ö´Â Ç×»ó NDIS_STATUS_SUCCESSÀÎ ¹öÆÛ Ç®(pool) ÇÒ´ç¿¡ ´ëÇÑ ¸¶Áö¸· »óŸ¦ ¸®ÅÏÇϴ ȣÃâÀÚ Á¦°ø º¯¼ö¸¦ °¡¸®Å²´Ù.
- PoolHandle
- ÀÌ ÇÔ¼ö´Â ¹öÆÛ Ç®(pool)¿¡ ´ëÇÑ ÇÚµéÀ» ¸®ÅÏÇϴ ȣÃâÀÚ Á¦°ø º¯¼ö¸¦ °¡¸®Å²´Ù. ÀÌ ÇÚµéÀº µå¶óÀ̹ö °è¼ÓÇØ¼ È£ÃâÇÏ´Â Ndis...Buffer¿¡ ´ëÇÑ Á¦°øµÈ ¸Å°³º¯¼öÀÌ´Ù.
- NumberOfDescriptors
- ¾î¶² ÇÒ´çµÈ ¹öÆÛ µð½ºÅ©¸³ÅͰ¡ Ç®(pool)·Î µÇµ¹·Á ÇØÁ¦ÇÏ´Â °Í ¾øÀÌ ¹öÆÛ Ç®(pool)·ÎºÎÅÍ È£ÃâÀÚ°¡ ÇÒ´çÀ» ±â´ëÇÏ´Â ¹öÆÛ µð½ºÅ©¸³Å͵éÀÇ ¼ö¸¦ ÁöÁ¤ÇÑ´Ù.
ÁÖ¼®
NdisAllocateBufferPool¸¦ ¸®ÅÏÇÑ ÈÄ, µå¶óÀ̹ö´Â ¿ä±¸ÇÑ ¹öÆÛ µð½ºÅ©¸³Å͵éÀ» Çϳª³ª ±× ÀÌ»ó ÇÒ´çÇϱâ À§ÇØ NdisAllocateBuffer¸¦ È£ÃâÇÑ´Ù.
NIC µå¶óÀ̹ö¿¡ ÀÇÇØ ÁöÁ¤µÈ NumberOfDescriptors´Â NICÀÇ Æ¯Â¡µé¿¡ ÀÇÁ¸ÇÑ´Ù. ¿¹¸¦ µé¾î, ¸µ ¹öÆÛµéÀ» °¡Áö´Â ¹ö½º¸¶½ºÅÍ DMA NICÀÇ µå¶óÀ̹ö´Â Àû¾îµµ Ç®(full) ¸µÀ» ¸ÊÇϱâ À§ÇØ ¸Å¿ì ÃæºÐÇÑ NumberOfDescriptors¸¦ ÁöÁ¤ÇØ¾ß ÇÑ´Ù.
NdisAllocateBufferPool¿¡ ´ëÇÑ È£Ãâ·Î ÁöÁ¤µÈ NumberOfDescriptorsÀº NdisFreeBuffer¸¦ È£ÃâÇØ¼ ¹öÆÛ Ç®(pool)¸¦ À§ÇØ ÇÁ¸® ¸®½ºÆ®(free list)·Î ¹öÆÛ µð½ºÅ©¸³Å͵éÀ» ¸®ÅÏÇϱâ Àü¿¡ NdisAllocateBuffer¸¦ ¸î¹ø È£ÃâÇÒ ¼ö ÀÖ´Â Áö¸¦ °áÁ¤ÇÏ´Â È¿À²ÀûÀÎ Á¦ÇÑÀÌ´Ù.
µå¶óÀ̹ö°¡ ´õ ÀÌ»ó ÇÒ´ç µÈ ¹öÆÛ Ç®(pool)ÀÌ ÇÊ¿äÇÏÁö ¾Ê´Â´Ù¸é, NdisFreeBufferPool¸¦ È£ÃâÇØ¼ ¹öÆÛ Ç®(pool) ÇÚµéÀ» ÇØÁ¦ÇÑ´Ù.
µå¶óÀ̹ö´Â NdisAllocateBufferPool¸¦ È£ÃâÇϱâ Àü¿¡ À¯ÁöÇÑ ¾î¶² ½ºÇÉ ¶ôÀ» ÇØÁ¦ÇØ¾ß ÇÑ´Ù.
¸ðµç ³·Àº ·¹º§ NDIS µå¶óÀ̹öµéÀº ±×µéÀÌ ¹öÆÛ Ç®(pool)·ÎºÎÅÍ ÆÐŶµéÀ» ¿¬°áÇÏ´Â ¸ðµç ¹öÆÛ µð½ºÅ©¸³Å͵éÀ» ÇÒ´çÇØ¾ß ÇÑ´Ù. ´ÜÁö ³ôÀº ·¹º§ ÇÁ·ÎÅäÄÝ µå¶óÀ̹öµéÀº °¡»ó ¸Þ¸ð¸® ¹üÀ§µéÀ» ¸ÊÇÎÇÏ´Â OS-ÀÇÁ¸ µð½ºÅ©¸³Å͵éÀÌ Á¦°øµÉ ¼ö ÀÖ´Ù. ¸¸¾à ÀÌ·¯ÇÑ ¸Þ¸ð¸® µð½ºÅ©¸³Å͵éÀÌ NDIS ¹öÆÛ µð½ºÅ©¸³Å͵é°ú µ¿µîÇϸéÀº(equivalent) ³ôÀº ·¹º§ ÇÁ·ÎÅäÄÝÀº ±×·¯ÇÑ µð½ºÅ©¸³Å͵éÀ» NdisXxx ÇÔ¼öµé¿¡°Ô ¸Å°³º¯¼ö·Î Àü´ÞÇÒ ¼ö ÀÖ´Ù.
NdisAllocateBufferPool¿¡ ´ëÇÑ È£ÃâÀÚ´Â IRQL <= DISPATCH_LEVEL·Î ½ÇÇàµÈ´Ù.
|