TdiCopyMdlToBuffer

NTSTATUS
   TdiCopyMdlToBuffer (
       IN PMDL SourceMdlChain,
       IN ULONG SourceOffset,
       IN PVOID DestinationBuffer,
       IN ULONG DestinationOffset,
       IN ULONG DestinationBufferSize,
       OUT PULONG BytesCopied
  
   );

TdiCopyMdlToBuffer ÇÔ¼ö´Â ÁÖ¾îÁø MDL¿¡ ÀÇÇØ¼­ ¸ÊµÈ ¹öÆÛÀÇ ¸ðÀ½À¸·ÎºÎÅÍ È£ÃâÀÚ Á¦°ø ¸ñÀûÁö ¹öÆÛÀÇ ¹üÀ§·Î µ¥ÀÌŸ¸¦ º¹»çÇÑ´Ù.

¸Å°³º¯¼ö

SourceMdlChain
º¹»çµÇ´Â µ¥ÀÌŸ¸¦ Æ÷ÇÔÇÏ´Â ¹öÆÛ¸¦ ¸ÅÇÎÇÏ´Â MDL üÀÎÀÇ Ã³À½ MDLÀ» °¡¸®Å²´Ù.

SourceOffset
º¹»ç¸¦ ½ÃÀÛÇÏ´Â ¸ÊµÈ ¼Ò½º ¹öÆÛ¾È¿¡ ¹ÙÀÌÆ® ¿É¼ÂÀ» ¼­¼úÇÑ´Ù. È¿°úÀûÀ¸·Î À̰ÍÀº º¹»ç¸¦ ½ÃÀÛÇϱâ Àü¿¡ °Ç³Ê¶Ù´Â ¸ÊµÈ ¼Ò½º ¹ÙÀÌÆ®ÀÇ ¼öÀÌ´Ù.

DestinationBuffer
È£ÃâÀÚ Á¦°ø ¸ñÀûÁö ¹öÆÛ¸¦ °¡¸®Å²´Ù.

DestinationOffset
¼Ò½º ¹öÆÛ·ÎºÎÅÍ µ¥ÀÌŸ¸¦ º¹»çÇϱ⠽ÃÀÛÇÏ´Â ¸ñÀûÁö ¹öÆÛ¾È¿¡ ¹ÙÀÌÆ® ¿É¼ÂÀ» ¼­¼úÇÑ´Ù.

DestinationBufferSize
DestinationBuffer¿¡ ¹öÆÛÀÇ ¹ÙÀÌÆ® »çÀÌÁ ¼­¼úÇÑ´Ù.

BytesCopied
TdiCopyMdlToBuffer ÇÔ¼ö°¡ º¹»çÇÑ ¹ÙÀÌÆ®ÀÇ ¼ö¸¦ ¸®ÅÏÇϴ ȣÃâÀÚ Á¦°ø º¯¼ö¸¦ °¡¸®Å²´Ù.

¸®Åϰª

TdiCopyMdlToBuffer ÇÔ¼ö´Â ¸ñÀûÁö ¹öÆÛ ¾ÈÀ¸·Î (DestinationBufferSize - DestinationOffset) ¹ÙÀÌÆ®¸¦ º¹»çÇÑ´Ù¸é STATUS_SUCCESS¸¦ ¸®ÅÏÇÑ´Ù. ¹Ý¸é¿¡ SourceOffset¿¡¼­ ½ÃÀÛÇÏ´Â ÁÖ¾îÁø SourceMdlChainÀÌ (DestinationBufferSize - DestinationOffset)°¡ Æ÷ÇÔÇÒ ¼ö ÀÖ´Â ¹üÀ§ ÀÌ»óÀ¸·Î ¸ÊÇÑ´Ù¸é STATUS_BUFFER_OVERFLOW¸¦ ¸®ÅÏÇÏ´Ù.

ÁÖ¼®

TdiCopyMdlToBuffer ÇÔ¼ö´Â STATUS_BUFFER_OVERFLOW¸¦ ¸®ÅÏÇÏ´Ù°í ÇÒÁö¶óµµ ¸ÊµÈ ¼Ò½º ¹öÆÛ¿¡¼­ ÁÖ¾îÁø ¸ñÀûÁö ¹öÆÛ ¹üÀ§¾ÈÀ¸·Î °¡´ÉÇÑ ÇÑ ¸¹Àº µ¥ÀÌŸ¸¦ º¹»çÇÑ´Ù.

´ëºÎºÐ DestinationOffsetÀÌ 0 À̶ó¸é BytesCopiedÀÇ ¸®ÅϰªÀº ÁÖ¾îÁø DestinationBufferSizeÀÏ ¼ö ÀÖ´Ù.

Æ®·£½ºÆ÷Æ®¿Í ±×µéÀÇ Ä¿³Î ¸ðµå Ŭ¶óÀÌ¾ðÆ® ¸ðµÎ TdiCopyMdlToBuffer ÇÔ¼ö¸¦ È£ÃâÇÒ ¼ö ÀÖ´Ù.

¼Ò½º¿Í ¸ñÀûÁö ¹öÆÛ°¡ Á¸ÀçÇÑ´Ù¸é TdiCopyMdlToBuffer ÇÔ¼öÀÇ È£ÃâÀÚ´Â IRQL <= DISPATCH_LEVEL¿¡¼­ ½ÇÇàµÇ¾î¾ßÇÑ´Ù. ±× Áß Çϳª°¡ ÆäÀÌÀúºíÀ̸é È£ÃâÀÚ´Â IRQL < DISPATCH_LEVEL¿¡¼­ ½ÇÇàµÇ¾î¾ßÇÑ´Ù.