TdiDispatchClose

NTSTATUS
   TdiDispatchClose (
       IN PDEVICE_OBJECT DeviceObject,
       IN PIRP Irp
  
   );

TdiDispatchClose ÇÔ¼ö´Â ÁÖ¼Ò, ¿¬°á ¿£µåÆ÷ÀÎÆ®, ȤÀº ÅÖÁ¦ ä³ÎÀ» ´Ý´Â´Ù.

¸Å°³º¯¼ö

DeviceObject
TDI Æ®·£½ºÆ÷Æ®¿¡ ÀÇÇØ¼­ »ý¼ºµÈ ÀåÄ¡ °´Ã¼¸¦ °¡¸®Å²´Ù.

Irp
Æ®·£½ºÆ÷Æ® µå¶óÀ̹öÀÇ I/O ½ºÅà ·ÎÄÉÀ̼ǿ¡¼­ MajorFunctionCode·Î ¼³Á¤µÈ IRP_MJ_CLOSE¸¦ °¡Áø IRP¸¦ °¡¸®Å²´Ù.

IrpSp·Î½á ´ÙÀ½ÀÇ ¸®½ºÆ®¿¡ º¸¿©Áö´Â °Íó·³ IRP¾È¿¡ ÀÚ½ÅÀÇ ½ºÅà ·ÎÄÉÀ̼ǿ¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ ¾ò±â À§Çؼ­ ÁÖ¾îÁø IRP¸¦ °¡Áö°í IoGetCurrentIrpStackLocation ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù. Æ®·£½ºÆ÷Æ®´Â ÁøÇàÁßÀÎ ´Ý±â ¸®Äù½ºÆ®¿¡ IRPÀÇ ´ÙÀ½ÀÇ ¸â¹ö¾È¿¡ ¼³Á¤µÈ Á¤º¸¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù:

IoStatus.Status
´Ý±â ¿¬»êÀÇ ¸¶Áö¸· »óŸ¦ ¼­¼úÇÑ´Ù. Æ®·£½ºÆ÷Æ®´Â TdiDispatchClose ÇÔ¼ö¿¡ ÀÇÇØ¼­ ¸®ÅϵǴ ¶È°°Àº °ªÀ¸·Î ÀÌ ¸â¹ö¸¦ ¼³Á¤ÇÑ´Ù.(IoStatus.Information´Â 0 À¸·Î ¼³Á¤µÈ´Ù.)

IrpSp->MajorFunction
IRP_MJ_CLOSE¸¦ ¼­¼úÇÑ´Ù. Æ®·£½ºÆ÷Æ®°¡ ´Ý±â ¸®Äù½ºÆ®¸¸À» ó¸®ÇÏ´Â TdiDispatchClose ·çƾÀ» ÀͽºÆ÷Æ®ÇÑ´Ù¸é ÀÌ ¸â¹ö¸¦ ¹«½ÃÇÒ ¼ö ÀÖ´Ù.

IrpSp->FileObject
ÁÖ¼Ò, ¿¬°á ¿£µåÆ÷ÀÎÆ®, ÅëÁ¦ ä³ÎÀ» ±¸ÇöÇÏ´Â ÆÄÀÏ °´Ã¼¸¦ ¼­¼úÇÑ´Ù. Æ®·£½ºÆ÷Æ® µå¶óÀ̹ö´Â TdiDispatchCleanup ÇÔ¼ö°¡ Àü¿¡ ÇØÁ¦ÇÏÁö ¾ÊÀº À¯ÁöµÇ´Â µå¶óÀ̹ö ÇÒ´ç »óÅ·ΠÁ¢±ÙÇϱâ À§Çؼ­ ÀÌ ÆÄÀÏ °´Ã¼ÀÇ FsContext¿Í °¡´ÉÇÏ´Ù¸é FsContext2ÀÇ °ªÀ» »ç¿ëÇÑ´Ù.

¸®Åϰª

´ÝÈ÷´Â ÆÄÀÏ °´Ã¼¸¦ À§Çؼ­ ÁÖ¾îÁø ÁÖ¼Ò, ¿¬°á ¿£µåÆ÷ÀÎÆ®, ÅëÁ¦ ä³ÎÀ» Æ®·¢Çϱâ À§ÇØ ÇÒ´çµÈ ÀÚ¿øÀ» ÇØÁ¦ÇϵíÀÌ TdiDispatchClose ÇÔ¼ö´Â µå¶óÀ̹ö °áÁ¤ ¿¬»êÀÌ ¼öÇàµÆÀ» ¶§ STATUS_SUCCESS¸¦ ¸®ÅÏÇÑ´Ù.

ÁÖ¼®

ÁÖ¼Ò, ¿¬°á ¿£µåÆ÷ÀÎÆ®, ÅëÁ¦ ä³ÎÀ» ±¸ÇöÇÏ´Â ÆÄÀÏ °´Ã¼ÀÇ Çڵ鿡 ´ëÇÑ ¸¶Áö¸· ÂüÁ¶¸¦ I/O ¸Å´ÏÀú°¡ ÇØÁ¦ÇÒ ¶§ TdiDispatchClose ÇÔ¼ö°¡ ½ÇÇàµÈ´Ù. ÆÄÀÏ Çڵ鿡 ´ëÇÑ ÀÌ ¸¶Áö¸· ÂüÁ¶°¡ ÇØÁ¦µÆÀ» ¶§ ÆÄÀÏ °´Ã¼°¡ ÇØÁ¦µÈ´Ù.

ÁÖ¼Ò, ¿¬°á ¿£µåÆ÷ÀÎÆ®, ÅëÁ¦ ä³ÎÀ» ±¸ÇöÇÏ´Â ¿­¸° ÆÄÀÏ °´Ã¼¿¡ ´ëÇÑ ¸¶Áö¸· ÇÚµéÀ» I/O ¸Å´ÏÀú°¡ ´ÝÀ» ¶§ I/O ¸Å´ÏÀú´Â TdiDispatchCleanup ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù. ¹Ù²Ù¾î ¸»ÇÏ¸é Æ¯Á¤ ÆÄÀÏ °´Ã¼¿¡ ´ëÇÑ IRP_MJ_CLOSE ¸®Äù½ºÆ®¸¦ Á¦ÃâÇϱâ Àü¿¡ I/O ¸Å´ÏÀú´Â Ç×»ó Æ®·£½ºÆ÷Æ®·Î IRP_MJ_CLEANUP ¸®Äù½ºÆ®¸¦ Á¦ÃâÇÑ´Ù.

ÁÖ¼Ò, ¿¬°á ¿£µåÆ÷ÀÎÆ®, ÅëÁ¦ ä³ÎÀ» ´Ý´Â °ÍÀº ¿ø·¡ µ¿±âÀûÀÎ ¿¬»êÀÌ´Ù. TdiDispatchClose ÇÔ¼ö´Â ƯÁ¤ ÀÛ¾÷À» ó¸®Çϱâ À§Çؼ­ ³»ºÎÀÇ µå¶óÀ̹ö ÇÔ¼ö¸¦ ±â´Ù¸®´Â °ÍÀ» ¹æÇØÇÒ ¼ö ÀÖÁö¸¸ TdiDispatchClose ÇÔ¼ö´Â ÀÔ·Â ´Ý±â IRP ÀÚü¸¦ ¿Ï·áÇØ¾ßÇÑ´Ù.

TdiDispatchCleanup ÇÔ¼ö¿¡ ÀÇÇØ¼­ ¸ðµç ÀÚ¿øÀÌ ÇØÁ¦µÇÁö ¾Ê´Â´Ù¸é TdiDispatchClose ÇÔ¼ö´Â ÁÖ¾îÁø ÆÄÀÏ °´Ã¼¿Í ¿¬°üµÈ µå¶óÀ̹ö ÇÒ´ç ÀÚ¿øÀ» ÇØÁ¦ÇؾßÇϴ åÀÓÀÌ ÀÖ´Ù.

±âº»ÀûÀ¸·Î TdiDispatchClose ÇÔ¼ö´Â IRQL PASSIVE_LEVEL¿¡¼­ ½ÇÇàµÈ´Ù.