TdiMapUserRequest

NTSTATUS
   TdiMapUserRequest(
       IN PDEVICE_OBJECT DeviceObject,
       IN PIRP Irp,
       IN PIO_STACK_LOCATION IrpSp
       );

TdiMapUserRequest ÇÔ¼ö´Â ÀÔ·Â IRP¿¡ ¼­¼úµÈ IOCTL_TDI_XXX Äڵ带 ÀνÄÇÑ´Ù¸é MajorFunctionÀÌ IRP_MJ_DEVICE_CONTROL·Î ¼³Á¤µÈ ÁÖ¾îÁø IRP¸¦ IRP_MJ_INTERNAL_DEVICE_CONTROL ¸®Äù½ºÆ®·Î ¹Ù²Û´Ù.

¸Å°³º¯¼ö

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

Irp
º¯È¯µÇ´Â »ç¿ëÀÚ IOCTL_XXX ¸®Äù½ºÆ®¸¦ °¡¸®Å²´Ù.

IrpSp
º¯È¯µÇ´Â I/O ½ºÅà ·ÎÄÉÀ̼ÇÀ» °¡¸®Å²´Ù.

Æ®·£½ºÆ÷Æ®ÀÇ TdiDispatchDeviceControl ·çƾÀº ÀÌ Æ÷ÀÎÅ͸¦ ¾ò±â À§Çؼ­ ¹Ì¸® IoGetCurrentIrpStackLocation ÇÔ¼ö¸¦ È£ÃâÇß´Ù.

¸®Åϰª

TdiMapUserRequest ÇÔ¼ö°¡ ÁÖ¾îÁø IOCTL_TDI_XXX ÀåÄ¡ÅëÁ¦ ¸®Äù½ºÆ®¸¦ TDI_XXX ³»ºÎ ÀåÄ¡ÅëÁ¦ ¸®Äù½ºÆ®·Î ¹Ù²Û´Ù¸é ÀÌ ÇÔ¼ö´Â STATUS_SUCCESS¸¦ ¸®ÅÏÇÑ´Ù. ±×·¸Áö ¾ÊÀ¸¸é ´ÙÀ½Áß Çϳª¸¦ ¸®ÅÏÇÒ ¼ö ÀÖ´Ù:

STATUS_INVALID_PARAMETER
IOCTL_TDI_SET_EVENT_HANDLER°¡ ÀÔ·Â IRPÀÇ ÁÖ¾îÁø I/O ½ºÅà ·ÎÄÉÀ̼ǿ¡ ¼­¼úµÈ´Ù¸é »ç¿ëµÈ´Ù.

STATUS_NOT_IMPLEMENTED
TdiMapUserRequest ÇÔ¼ö°¡ ÀÔ·Â IRPÀÇ ÁÖ¾îÁø I/O ½ºÅà ·ÎÄÉÀ̼ǿ¡ ¼­¼úµÈ IOCTL_XXX Äڵ带 ÀνÄÇÏÁö ¸øÇÑ´Ù¸é »ç¿ëµÈ´Ù.

ÁÖ¼®

Æ®·£½ºÆ÷Æ®ÀÇ TdiDispatchDeviceControl ·çƾÀ¸·Î Àü´ÞµÈ IRP¿¡ ¼³Á¤µÉ ¼ö ÀÖ´Â ½Ã½ºÅÛ Á¤ÀÇ IOCTL_TDI_XXX ÄÚµåÀÇ ´ëºÎºÐÀ» À§Çؼ­ TdiMapUserRequest ÇÔ¼ö´Â ´ëÀÀÇÏ´Â Ä¿³Î ¸ðµå TDI_XXX ¸®Äù½ºÆ®ÀÇ Æ÷¸ËÀ¸·Î ÇöÀç I/O ½ºÅà ·ÎÄÉÀ̼ÇÀ» ¹Ù²Û´Ù.

¿¹¸¦µé¾î IrpSp->Parameters.DeviceIoControl.IoControlCode°¡ ÀÔ·Â IRP¿¡ IOCTL_TDI_LISTENÀ¸·Î ¼³Á¤µÈ´Ù¸é TdiMapUserRequest ÇÔ¼ö´Â ´ÙÀ½°ú °°ÀÌ I/O ½ºÅà ·ÎÄÉÀ̼ÇÀ» ´Ù½Ã Æ÷¸ËÇÑ´Ù:

  • IRP_MJ_INTERNAL_DEVICE_CONTROL·Î MajorFunctionÀ» ¸®¼ÂÇÑ´Ù.
  • MinorFunctionÀ» TDI_LISTENÀ¸·Î ¼³Á¤ÇÑ´Ù.
  • ÀÔ·Â Irp->AssociatedIrp.SystemBuffer°¡ NULLÀÌ ¾Æ´Ï¶ó¸é, IrpSp->Parameters¸¦ È£ÃâÀÚ Á¦°ø Á¤º¸¸¦ °¡Áö°í ¼³Á¤µÈ TDI_REQUEST_KERNEL_LISTEN ±¸Á¶Ã¼ÀÇ ÁÖ¼Ò·Î ¼³Á¤Çضó.
TdiDispatchDeviceControl ÇÔ¼ö´Â º¯ÇüµÈ IRP¸¦ °¡Áö°í TdiDispatchInternalDeviceControl ÇÔ¼ö¸¦ È£ÃâÇÒ ¼ö ÀÖ´Ù. ±×·¡¼­ ½Ã½ºÅÛ Á¤ÀÇ IOCTL_TDI_XXX¿Í ±×°Í¿¡ ´ëÀÀÇÏ´Â TDI_XXX ¸®Äù½ºÆ®ÀÇ Ã³¸®¸¦ À§Çؼ­ °¡Áö°í ÀÖ´Â º¹»çµÈ ÄÚµå°æ·Î·ÎºÎÅÍ Æ®·£½ºÆ÷Æ®¸¦ ÀúÀåÇÑ´Ù.

Ä¿³Î ¸ðµå TDI_REGISTER_EVENT_HANDLER°¡ ´ëÀÀÇÏ´Â »ç¿ëÀÚ IOCTL_TDI_REGISTER_EVENT_HANDLER¸¦ °¡Áö´Â µ¿¾È¿¡ TdiMapUserRequest ÇÔ¼ö´Â ±× ÀÔ·Â IRP¸¦ ¸ÊÇϱâ À§ÇÑ ½Ãµµ¸¦ ½ÇÆÐÇÑ´Ù. Ä¿³Î ¸ðµå Ŭ¶óÀÌ¾ðÆ®¸¸ÀÌ TDI Æ®·£½ºÆ÷Æ®¸¦ °¡Áö°í À̺¥Æ® Çڵ鷯¸¦ µî·ÏÇÒ ¼ö ÀÖ´Ù. ±×·¡¼­ Æ®·£½ºÆ÷Æ®ÀÇ TdiDispatchDeviceControl ·çƾÀº À̺¥Æ® Çڵ鷯¸¦ ¼³Á¤Çϱâ À§Çؼ­ À¯È¿ÇÑ ¸®Äù½ºÆ®¸¦ °¡Áö°í È£ÃâµÉ ¼ö ¾ø´Ù.

Æ®·£½ºÆ÷Æ®¿ÍÀÇ Åë½Å¿¡ ´ëÇØ¼­ Æ®·£½ºÆ÷Æ®¿¡ Çå½ÅÀûÀÎ Win32 ¾îÇø®ÄÉÀ̼ǿ¡ ÀÇÇØ¼­ »ç¿ëµÇ´Â Àü¿ë IOCTL_XXX Äڵ带 Æ®·£½ºÆ÷Æ®°¡ Á¤ÀÇÇÑ´Ù¸é Æ®·£½ºÆ÷Æ®ÀÇ TdiDispatchDeviceControl ·çƾÀº TdiMapUserRequest ÇÔ¼ö°¡ STATUS_NOT_SUPPORTED¸¦ ¸®ÅÏÇÏµç ¾Æ´Ïµç ±×·¯ÇÑ ¸®Äù½ºÆ®¸¦ ó¸®ÇÒ ¼ö ÀÖ´Ù. Á¤ÀÇµÈ µå¶óÀ̹ö ƯÁ¤ Àü¿ë IOCTL¿¡ ´ëÇÑ ´õ ¸¹Àº Á¤º¸´Â Ä¿³Î ¸ðµå µå¶óÀ̹ö ·¹ÆÛ·±½º¸¦ ºÁ¶ó.

TdiMapUserRequest ÇÔ¼öÀÇ È£ÃâÀÚ´Â IRQL PASSIVE_LEVEL¿¡¼­ ½ÇÇàÇÑ´Ù.