TdiBuildInternalDeviceControlIrp
PIRP
TdiBuildInternalDeviceControlIrp (
IN CCHAR IrpSubFunction,
IN PDEVICE_OBJECT DeviceObject,
IN PFILE_OBJECT FileObject,
IN PKEVENT Event,
IN PIO_STATUS_BLOCK IoStatusBlock
);
TdiBuildInternalDeviceControlIrp ÇÔ¼ö´Â Ŭ¶óÀÌ¾ðÆ®°¡ ½ÃÀÛÇÏ´Â ³»ºÎ ÀåÄ¡ ÅëÁ¦ ¸®Äù½ºÆ®¸¦ À§Çؼ IRP¸¦ ÇÒ´çÇÑ´Ù. ±×°ÍÀÌ ¸®ÅÏÇÑ ÈÄ¿¡ Ŭ¶óÀÌ¾ðÆ®´Â IoCallDriver ÇÔ¼ö¸¦ °¡Áö°í ¸®Äù½ºÆ®¸¦ ÇϱâÀü¿¡ ÇϺΠƮ·£½ºÆ÷Æ® µå¶óÀ̹öÀÇ I/O ½ºÅà ·ÎÄÉÀ̼ÇÀ» ¼³Á¤Çϱâ À§Çؼ ¸®ÅÏµÈ IRP¸¦ °¡Áö°í ¶Ç´Ù¸¥ TdiBuildXxx ¸ÅÅ©·Î¸¦ È£ÃâÇÑ´Ù.
¸Å°³º¯¼ö
- IrpSubFunction
- ¸®ÅÏµÈ IRP¸¦ À§Çؼ MinorFunction·Î½á TdiBuildXxx ¸ÅÅ©·Î·ÎÀÇ ¼øÂ÷ÀûÀΠȣÃâ¿¡¼ ¼³Á¤µÉ TDI_XXX Äڵ带 ¼¼úÇÑ´Ù. ÀÌ ¸Å°³º¯¼ö´Â ´ÙÀ½Áß Çϳª°¡ µÉ ¼ö ÀÖ´Ù:
- TDI_ASSOCIATE_ADDRESS
- È£ÃâÀÚ´Â TdiBuildAssociateAddress ÇÔ¼ö·Î ¸®ÅÏµÈ IRP¸¦ Àü´ÞÇÒ °ÍÀÌ´Ù.
-
- TDI_DISASSOCIATE_ADDRESS
- È£ÃâÀÚ´Â TdiBuildDisassociateAddress ÇÔ¼ö·Î ¸®ÅÏµÈ IRP¸¦ Àü´ÞÇÒ °ÍÀÌ´Ù.
-
- TDI_CONNECT
- È£ÃâÀÚ´Â TdiBuildConnect ÇÔ¼ö·Î ¸®ÅÏµÈ IRP¸¦ Àü´ÞÇÒ °ÍÀÌ´Ù.
-
- TDI_LISTEN
- È£ÃâÀÚ´Â TdiBuildListen ÇÔ¼ö·Î ¸®ÅÏµÈ IRP¸¦ Àü´ÞÇÒ °ÍÀÌ´Ù.
-
- TDI_ACCEPT
- È£ÃâÀÚ´Â TdiBuildAccept ÇÔ¼ö·Î ¸®ÅÏµÈ IRP¸¦ Àü´ÞÇÒ °ÍÀÌ´Ù.
-
- TDI_DISCONNECT
- È£ÃâÀÚ´Â TdiBuildDisconnect ÇÔ¼ö·Î ¸®ÅÏµÈ IRP¸¦ Àü´ÞÇÒ °ÍÀÌ´Ù.
-
- TDI_SEND
- È£ÃâÀÚ´Â TdiBuildSend ÇÔ¼ö·Î ¸®ÅÏµÈ IRP¸¦ Àü´ÞÇÒ °ÍÀÌ´Ù.
-
- TDI_RECEIVE
- È£ÃâÀÚ´Â TdiBuildReceive ÇÔ¼ö·Î ¸®ÅÏµÈ IRP¸¦ Àü´ÞÇÒ °ÍÀÌ´Ù.
-
- TDI_SEND_DATAGRAM
- È£ÃâÀÚ´Â TdiBuildSendDatagram ÇÔ¼ö·Î ¸®ÅÏµÈ IRP¸¦ Àü´ÞÇÒ °ÍÀÌ´Ù.
-
- TDI_RECEIVE_DATAGRAM
- È£ÃâÀÚ´Â TdiBuildReceiveDatagram ÇÔ¼ö·Î ¸®ÅÏµÈ IRP¸¦ Àü´ÞÇÒ °ÍÀÌ´Ù.
-
- TDI_SET_EVENT_HANDLER
- È£ÃâÀÚ´Â TdiBuildSetEventHandler ÇÔ¼ö·Î ¸®ÅÏµÈ IRP¸¦ Àü´ÞÇÒ °ÍÀÌ´Ù.
-
- TDI_QUERY_INFORMATION
- È£ÃâÀÚ´Â TdiBuildQueryInformation ÇÔ¼ö·Î ¸®ÅÏµÈ IRP¸¦ Àü´ÞÇÒ °ÍÀÌ´Ù.
-
- TDI_SET_INFORMATION
- È£ÃâÀÚ´Â TdiBuildSetInformation ÇÔ¼ö·Î ¸®ÅÏµÈ IRP¸¦ Àü´ÞÇÒ °ÍÀÌ´Ù.
-
- TDI_ACTION
- È£ÃâÀÚ´Â TdiBuildAction ÇÔ¼ö·Î ¸®ÅÏµÈ IRP¸¦ Àü´ÞÇÒ °ÍÀÌ´Ù.
-
- DeviceObject
- ÇϺÎÀÇ TDI Æ®·£½ºÆ÷Æ® µå¶óÀ̹ö¿¡ ÀÇÇØ¼ »ý¼ºµÈ ÀåÄ¡ °´Ã¼¸¦ °¡¸®Å²´Ù.
- FileObject
- ÁÖ¾îÁø IrpSubFunction¿¡ ÀÇÁ¸ÇÏ¿© ÁÖ¼Ò, ¿¬°á ¿£µåÆ÷ÀÎÆ®, ÅëÁ¦ ä³ÎÀ» ±¸ÇöÇÏ´Â ÆÄÀÏ °´Ã¼¸¦ °¡¸®Å²´Ù.
- Event
- È£ÃâÀÚ°¡ ÀúÀå¼Ò¸¦ Á¦°øÇϱâ À§Çؼ ÃʱâÈµÈ À̺¥Æ® °´Ã¼¸¦ °¡¸®Å²´Ù.
- IoStatusBlock
- IO_STATUS_BLOCK ŸÀÔÀÇ È£ÃâÀÚ Á¦°ø º¯¼ö¸¦ °¡¸®Å²´Ù.
¸®Åϰª
TdiBuildInternalDeviceControlIrp ÇÔ¼ö´Â ÇÒ´çµÈ IRP¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ ¸®ÅÏÇÑ´Ù. ÇÒ´ç ½Ãµµ°¡ ½ÇÆÐÇÑ´Ù¸é NULLÀ» ¸®ÅÏÇÑ´Ù.
ÁÖ¼®
TDI Æ®·£½ºÆ÷Æ®ÀÇ Ä¿³Î ¸ðµå Ŭ¶óÀÌ¾ðÆ®´Â TdiBuildInternalDeviceControlIrp ÇÔ¼öÀÇ È£Ãâ¾øÀÌ IRP¸¦ TdiBuildXxx ¸ÅÅ©·Î·Î Á÷Á¢ ¿©ÀüÈ÷ »óÀ§ ·¹º§ÀÎ ´ÏÆ®¿÷ ÄÄÆ÷³ÍÆ®¿¡ ÀÇÇØ¼ ¹ØÀ¸·Î Àü´ÞµÈ´Ù.
±×·¯³ª ±×·¯ÇÑ Å¬¶óÀÌ¾ðÆ®´Â µé¾î¿À´Â IRP¸¦ ÇÏÀÌÀçÅ·ÇØ¼´Â ¾ÈµÈ´Ù. ±×¸®°í ±× ´ë½Å¿¡ ÇϺΠƮ·£½ºÆ÷Æ®·ÎÀÇ ³»ºÎ ÀåÄ¡ ÅëÁ¦ ¸®Äù½ºÆ®¸¦ Çϱâ À§Çؼ ±×°ÍÀ» Àç»ç¿ëÇÑ´Ù. ´ë½Å¿¡ Ŭ¶óÀÌ¾ðÆ®´Â ±×·¯ÇÑ ¸®Äù½ºÆ®¸¦ °¡Áö°í ÀÚ½ÅÀÇ IRP¸¦ ¾ò±â À§Çؼ TdiBuildInternalDeviceControlIrp ÇÔ¼ö¸¦ È£ÃâÇÒ ¼ö ÀÖ´Ù.
TdiBuildInternalDeviceControl ÇÔ¼ö°¡ IRP¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ ¸®ÅÏÇÑ ÈÄ¿¡ Ŭ¶óÀÌ¾ðÆ®´Â IoCallDriver ÇÔ¼ö¸¦ °¡Áö°í Æ®·£½ºÆ÷Æ®ÂÊÀ¸·Î IRP¸¦ Àü´ÞÇϱâ Àü¿¡ TDI_XXX¸¦ ¿ä±¸ÇÏ´Â Ãß°¡ÀûÀÎ ¸Å°³º¯¼ö¿¡ µû¶ó¼ ÀûÀýÇÑ TdiBuildXxx ¸ÅÅ©·Î·Î IRP¸¦ Àü´ÞÇØ¾ßÇÑ´Ù. TdiBuildInternalDeviceControl ÇÔ¼ö´Â ÇÒ´çµÈ IRP¾È¿¡¼ ÇϺΠƮ·£½ºÆ÷Æ®ÀÇ I/O ½ºÅà ·ÎÄÉÀ̼ÇÀ» ºÎºÐÀûÀ¸·Î ¼³Á¤ÇÑ´Ù. ±×·¯³ª TdiBuildXxx ¸ÅÅ©·Î°¡ ÇÏ´Â °Íó·³ TDI_XXX ¸®Äù½ºÆ®¸¦ À§Çؼ TDI Æ®·£½ºÆ÷Æ®ÀÇ ¿¹»ó¿¡ µû¶ó¼ I/O ½ºÅà ·ÎÄÉÀ̼ÇÀ» Æ÷¸ËÇÏÁö´Â ¾Ê´Â´Ù.
IoCallDriver ÇÔ¼ö·ÎÀÇ È£Ãâ¿¡ ´ëÇÑ Æ¯Â¡¿¡ ´ëÇØ¼´Â Ä¿³Î ¸ðµå µå¶óÀ̹ö ·¹ÆÛ·±½º¸¦ ºÁ¶ó.
Ŭ¶óÀÌ¾ðÆ®°¡ TdiBuildInternalDeviceControlIrp ÇÔ¼ö¸¦ È£ÃâÇßÀ» ¶§ À̺¥Æ® Æ÷ÀÎÅ͸¦ Á¦°øÇÏ´Ù¸é I/O ¸Å´ÏÀú´Â IRP°¡ ÇÏÀ§ µå¶óÀ̹ö¿¡ ÀÇÇØ¼ ¿Ï·áµÉ ¶§ À̺¥Æ®¸¦ ½Ã±×³Î »óÅ·Π¼³Á¤ÇÒ °ÍÀÌ´Ù. ±×·¯³ª Ŭ¶óÀÌ¾ðÆ®´Â Å¬¶óÀÌ¾ðÆ® »ý¼º ½º·¹µå³ª °¡´ÉÇÏ´Ù¸é À̰ÍÀÌ È£ÃâµÇ¾úÀ» ¶§ ½ÇÇàµÇ´Â ½º·¹µåó·³ ÀûÀýÇÑ ½º·¹µå ÄÁÅØ½ºÆ®¿¡¼ IRQL PASSIVE_LEVEL¿¡¼ ±â´Ù¸®Áö ¾Ê´Â´Ù¸é IRPÀÇ ¿Ï·á¸¦ À§Çؼ ±× À̺¥Æ®¿¡¼ ±â´Ù¸± ¼ö ¾ø´Ù.
TdiBuildInternalDeviceControlIrp ÇÔ¼öÀÇ È£ÃâÀÚ´Â IRQL PASSIVE_LEVEL¿¡¼ ½ÇÇàµÇ¾î¾ßÇÑ´Ù. °á°úÀûÀ¸·Î Ŭ¶óÀÌ¾ðÆ®´Â ÀÌ ÇÔ¼ö¸¦ °¡Áö°í ¸î¸î IRP¸¦ ¹Ì¸® ÇÒ´çÇØ¾ßÇÑ´Ù. ±×·¡¼ Ŭ¶óÀÌ¾ðÆ®´Â »óÀ§ IRQL¿¡¼ ½ÇÇàµÉ ¶§ ±×°ÍÀ» TDI_XXX ¸®Äù½ºÆ®¸¦ Á¦ÃâÇϱâ À§Çؼ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
|