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¿¡¼ ½ÇÇàµÇ¾î¾ßÇÑ´Ù.
|