NdisCopyBuffer

VOID

  NdisCopyBuffer(

    OUT PNDIS_STATUS  Status,

    OUT PNDIS_BUFFER  *Buffer,

    IN NDIS_HANDLE  PoolHandle,

    IN PVOID  MemoryDescriptor,

    IN UINT  Offset,

    IN UINT  Length

    );

NdisCopyBufferÇÔ¼ö´Â ÁöÁ¤µÈ °¡»ó(ÇÏÀ§)¹üÀ§¿¡´ëÇÑ ¹öÆÛ µð½ºÅ©¸³ÅÍ, ºí·°¿¡´ëÇÑ ¸Þ¸ð¸® µð½ºÅ©¸³ÅÍ¿¡´ëÇÑ Æ÷ÀÎÅÍ¿Í ÀÌ¹Ì ÇÒ´çµÈ ºí·°¿¡´ëÇÑ ÁÖ¾îÁø ÇÚµéÀ» »ý¼ºÇÑ´Ù.

¸Å°³º¯¼ö

Status
ÀÌ ÇÔ¼ö°¡ ¹öÆÛ µð½ºÅ©¸³ÅÍ Ä«ÇÇ ¿¬»êÀÇ ¸¶Áö¸· »óŸ¦ ¸®ÅÏÇϴ ȣÃâÀÚ ÇÒ´ç Æ÷ÀÎÅÍ. ´ÙÀ½Áß ÇϳªÀϼö ÀÖ´Ù.:

NDIS_STATUS_SUCCESS
µå¶óÀ̹ö´Â ¹öÆÛµð½ºÅ©¸³ÅÍȤÀº ¹öÆÛµð½ºÅ©¸³ÅÍ Ã¼ÀÎÀ» »ç¿ëÇÒ¼ö ÀÖ´Ù.

NDIS_STATUS_FAILURE
ÁÖ¾îÁø ¹üÀ§¸¦ ¸ÊÇϴµ¥ ½ÇÆÐÇß´Ù. ¿É¼Â°ú ±æÀÌ ÁöÁ¤ÀÌ Á¤È®ÇÏÁö ¾Ê±â ¶§¹®Àϼö ÀÖ´Ù.

Buffer
ÀÌ ÇÔ¼ö°¡ È£ÃâÀÌ ¼º°øÀ̶ó¸é »õ·Î¿î ¹öÆÛ¿¡´ëÇÑ Æ÷ÀÎÅ͸¦ ¸®ÅÏÇÏ´Â °Í¿¡¼­ÀÇ È£ÃâÀÚ ÇÒ´ç ¹öÆÛ¸¦ ÁöÁ¤ÇÑ´Ù.

PoolHandle
NdisAllocateBufferPoolÇÔ¼öÀÇ ÀÌÀüÀÇ È£Ãâ¿¡ÀÇÇØ ¸®ÅÏµÈ ÇÚµéÀ» ÁöÁ¤ÇÑ´Ù.

MemoryDescriptor
NDIS_BUFFERÀϼö ÀÖ´Â ¸Þ¸ð¸® µð½ºÅ©¸³ÅÍÀÇ Æ÷ÀÎÅÍ.

Offset
Ä«ÇǸ¦ ½ÃÀÛÇÏ´Â ¸Þ¸ð¸® ºí·°³»ÀÇ ¹ÙÀÌÆ® ¿É¼ÂÀ» ÁöÁ¤ÇÑ´Ù.

Length
Ä«ÇÇÇϱâÀ§ÇÑ ¹ÙÀÌÆ®¼ö¸¦ ÁöÁ¤ÇÑ´Ù.

ÁÖ¼®

NdisCopyBufferÇÔ¼ö´Â ÁÖ¾îÁø ¸Þ¸ð¸® µð½ºÅ©¸³ÅÍ¿¡ÀÇÇØ ¼³¸íµÈ ¸Þ¸ð¸® ºí·°³»ÀÇ (¼­ºê)¹üÀ§¸¦ ¸ÊÇÎÇÏ´Â ¹öÆÛ µð½ºÅ©¸³Å͸¦ »ý¼ºÇÑ´Ù. ÀÌ ÇÔ¼ö´Â »õ·Õ´© ¹öÆÛ µð½ºÅ©¸³ÅÍ¿¡´ëÇÑ °ø°£À» ÇÒ´çÇÑ´Ù. ±×¸®°í ÁÖ¾îÁø MemoryDescriptor·ÎºÎÅÍ »õ·Î¿î ¹öÆÛ µð½ºÅ©¸³ÅÍ·Î º¹»çÇÑ´Ù.

¸¸¾à ÁÖ¾îÁø ¸Þ¸ð¸® µð½ºÅ©¸³ÅͰ¡ üÀÎµÈ ¿ä¼ÒµéÀ» Æ÷ÇÔÇÑ´Ù¸é, NdisCopyBufferÇÔ¼ö°¡ »ý¼ºÇÏ´Â ¹öÆÛ µð½ºÅ©¸³ÅÍ´Â ¹öÆÛµð½ºÅ©¸³¶u¸£ÀÇ Ã¼ÀÎÀÇ ÇìµåÀϼö ÀÖ´Ù. µå¶óÀ̹ö´Â NdisGetNextBufferÇÔ¼ö¸¦ È£ÃâÇÒ ¼ö ÀÖ´Ù. ±×¸®°í °¢ üÀÎµÈ ¹öÆÛ µð½ºÅ©¸³Å͸¦ Äõ¸®ÇϱâÀ§ÇØ NdisQueryBufferSafeÇÔ¼ö ȤÀº NdisQueryBufferÇÔ¼ö¸¦ È£ÃâÇÒ¼ö ÀÖ´Ù.

µå¶óÀ̹ö´Â NdisCopyBufferÇÔ¼öÀÇ È£ÃâÀü¿¡ °¡Áö°í ÀÖ´Â ¾î¶² ½ºÇÉ ¶ôÀ» ÇØÁ¦ÇÑ´Ù. µå¶óÀ̹ö´Â ¹öÆÛ µð½ºÅ©¸³ÅͰ¡ ´õÀÌ»ó ÇÊ¿ä ¾øÀ»¶§ ¹öÆÛ µð½ºÅ©¸³Å͸¦ ÇØÁ¦ÇϱâÀ§ÇØ NdisFreeBuffer¸¦ È£ÃâÇØ¾ß¸¸ ÇÑ´Ù.

NdisCopyBufferÇÔ¼öÀÇ È£ÃâÀÚ´Â IRQL <= DISPATCH_LEVEL¿¡¼­ µ¿ÀÛµÉ ¼ö ÀÖ´Ù.