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 Äڵ忡 ´ëÇÑ ´õ ¸¹Àº Á¤º¸´Â Ä¿³Î ¸ðµå µå¶óÀ̹ö ·¹ÆÛ·±½º¸¦ ºÁ¶ó.
|