TdiBuildSend
VOID
TdiBuildSend (
IN PIRP Irp,
IN PDEVICE_OBJECT DevObj,
IN PFILE_OBJECT FileObj,
IN PVOID CompRoutine,
IN PVOID Contxt,
IN PMDL MdlAddr,
IN ULONG InFlags,
IN ULONG SendLen
);
TdiBuildSend ÇÔ¼ö´Â ·ÎÄà Ŭ¶óÀÌ¾ðÆ®°¡ ¿¬°á ¿£µåÆ÷ÀÎÆ®¸¦ ±¸ÇöÇÏ´Â ÆÄÀÏ °´Ã¼¸¦ ÀÌ¹Ì ¿¾ú°í ¿ø°ÝÁö¿Í ¿£µåÆ÷ÀÎÆ® ´ë ¿£µåÆ÷ÀÎÆ® ¿¬°áÀ» ¼º¸³ÇÑ ÇϺÎÀÇ Æ®·£½ºÆ÷Æ®·Î TDI_SEND ¸®Äù½ºÆ®¸¦ À§Çؼ ³»ºÎÀÇ ÀåÄ¡ ÅëÁ¦ IRP¸¦ ¼³Á¤ÇÑ´Ù.
¸Å°³º¯¼ö
- Irp
- ´õ »óÀ§ ·¹º§ÀÇ ³×Æ®¾ï ÄÄÆ÷³ÍÆ®¿¡¼ ¹ß»ýÇϰųª TdiBuildInternalDeviceControlIrp ÇÔ¼ö¸¦ °¡Áö°í ÇÒ´çµÈ Ŭ¶óÀÌ¾ðÆ® Á¦°ø IRP¸¦ °¡¸®Å²´Ù.
- DevObj
- ÇϺÎÀÇ TDI Æ®·£½ºÆ÷Æ® µå¶óÀ̹ö¿¡ ÀÇÇØ¼ »ý¼ºµÈ ÀåÄ¡ °´Ã¼¸¦ °¡¸®Å²´Ù.
- FileObj
- ¿¬°á ¿£µåÆ÷ÀÎÆ®¸¦ ±¸ÇöÇÏ´Â ÆÄÀÏ °´Ã¼¸¦ °¡¸®Å²´Ù.
È£ÃâÀÚ´Â ÀÌ ¿¬°á ¿£µåÆ÷ÀÎÆ®¿Í ·ÎÄà ÁÖ¼Ò»çÀÌ¿¡ °ü°è¸¦ ¼³Á¤Çϱâ À§Çؼ Æ®·£½ºÆ÷Æ®·Î TdiBuildAssociateAddress ÇÔ¼ö¸¦ °¡Áö°í ¼³Á¤µÈ ¸®Äù½ºÆ®¸¦ Àü¿¡ ¼º°øÇß´Ù. °ü°è°¡ ¼º¸³µÆÀ» ¶§ È£ÃâÀÚ´Â ¶ÇÇÑ TdiBuildConnect³ª TdiBuildListen ÇÔ¼ö¸¦ °¡Áö°í ¼³Á¤µÈ ¸®Äù½ºÆ®¸¦ ¼º°øÀûÀ¸·Î Á¦½ÃÇϰí ÈÄ¿¡ TdiBuildAccept ÇÔ¼ö¸¦ °¡Áö°í ¼³Á¤µÈ ¸®Äù½ºÆ®¸¦ ¼º°øÇÏ¹Ç·Î½á ¿ø°ÝÁö¿Í ¿£µåÆ÷ÀÎÆ® ´ë ¿£µåÆ÷ÀÎÆ® ¿¬°áÀ» ¼º¸³ÇÑ´Ù.
- CompRoutine
- Ŭ¶óÀÌ¾ðÆ® Á¦°ø IoCompletion ·çƾÀÇ ¿£Æ®¸® Æ÷ÀÎÆ®¸¦ ¼¼úÇϰųª NULLÀÌ´Ù. Ŭ¶óÀÌ¾ðÆ®°¡ ÀÌ ¸Å°³º¯¼ö¸¦ NULL·Î ¼³Á¤ÇÏÁö ¾Ê´Â´Ù¸é ÁÖ¾îÁø IRP°¡ ¿Ï·áµÉ ¶§ I/O ¸Å´ÏÀú´Â ÀÌ ·çƾÀ» È£ÃâÇÑ´Ù.
- Contxt
- Ŭ¶óÀÌ¾ðÆ® °áÁ¤ ÄÁÅØ½ºÆ®¸¦ °¡¸®Å²´Ù. ÀÌ Å¬¶óÀÌ¾ðÆ® Á¦°ø Æ÷ÀÎÅÍ´Â ¿Ï·áµÈ IRP¸¦ °¡Áö°í È£ÃâµÉ ¶§ IoCompletion ·çƾÀ¸·Î Àü´ÞµÈ´Ù. CompRoutineÀÌ NULLÀ̸é Contxt´Â NULLÀÌ´Ù.
- MdlAddr
- Æ®·£½ºÆ÷Æ®°¡ º¸³»Áö´Â µ¥ÀÌŸ¸¦ Àü¼ÛÇϴ Ŭ¶óÀÌ¾ðÆ® Á¦°ø ¹öÆÛ¸¦ ¸ÅÇÎÇϴ üÀÎÈµÈ MDLÀÇ Ã³À½ MDLÀ» °¡¸®Å²´Ù.
- InFlags
- µ¥ÀÌŸ°¡ ¾î¶»°Ô Àü¼ÛµÇ´ÂÁö¸¦ ¼¼úÇÑ´Ù.ÀÌ ¸Å°³º¯¼ö°¡ 0ÀÌ¸é Æ®·£½ºÆ÷Æ®´Â Á¤»óÀûÀÎ TSDU·Î½á ÁÖ¾îÁø µ¥ÀÌŸ¸¦ º¸³»¾ßÇÑ´Ù. ±×·¸Áö ¾ÊÀ¸¸é ÀÌ ¸Å°³º¯¼ö´Â ´ÙÀ½ÀÇ Ç÷¡±×·Î OR ¿¬»êµÉ ¼ö ÀÖ´Ù:
- TDI_SEND_EXPEDITED
- ÁÖ¾îÁø µ¥ÀÌŸ´Â ÇϺÎÀÇ Æ®·£½ºÆ÷Æ®°¡ ½Å¼ÓÇÑ Àü¼ÛÀ» Áö¿øÇÑ´Ù´Â °¡Á¤ÇÏ¿¡ ÀÌ ¿£µåÆ÷ÀÎÆ® ´ë ¿£µåÆ÷ÀÎÆ® ¿¬°á»ó¿¡¼ Æ®·£½ºÆ÷Æ®°¡ Àü¼ÛÀ» À§Çؼ ÇöÀç Å¥¿¡ À¯ÁöÇϰí ÀÖ´Â Á¤»óÀûÀÎ º¸³»±â ¸®Äù½ºÆ®ÀÇ ¾ÕºÎºÐÀ» º¸³»¾ßÇÑ´Ù.
- TDI_SEND_PARTIAL
- ÁÖ¾îÁø µ¥ÀÌŸ´Â ·¹ÄÚµåÀÇ ³¡À¸·Î½á Á¾°áµÈ´Ù. ÇÏÁö¸¸ ¿Ï·áµÈ ¸Þ¼¼Áö ¸ðµåÀÇ TSDU´Â ¾Æ´Ï´Ù. Ŭ¶óÀÌ¾ðÆ®´Â ³ªÁß¿¡ Ãß°¡µÈ µ¥ÀÌŸ¸¦ º¸³¾ °ÍÀÌ´Ù. ÀÌ Ç÷¡±×´Â ½ºÆ®¸² ¸ðµå Æ®·£½ºÆ÷Æ®ÀÇ Å¬¶óÀÌ¾ðÆ®¿Í´Â ¹«°üÇÏ´Ù.
- TDI_SEND_NO_RESPONSE_EXPECTED
- È£ÃâÀÚ´Â ¿ö°ÝÁö·ÎºÎÅÍÀÇ ÀÌ º¸³»±â¿¡ ´ëÇÑ ÀÀ´äÀ» ±â´ëÇÏÁö ¾Ê´Â ÇϺÎÀÇ Æ®·£½ºÆ÷Æ®¿¡°Ô ÈùÆ®¸¦ ÁÖ°íÀÖ´Ù. Ŭ¶óÀÌ¾ðÆ®´Â Æ®·£½ºÆ÷Æ®°¡ ÀÌ·± ÃÖÀûȸ¦ Áö¿øÇÑ´Ù°í °¡Á¤ÇÏ°í ¿ø°ÝÀÇ Æ®·£½ºÆ÷Æ®¿¡ ÀÇÇØ¼ ½ÂÀÎµÈ TSDUÀÇ ÇDZâ¹éÀ» µð½º¿¡À̺íÇϱâ À§Çؼ ÀÌ Ç÷¡±×¸¦ »ç¿ëÇÑ´Ù. ±×·¸Áö ¾ÊÀ¸¸é ÇϺÎÀÇ Æ®·£½ºÆ÷Æ®´Â ¿ø°ÝÁö·ÎºÎÅÍ º¸³»±âÀÇ ÇDZâ¹é ½ÂÀÎÀ» À§Çؼ ±â´Ù¸²À¸·Î½á ŸÀӾƿôÇÑ´Ù.
- TDI_SEND_NON_BLOCKING
- ÇϺÎÀÇ Æ®·£½ºÆ÷Æ®°¡ ÁÖ¾îÁø µ¥ÀÌŸ¸¦ À§Çؼ ÇöÀç »ç¿ë°¡´ÉÇÑ ³»ºÎÀÇ ¹öÆÛ°ø°£À» °¡Áö°í ÀÖÁö ¾Ê´Ù¸é ³»ºÎÀûÀ¸·Î ÁÖ¾îÁø µ¥ÀÌŸ¸¦ ¹öÆÛÈÇÒ ¼ö ÀÖÀ» ¶§±îÁö ºí·¯Å·Çϱ⺸´Ù´Â STATUS_DEVICE_NOT_READY¸¦ °¡Áö°í º¸³»±â ¸®Äù½ºÆ®¸¦ ½ÇÆÐÇØ¾ßÇÑ´Ù. Æ®·£½ºÆ÷Æ®´Â º¸³»±â¸¦ À§Çؼ »ç¿ë°¡´ÉÇÑ ³»ºÎÀÇ ¹öÆÛ °ø°£À» ´Ù½Ã °¡Áú ¶§ ClientEventSendPossible Çڵ鷯¸¦ È£ÃâÇØ¾ßÇÑ´Ù. ÀÌ Ç÷¡±×´Â ³»ºÎÀûÀ¸·Î ¹öÆÛÈÇÏÁö ¾Ê´Â Æ®·£½ºÆ÷Æ®ÀÇ Å¬¶óÀÌ¾ðÆ®¿Í´Â ¹«°üÇÏ´Ù.
- SendLen
- MdlAddr¿¡ ¸ÊµÈ ¹öÆÛÀÇ ¹ÙÀÌÆ® »çÀÌÁ ¼¼úÇÑ´Ù. ÀÌ ¸Å°³º¯¼ö¿¡ ´ëÇÑ ÃÖ´ë°ªÀº ÇϺΠƮ·£½ºÆ÷Æ®¿¡ ÀÇÁ¸ÇÑ´Ù. 0ÀÌ À¯È¿ÇÑÁöµµ ÇϺÎÀÇ Æ®·£½ºÆ÷Æ®¿¡ ÀÇÁ¸ÇÑ´Ù.(ÁÖ¼®À» ºÁ¶ó.)
ÁÖ¼®
TdiBuildSend ÇÔ¼ö´Â ÁÖ¾îÁø IRPÀÇ Æ®·£½ºÆ÷Æ® I/O ½ºÅà ·ÎÄÉÀ̼Ǿȿ¡ MajorFunction·Î½á IRP_MJ_INTERNAL_DEVICE_CONTROLÀ» ¼³Á¤Çϰí MinorFunction·Î½á TDI_SEND¸¦ ¼³Á¤ÇÑ´Ù.
TdiBuildSend ÇÔ¼ö¸¦ °¡Áö°í ¼³Á¤µÈ °¢°¢ÀÇ º¸³»±â ¸®Äù½ºÆ®¿¡¼ È£ÃâÀÚ´Â ¿ø°ÝÁö·Î º¸³»Áö´Â TSDU¸¦ Æ÷ÇÔÇÏ´Â ¹öÆÛ¸¦ Á¦°øÇϰųª ÇϺÎÀÇ Æ®·£½ºÆ÷Æ®°¡ ¸Þ¼¼Áö ¸ðµåÀÇ Àü¼ÛÀ» Áö¿øÇÑ´Ù¸é ºÎºÐÀûÀÎ TSDU¸¦ Æ÷ÇÔÇÏ´Â ¹öÆÛ¸¦ Á¦°øÇÑ´Ù. Ŭ¶óÀÌ¾ðÆ®´Â TDI µå¶óÀ̹ö°¡ Çã¶ôÇÏ´Â ÃÖ´ë »çÀÌÁî·Î µ¥ÀÌŸÀÇ ¾çÀ» º¸³¾ ¼ö ÀÖ´Ù. º¸³»±â¿¡ ´ëÇÑ Æ®·£½ºÆ÷Æ® ƯÁ¤ ÃÖ´ë °ªÀ» ¾ò±â À§Çؼ Ŭ¶óÀÌ¾ðÆ®´Â TdiBuildQueryInformation ÇÔ¼ö¸¦ °¡Áö°í ¼³Á¤µÈ TDI_QUERY_PROVIDER_INFO ¸®Äù½ºÆ®¸¦ ÇÒ ¼ö ÀÖ´Ù.
TdiBuildSend ÇÔ¼öÀÇ È£ÃâÀÚ°¡ IoCallDriver ÇÔ¼ö¸¦ °¡Áø ÇϺÎÀÇ Æ®·£½ºÆ÷Æ®·Î º¸³»±â IRP¸¦ Àü´ÞÇÑ ÈÄ¿¡ MdlAddress¿¡ Ŭ¶óÀÌ¾ðÆ® Á¦°ø ¹öÆÛ´Â º¸³»±â ¿¬»êÀÌ ¿Ï·áµÉ ¶§±îÁö Ŭ¶óÀÌ¾ðÆ®·Î Á¢±ÙÇÒ ¼ö ¾ø´Ù. IRP°¡ Ŭ¶óÀ̾ðÆ®ÀÇ IoCompletion ·çƾÀ¸·Î ¸®ÅÏÇϰųª Ŭ¶óÀÌ¾ðÆ®°¡ ±× ¹öÆÛ¾È¿¡ µ¥ÀÌŸ¸¦ À§Çؼ ÇϺÎÀÇ Æ®·£½ºÆ÷Æ®°¡ º¸³»±â ¿¬»êÀ» ¿Ï·áÇßÀ½À»(ÇÁ·ÎÅäÄÝÀÇ Àṉ̀¸Á¶¸¦ ÅëÇØ¼) È®½ÅÇÒ ¶§±îÁö Ŭ¶óÀÌ¾ðÆ®´Â º¸³»±â ¹öÆÛ¸¦ »ç¿ëÇϰųª ¹Ù²Ù´Â ½Ãµµ¸¦ ÇÒ ¼ö ¾ø´Ù.
·ÎÄÃÀÇ Æ®·£½ºÆ÷Æ®´Â ³»ºÎÀûÀ¸·Î ¸î¸î º¸³»±â ¸®Äù½ºÆ®¸¦ Å¥¿¡ ÀúÀåÇÒ ¼ö ÀÖ´Ù. ÇÏÁö¸¸ Ç×»ó FIFO ¼ø¼·Î ±×µéÀ» Àü¼ÛÇÑ´Ù. Æ®·£½ºÆ÷Æ®°¡ ½Å¼ÓÇÑ º¸³»±â¸¦ Áö¿øÇÑ´Ù¸é Æ®·£½ºÆ÷Æ®´Â ÇöÀç À¯ÁöÇÏ´Â Á¤»óÀûÀÎ º¸³»±âÀÇ ¼±µÎ¿¡¼ µé¾î¿À´Â ½Å¼ÓÇÑ º¸³»±â ¸®Äù½ºÆ®¸¦ FIFO ¼ø¼·Î Å¥¿¡ ÀúÀåÇÑ´Ù. Æ®·£½ºÆ÷Æ®´Â ¼º°ø ȤÀº ¿¡·¯ »óŸ¦ °¡Áö°í ÀûÀýÇÑ ¹æ¹ýÀ¸·Î µé¾î¿À´Â º¸³»±â¸¦ ¿Ï·áÇÒ Ã¥ÀÓÀÌ ÀÖ´Ù. Æ®·£½ºÆ÷Æ®´Â ÇöÀç ³×Æ®¿÷ »óÅ¿¡ ´ëÇØ¼ Á¤´çÇÑ Å¸ÀӾƿô °£°ÝÀÇ µå¶óÀ̹ö °áÁ¤ ÆÇ´Ü¿¡ ±Ù°ÅÇÑ Å¸ÀӾƿô ¿¡·¯¸¦ °¡Áö°í º¸³»±â¸¦ ¿Ï·áÇÒ ¼ö ÀÖ´Ù.
¿£µåÆ÷ÀÎÆ® ´ë ¿£µåÆ÷ÀÎÆ® ¿¬°á»ó¿¡¼ ·ÎÄà Ŭ¶óÀ̾ðÆ®ÀÇ °¢°¢ÀÇ º¸³»±â ¸®Äù½ºÆ®´Â ´ÙÀ½Áß Çϳª¿Í ´ëÀÀÇÑ´Ù:
- ÇϺÎÀÇ TDI Æ®·£½ºÆ÷Æ®·Î ¿ø°ÝÀÇ Å¬¶óÀÌ¾ðÆ®¿¡ ÀÇÇØ¼ Á¦½ÃµÈ ÇϳªÀÇ ¸®½Ãºê ¸®Äù½ºÆ®.
- ÇϺÎÀÇ TDI Æ®·£½ºÆ÷Æ®¿¡ ÀÇÇØ¼ ¿ø°Ý Ŭ¶óÀ̾ðÆ®ÀÇ µî·ÏµÈ ClientEventReceive, ClientEventReceiveExpedited, ClientEventChainedReceive, ȤÀº ClientEventChainedReceiveExpedited Çڵ鷯·ÎÀÇ ÇѹøÀÇ È£Ãâ.
ÇϺÎÀÇ Æ®·£½ºÆ÷Æ®°¡ ¸Þ¼¼Áö ¸ðµåÀÇ º¸³»±â¸¦ Áö¿øÇÑ´Ù¸é Ŭ¶óÀÌ¾ðÆ®´Â ¸¶Áö¸·¿¡ TDI_SEND_PARTIAL Ç÷¡±×¸¦ ¼¼úÇÏ´Â °ÍÀ» Á¦¿ÜÇϰí´Â ¼øÂ÷ÀûÀÎ º¸³»±â ¸®Äù½ºÆ®·Î½á Çѹø¿¡ TSDU¸¦ º¸³¾ ¼ö ÀÖ´Ù. ÀÌ Ç÷¡±×°¡ Ŭ¸®¾îµÉ ¶§ ¸Þ¼¼Áö ¸ðµå Æ®·£½ºÆ÷Æ®´Â ±×·¯ÇÑ ¼ø¼ÀÇ ºÎºÐÀûÀÎ º¸³»±â¸¦ ³¡¿¡ ÀÖ´Ù°í °£ÁÖÇÑ´Ù. ÀÌ·± Àü¼Û ½Ã³ª¸®¿À¿¡¼ ¿ø°ÝÁöÀÇ Æ®·£½ºÆ÷Æ®´Â ¸¶Áö¸· ¸®½Ãºê¸¦ ÀεðÄÉÀÌÆ®ÇÒ ¶§±îÁö ´ëÀÀÇÏ´Â ¸®½Ãºê ÀεðÄÉÀ̼ǿ¡¼ TDI_RECEIVE_ENTIRE_MESSAGE Ç÷¡±×¸¦ Ŭ¸®¾î »óÅ·Π³²°ÜµÒÀ¸·Î½á ¸®½ÃºêÇϴ Ŭ¶óÀÌ¾ðÆ®¿¡°Ô ºÎºÐÀûÀÎ TSDU¸¦ ¾Ë¸°´Ù.
TdiBuildSend ÇÔ¼öÀÇ È£ÃâÀÚ´Â ÇϺÎÀÇ Æ®·£½ºÆ÷Æ®°¡ Ŭ¶óÀÌ¾ðÆ® º¸³»±â µ¥ÀÌŸ¸¦ º¹»çÇÏ´Â ³»ºÎÀÇ ¹öÆÛ¸¦ °®´Â´Ù¸é TDI_SEND_NON_BLOCKING Ç÷¡±×¸¦ ¼³Á¤ÇÏ¹Ç·Î½á ºñºí·¯Å· º¸³»±â¸¦ ¸®Äù½ºÆ®ÇÒ ¼ö ÀÖ´Ù. »ç¿ë°¡´ÉÇÑ ³»ºÎ¹öÆÛÀÇ ¾ç¿¡ ÀÇÁ¸ÇÏ¿© ÇϺÎÀÇ Æ®·£½ºÆ÷Æ®´Â ´ÙÀ½°ú °°ÀÌ º¸³»±â ¸®Äù½ºÆ®¸¦ ó¸®ÇÑ´Ù:
º¸³»±â°¡ STATUS_SUCCESS¸¦ °¡Áö°í ¿Ï·áµÉ ¶§ ±×·¯ÇÑ Æ®·£½ºÆ÷Æ®ÀÇ Å¬¶óÀÌ¾ðÆ®´Â ¿Ï·áµÈ IRPÀÇ IoStatus.Information ¸â¹ö¸¦ üũÇÔÀ¸·Î½á Àü¼ÛÀ» À§Çؼ Æ®·£½ºÆ÷Æ®°¡ ¹öÆÛÈÇÑ µ¥ÀÌŸÀÇ ¾çÀÌ ¾ó¸¶ÀÎÁö¸¦ °áÁ¤ÇÒ ¼ö ÀÖ´Ù. ÇÊ¿äÇÏ´Ù¸é Ŭ¶óÀ̾ðÆ®ÀÇ IoCompletion ·çƾÀº ³²¾ÆÀÖ´Â µ¥ÀÌŸ¸¦ À§Çؼ ¶Ç´Ù¸¥ º¸³»±â ¸®Äù½ºÆ®¸¦ ´Ù½Ã Á¦ÃâÇÒ ¼ö ÀÖ´Ù.
¸î¸î Æ®·¡½ºÆ÷Æ®´Â ±×µéÀÇ Å¬¶óÀÌ¾ðÆ®·Î ÇÏ¿©±Ý ±æÀ̰¡ 0ÀÎ º¸³»±â ¸®Äù½ºÆ®¸¦ Çã¶ôÇÑ´Ù. ±×·¯ÇÑ Æ®·£½ºÆ÷Æ®¸¦ À§Çؼ ±æÀ̰¡ 0ÀÎ º¸³»±â´Â ½ÇÁ¦·Î TDI_SEND_PARTIAL Ç÷¡±×°¡ Ŭ¸®¾î»óÅÂÀÎ ÇÑ ÇÁ·ÎÅäÄÝÀ» ¼øÈ¯Çϵµ·ÏÇÑ´Ù. Æ®·£½ºÆ÷Æ®ÀÇ Å¬¶óÀÌ¾ðÆ®´Â ¸®½Ãºê ¸®Äù½ºÆ®¸¦ ¸¸Á·½ÃŰ´Â ¸Þ¼¼Áö·Î½á ±æÀ̰¡ 0ÀÎ º¸³»±â¸¦ Á¦½ÃÇÒ ¼ö ÀÖ´Ù. ÀÌ·± Ư¡À» Áö¿øÇÏÁö ¾Ê´Â Æ®·£½ºÆ÷Æ®´Â Ŭ¶óÀÌ¾ðÆ®°¡ ±æÀ̰¡ 0ÀÎ º¸³»±â ¸®Äù½ºÆ®¸¦ Á¦½ÃÇÒ ¶§ ¿¡·¯¸¦ ¸®ÅÏÇÑ´Ù.
¶ÇÇÑ TDI Ŭ¶óÀÌ¾ðÆ®´Â ZwWriteFile ÇÔ¼ö·ÎÀÇ È£ÃâÀ» °¡Áö°í ¿£µåÆ÷ÀÎÆ® ´ë ¿£µåÆ÷ÀÎÆ® ¿¬°á »ó¿¡¼ Á¤»óÀûÀÎ TSDU¸¦ º¸³¾ ¼ö ÀÖ´Ù. ÀÌ ·çƾÀº TDI_SEND_XXX Ç÷¡±×ÀÇ »ç¾çÀ» Çã¶ôÇÏÁö ¾Ê±â ¶§¹®¿¡ SendFlags¾È¿¡ Ŭ¸®¾îµÈ TDI_SEND_PARTIAL¿Í TDI_SEND_EXPEDITED¸¦ °¡Áö°í TdiBuildSend ÇÔ¼öÀÇ ¸®Äù½ºÆ®·Î½á ÆÐŰÁöÈµÈ °Íó·³ ZwWriteFile ÇÔ¼ö¿¡°Ô ÁÖ¾îÁø Ŭ¶óÀÌ¾ðÆ® Á¦°ø µ¥ÀÌŸ´Â ÇϺÎÀÇ Æ®·£½ºÆ÷Æ®¿¡ ÀÇÇØ¼ Àü¼ÛµÈ´Ù. Æ®·£½ºÆ÷Æ®´Â MdlAddr¿¡ ¹öÆÛ¾È¿¡ ¸ðµç µ¥ÀÌŸ°¡ º¸³»Á®¾ßÇϰí È£ÃâÀÚÀÇ ZwWriteFile ÇÔ¼ö¿¡ ´ëÇÑ ByteOffset°ú Key ÀÎÀÚ´Â ¹«½ÃµÆ´Ù°í °¡Á¤ÇÑ´Ù.
ZwWriteFile°ú IoCallDriver ÇÔ¼ö È£Ãâ¿¡ ´ëÇÑ Æ¯Â¡¿¡ ´ëÇØ¼´Â Ä¿³Î ¸ðµå µå¶óÀ̹ö ·¹ÆÛ·±½º¸¦ ºÁ¶ó.
|