TDI_ACTION
Ä¿³Î ¸ðµå Ŭ¶óÀÌ¾ðÆ®°¡ TDI_ACTION ¸®Äù½ºÆ®¸¦ ÇÒ ¶§ Ä¿³Î ¸ðµå Ŭ¶óÀÌ¾ðÆ®´Â ÇϺÎÀÇ TDI Æ®·£½ºÆ÷Æ® µå¶óÀ̹ö¿¡°Ô ±× Ŭ¶óÀÌ¾ðÆ®°¡ ÀÌ¿ëÇÒ ¼ö ÀÖ´Â Æ®·£½ºÆ÷Æ® ƯÁ¤ È®ÀåÀ» Çϵµ·Ï ¿ä±¸ÇÑ´Ù.
IRP
IrpSp·Î½á ´ÙÀ½ÀÇ ¸®½ºÆ®¿¡ º¸¿©Áö´Â °Íó·³ IRP¾È¿¡ ÀÚ½ÅÀÇ ½ºÅà ·ÎÄÉÀ̼ǿ¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ ¾ò±â À§Çؼ ÁÖ¾îÁø Irp¸¦ °¡Áö°í IoGetCurrentIrpStackLocation ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù. IRP¿¡ ´ëÇÑ Æ÷ÀÎÅÍ´Â Irp·Î½á ´ÙÀ½ÀÇ ¸®½ºÆ®¿¡¼ º¸¿©Áø´Ù. ÀÌ ¸®Äù½ºÆ®¿¡ °ü·ÃµÈ IRP ¸â¹ö´Â ´ÙÀ½°ú °°´Ù:
- Irp->IoStatus.Status
- action ¸®Äù½ºÆ®ÀÇ ¸¶Áö¸· »óŸ¦ ¼¼úÇÑ´Ù. Æ®·£½ºÆ÷Æ®°¡ ´ÙÀ½Áß¿¡ Çϳª·Î IRP¸¦ ¿Ï·áÇÒ ¶§ ÀÌ ¸â¹ö¸¦ ¼³Á¤ÇÑ´Ù:
STATUS_SUCCESS
STATUS_PENDING
STATUS_INVALID_CONNECTION
STATUS_INVALID_PARAMETER
STATUS_INVALID_HANDLE
STATUS_BUFFER_TOO_SMALL
STATUS_INSUFFICIENT_RESOURCES
STATUS_NOT_SUPPORTED
STATUS_NOT_IMPLEMENTED
- Irp->IoStatus.Information
- ÀÌ ¸®Äù½ºÆ®¸¦ À§Çؼ Àü¼ÛµÈ µ¥ÀÌŸÀÇ ¹ÙÀÌÆ®°¡ ¾ó¸¶³ª ¸¹ÀºÁö¸¦ ¼¼úÇÑ´Ù. Æ®·£½ºÆ÷Æ®´Â IRP°¡ ¿Ï·áµÇ±â Àü¿¡ I/O »óÅ ºí·°ÀÇ ÀÌ ¸â¹ö¸¦ ¼³Á¤ÇÑ´Ù.
- IrpSp->MajorFunction
- IRP_MJ_INTERNAL_DEVICE_CONTROLÀ» ¼¼úÇÑ´Ù. Æ®·£½ºÆ÷Æ®°¡ TDI_XXX ¸®Äù½ºÆ®¸¸À» ´Ù·ç´Â TdiDispatchInternalDeviceControl ÇÔ¼ö¸¦ ÀͽºÆ÷Æ® ÇÑ´Ù¸é ÀÌ ¸â¹ö¸¦ ¹«½ÃÇÒ ¼ö ÀÖ´Ù.
- IrpSp->MinorFunction
- TDI_ACTIONÀ» ¼¼úÇÑ´Ù.
- IrpSp->FileObject
- ÁÖ¼Ò, ¿¬°á ¿£µåÆ÷ÀÎÆ®, ÅëÁ¦ ä³ÎÀ» ±¸ÇöÇÏ´Â ¿¸° ÆÄÀÏ °´Ã¼¸¦ ¼¼úÇÑ´Ù. ÀÌ ÁÖ¼Ò, ¿¬°á ¿£µåÆ÷ÀÎÆ®, ÅëÁ¦ ä³Î¿¡ ´ëÇØ¼ À¯ÁöµÇ´Â »óŸ¦ Á¢±ÙÇϱâ À§Çؼ Æ®·£½ºÆ÷Æ®´Â FsContext¿Í °¡´ÉÇÏ´Ù¸é FsContext2 Çʵ带 »ç¿ëÇÑ´Ù.
- Irp->MdlAddress
- Ŭ¶óÀÌ¾ðÆ®°¡ Á¦°øÇÏ´Â action ¸Å°³º¯¼ö ºí·°À» Æ÷ÇÔÇϰí ÀÖ´Â ¹öÆÛ¸¦ ¸ÅÇÎÇϴ üÀÎÈµÈ Ã³À½ÀÇ MDLÀ» °¡¸®Å²´Ù. ÀÌ ¹öÆÛÀÇ Ã³À½ ºÎºÐÀº Ç×»ó Æ®·£½ºÆ÷Æ® Á¤ÀÇ ³»¿ëÀÌ action ¸®Äù½ºÆ®¸¦ ¼öÇàÇϱâ À§Çؼ ¿ä±¸µÇ¾ú´ÂÁö¿¡ µû¶ó¼ ½Ã½ºÅÛ Á¤ÀÇ TDI_ACTION_HEADER ±¸Á¶Ã¼¸¦ Æ÷ÇÔÇÑ´Ù.
ÁÖ¼®
Ŭ¶óÀ̾ðÆ®ÀÇ ¼º°øÀûÀÎ action ¸®Äù½ºÆ® ¿Ï·á´Â Æ®·£½ºÆ÷Æ® Á¦°ø È®ÀåÀ» Ŭ¶óÀÌ¾ðÆ®¿¡°Ô Àû¿ëÇÒ ¼ö ÀÖ°Ô ÇÑ´Ù. ÇÏÁö¸¸ ´Ù¸¥ TDI Ŭ¶óÀÌ¾ðÆ®³ª µå¶óÀ̹ö¿¡°Ô´Â ¾Æ´Ï´Ù. °¡´ÉÇÑ µ¿ÀÛµéÀº TDI Æ®·£½ºÆ÷Æ® µå¶óÀ̹öÀÇ °³¹ßÀÚÀÇ °áÁ¤¿¡¼ Æ®·£½ºÆ÷Æ®¿¡ ÀÇÇØ¼ Á¤ÀǵȴÙ.
±×·¯ÇÑ Å¬¶óÀÌ¾ðÆ®´Â ÁÖ¼Ò, ¿¬°á ¿£µåÆ÷ÀÎÆ®, ÅëÁ¦ ä³Î°ú °ü·ÃµÈ Æ®·£½ºÆ÷Æ® Á¤ÀÇ È®ÀåÀ» À§Çؼ action ¸®Äù½ºÆ®¸¦ ÇÑ´Ù. Ŭ¶óÀÌ¾ðÆ®´Â MdlAddress¿¡ ¸ÊµÈ ¸Å°³º¯¼ö ºí·°¾È¿¡ ¸®Äù½ºÆ®µÈ µ¿ÀÛ¿¡ °üÇÑ ¸ðµç Á¤º¸¸¦ Æ÷ÇÔÇÏ´Â ¹öÆÛ¸¦ Á¦°øÇÑ´Ù.
°¢°¢ÀÇ action ¸Å°³º¯¼ö ºí·°Àº Æ®·£½ºÆ÷Æ® ½Äº°ÀÚ¿Í action Äڵ带 Æ÷ÇÔÇÏ´Â TDI_ACTION_HEADER¸¦ °¡Áö°í ½ÃÀÛÇÑ´Ù. ±×·¯ÇÑ ¸®Äù½ºÆ®¸¦ ¹ÞÀ» ¶§ Æ®·£½ºÆ÷Æ®´Â ¸®Äù½ºÆ®¸¦ À¯È¿ÈÇϱâ À§Çؼ ÀÌ Çì´õ¾È¿¡ TransportId °ªÀ» »ç¿ëÇÑ´Ù. ActionCode ¸â¹ö´Â ¼öÇàµÇ´Â Æ®·£½ºÆ÷Æ® Á¤ÀÇ ¿¬»êÀ» ¼¼úÇÏ°í ¸Å°³º¯¼ö ºí·°ÀÇ ³ª¸ÓÁö¸¦ À§ÇÑ Æ®·£½ºÆ÷Æ® ¿ä±¸ ³»¿ëÀ» °áÁ¤ÇÑ´Ù.
TdiBuildActionÀº Ŭ¶óÀÌ¾ðÆ®°¡ ÀÌ IRP¾È¿¡ ä¿ì±â À§Çؼ »ç¿ëÇÏ´Â ¸ÅÅ©·ÎÀÌ´Ù.
|