IRP¸¦ Ãë¼ÒÇÑ´Ù´Â °ÍÀº ¹«¾ùÀϱî?
¿ì¸®°¡ ÇÁ·Î±×·¥À» ¸¸µé ¶§ ÆÄÀÏÀ» »ý¼ºÇÏ´Â °æ¿ì¿¡´Â º¸Åë CreateFile(), ÆÄÀÏÀ» Àбâ À§Çؼ´Â ReadFile()¸¦ ¾²°Ô µÇ´Âµ¥, ÀÌ ¶§ ÇÔ¼ö°¡ È£Ãâ µÇ¸é¼ Ä¿³ÎÀÇ µð¹ÙÀ̽º ½ºÅÃÀ¸·Î IRP¸¦ º¸³»Áö°Ô µË´Ï´Ù. À̶§, º¸³½ ÃøÀÇ ¿äûÀ¸·Î ÀÎÇØ¼ IRP°¡ Ãë¼ÒµÇ´Â °úÁ¤À» IRPÃë¼Ò(Cancel) °úÁ¤À̶ó°í ¸»ÇÕ´Ï´Ù.
IRP¸¦ Ãë¼ÒÇÏ´Â »óȲÀº Å©°Ô 2°¡Áö·Î º¼ ¼ö ÀÖ½À´Ï´Ù.
ù ¹øÂ°, Win32 API CandcelIO()¸¦ È£ÃâÇÏ¿© »ç¿ëÇÏ´Â Handle°ú °ü·ÃµÈ ¿äû¿¡ ´ëÇØ¼ Ãë¼Ò¸¦ ÇÏ´Â »óȲ
µÎ ¹øÂ°, °©ÀÚ½º·¯¿î ÀÌÀ¯·Î ÇÁ·Î¼¼½º³ª ¾²·¡µå°¡ Á¾·á µÇ¸é¼ Ä¿³Î·¹º§¿¡¼ IoCancellIrp()°¡ È£Ã⠵Ǵ »óȲ
±×·³ À§ 2°¡Áö ÇÔ¼ö(Çϳª´Â À¯Àú·¹º§ÀÇ ÇÔ¼ö, ´Ù¸¥ Çϳª´Â Ä¿³Î ·¹º§ÀÇ ÇÔ¼ö)¿¡ ´ëÇØ¼ MSDN¸¦ º¾½Ã´Ù.
CancelIo
BOOL WINAPI CancelIo(
_In_ HANDLE hFile
);
ÀÎÀÚ¸¦ º¸¸é ÆÄÀÏÀÇ ÇÚµéÀÔ´Ï´Ù. Áï, ÆÄÀÏ¿¡ ´ëÇÑ Çڵ鿡 ´ëÇÑ ¿äûÀÌ ÀÖ´Â IRP¿¡ ´ëÇØ Ãë¼Ò¸¦ Çϰڴٴ °Í ÀÔ´Ï´Ù.(File I/O°¡ ÇØ´ç µÇ°Ú±º¿ä)
IoCancelrp
BOOLEAN IoCancelIrp(
_In_ PIRP Irp
);
Ä¿³Î·¹º§ÀÇ ÇÔ¼ö´Â IRPÀÇ Æ÷ÀÎÅ͸¦ ¹Þ°Ô µÇ¾î ÀÖ½À´Ï´Ù.
±×·¯¸é ¿©±â¼ IRP°¡ ¹«¾ùÀΰ¡?
IRP´Â Io Request PacketÀÇ ¾àÀÚ·Î Ä¿³Î ·¹º§¿¡¼ »ç¿ë µÇ´Â ¸í·É¾î ¶ó°í »ý°¢ÇÏ½Ã¸é µË´Ï´Ù.
Ä¿³ÎÀÇ µð¹ÙÀ̽º´Â ¿©·¯°¡Áö °èÃþ±¸Á¶ÀÇ ½ºÅ÷ÎÄÉÀ̼ÇÀ» °¡Áö°í Àִµ¥ ÇÏÀ§ÀÇ ½ºÅ÷ÎÄÉÀ̼ÇÀ¸·Î Àü´ÞÇÒ ¶§ IRP¸¦ »ç¿ëÇÕ´Ï´Ù.
¸ðµç IRP¿¡ ´ëÇÑ Ãë¼Ò´Â Ä¿³Î ·¹º§¿¡¼ÀÇ IoCancelIrp()°¡ È£Ã⠵ȴÙ. µ¡ ºÙÀÌÀÚ¸é À¯Àú·¹º§¿¡¼ È£ÃâµÇ´Â ÇÔ¼öµéÀº ¸ðµÎ ´Ù½Ã Ä¿³Î ·¹º§¿¡ ÀÖ´Â ÇÔ¼öµéÀÌ Àç È£Ãâ µÈ´Ù°í »ý°¢ÇÏ¸é µË´Ï´Ù.
±×·¸´Ù¸é ²À ÀÌ 2°³ÀÇ ÇÔ¼öµéÀ» È£ÃâÇØ¾ß¸¸ IRP CancelÀÌ µÉ±î¿ä?
²À ±×·± °Í¸¸Àº ¾Æ´Õ´Ï´Ù. À§ 2°³ÀÇ ÇÔ¼ö´Â Irp¿¡ ´ëÇØ¼ Ãë¼Ò ¿äûÀ» ÇÏ´Â ÇÔ¼ö ÀÌÁö¸¸, IRP_MJ_CLEANUP(µå¶óÀ̹öÀÇ Major FuntionÀÇ ÀϺÎ) ·çƾÀÌ ÀÖ½À´Ï´Ù.
ÀÌ ·çƾÀº À¯Àú·¹º§¿¡¼ ÇÚµéÀ» ´Ý´Â Çൿ(CloseHandle)À» ÇÑ´Ù´øÁö, Ä¿³Î ·¹º§¿¡¼ ÇÚµéÀ» ´Ý´Â Çൿ(NtClose, ZwCloseµî)À» ÇÒ °æ¿ì ÇØ´ç ·çƾÀ¸·Î ¿äûÀÌ µË´Ï´Ù
ÀÌ ·çƾÀ¸·Î µé¾î¿À°Ô µÇ¸é I/O°¡ »ç¿ëÁßÀÌ¿©µµ Irp¿¡ ´ëÇØ Ãë¼Ò¸¦ ÇÏ°Ô µË´Ï´Ù.
¸¶Áö¸·À¸·Î
ÆÄÀÏ¿¡ ´ëÇØ Create, OpenÀ» ÇÏ´Â °æ¿ì ÆÄÀÏ ÇÚµéÀ» »ç¿ëÇÏ°Ô µÇ´Âµ¥ ÀÀ¿ëÇÁ·Î±×·¥Àº (ÇÁ·Î±×·¡¸ÓÀÇ ½Ç·Î ÀÎÇØ, CloseHandle È£Ãâ Àü ÀÀ¿ëÇÁ·Î±×·¥ÀÇ ¿À·ù·Î ÀÎÇØ) ÆÄÀÏ ÇÚµéÀ» ´ÝÁö ¾Ê°í Á¾·á°¡ µÉ ¼ö ÀÖ½À´Ï´Ù. Ä¿³Î ·¹º§¿¡¼´Â ÀÌ·± °æ¿ì°¡ ´ç¿¬ÇÏ´Ù°í ÆÇ´ÜÀ» Çϰí ÀÛ¾÷À» ÇØ¾ß ÇÕ´Ï´Ù. ±×·¡¼ Irp Canceló¸® ºÎºÐÀÌ Áß¿äÇÏ´Ù´Â °ÍÀÔ´Ï´Ù.
http://rurury.tistory.com/entry/IRP-Ãë¼ÒIRP-CancelÀÇ-Á߿伺
|