TdiDispatchDeviceControl

NTSTATUS
   TdiDispatchDeviceControl (
       IN PDEVICE_OBJECT DeviceObject,
       IN PIRP Irp,
       IN PIO_STACK IrpSp
  
   );

TdiDispatchDeviceControl ÇÔ¼ö´Â ¸ÞÀÌÀú ÇÔ¼ö Äڵ尡 IRP_MJ_DEVICE_CONTROL·Î ¼³Á¤µÈ IRP¸¦ ó¸®ÇÑ´Ù.

¸Å°³º¯¼ö

DeviceObject
TDI µå¶óÀ̹ö¿¡ ÀÇÇØ¼­ »ý¼ºµÈ ÀåÄ¡ °´Ã¼¸¦ °¡¸®Å²´Ù.

Irp
IRP¸¦ °¡¸®Å²´Ù.

IrpSp
ÁÖ¾îÁø IRP ¾È¿¡¼­ Æ®·£½ºÆ÷Æ® µå¶óÀ̹öÀÇ I/O ½ºÅà ·ÎÄÉÀ̼ÇÀ» °¡¸®Å²´Ù.

¸®Åϰª

TdiDispatchDeviceControl ÇÔ¼ö°¡ ÁÖ¾îÁø ¸®Äù½ºÆ®¸¦ ¸¸Á·ÇÑ´Ù¸é STATUS_SUCCESS¸¦ ¸®ÅÏÇÑ´Ù. ¹Ý¸é¿¡ IRP¾È¿¡ IOCTL_XXX ¸¶ÀÌ³Ê ÇÔ¼ö Äڵ忡 ÀÇÁ¸ÇÏ¿© µå¶óÀ̹ö °áÁ¤ ¿¡·¯»óŸ¦ ¸®ÅÏÇÑ´Ù.

ÁÖ¼®

º¸Åë TdiDispatchDeviceControl ÇÔ¼ö°¡ TdiMapUserRequest ÇÔ¼ö¸¦ È£ÃâÇϰí STATUS_SUCCESS¸¦ ¸®ÅÏÇÑ´Ù¸é ÀÔ·Â DeviceObject¿Í Irp Æ÷ÀÎÅ͸¦ °¡Áö°í Æ®·£½ºÆ÷Æ®ÀÇ TdiDispatchInternalDeviceControl ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù. Irp¿¡¼­ ÁÖ¾îÁø IOCTL_XXX°¡ ½Ã½ºÅÛ Á¤ÀÇ IOCTL_TDI_XXX ÄÚµå¿Í ÀÏÄ¡ÇÏÁö ¾Ê´Â´Ù´Â °ÍÀ» ÀεðÄÉÀÌÆ®ÇÏ´Â ¿¡·¯¸¦ TdiMapUserRequest ÇÔ¼ö°¡ ¸®ÅÏÇÑ´Ù¸é ´ëºÎºÐÀÇ Æ®·£½ºÆ÷Æ®´Â STATUS_INVALID_DEVICE_REQUEST ȤÀº STATUS_NOT_SUPPORTED¿Í °°Àº µå¶óÀ̹ö °áÁ¤ ¿¡¾î »óŸ¦ °¡Áö°í IRP¸¦ ¿Ï·áÇÑ´Ù.

±×·¯³ª Æ®·£½ºÆ÷Æ®ÀÇ ¾îÇø®ÄÉÀ̼ÇÀÌ Æ®·£½ºÆ÷Æ®¿Í Åë½ÅÇϱâ À§Çؼ­ »ç¿ëÇÏ´Â µå¶óÀ̹ö °áÁ¤ "Àü¿ë" IOCTLÀ» Æ®·£½ºÆ÷Æ®°¡ Áö¿øÇÑ´Ù¸é Æ®·£½ºÆ÷Æ®ÀÇ TdiDispatchDeviceControl ÇÔ¼ö´Â ÀÌ IOCTL_XXX¿¡¼­ ½ºÀ§Ä¡ÇÏ°í ±×µéÀ» ó¸®Çϱâ À§Çؼ­ ³»ºÎÀÇ µå¶óÀ̹ö ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù. À̰ÍÀº ¸¶Ä¡ TdiMapUserRequest ÇÔ¼ö°¡ STATUS_SUCCESS¸¦ ¸®ÅÏÇÒ ¶§ TdiDispatchInternalDeviceControl ÇÔ¼ö¸¦ È£ÃâÇÏ´Â °Í°ú °°´Ù.

µå¶óÀ̹ö Á¤ÀÇ IOCTL Äڵ忡 ´ëÇÑ ´õ ¸¹Àº Á¤º¸´Â Ä¿³Î ¸ðµå µå¶óÀ̹ö ·¹ÆÛ·±½º¸¦ ºÁ¶ó.