TdiBuildQueryInformation

VOID
   TdiBuildQueryInformation (
       IN PIRP Irp,
       IN PDEVICE_OBJECT DevObj,
       IN PFILE_OBJECT FileObj,
       IN PVOID CompRoutine,
       IN PVOID Contxt,
       IN UINT QType,
       IN PMDL MdlAddr
  
   );

TdiBuildQueryInformation ÇÔ¼ö´Â ·ÎÄà Ŭ¶óÀÌ¾ðÆ®°¡ ÁÖ¼Ò, ¿¬°á ¿£µåÆ÷ÀÎÆ®, ÅëÁ¦ ä³ÎÀ» ±¸ÇöÇÏ´Â ÀåÄ¡ °´Ã¼¸¦ ÀÌ¹Ì ¿¬ ÇϺÎÀÇ Æ®·£½ºÆ÷Æ®·Î TDI_QUERY_INFORMATION ¸®Äù½ºÆ®¸¦ À§Çؼ­ ³»ºÎ ÀåÄ¡ ÅëÁ¦ IRP¸¦ ¼³Á¤ÇÑ´Ù.

¸Å°³º¯¼ö

Irp
´õ »óÀ§ ·¹º§ÀÇ ³×Æ®¿÷ ÄÄÆ÷³ÍÆ®¿¡¼­ ¹ß»ýÇϰųª TdiBuildInternalDeviceControlIrp ÇÔ¼ö¸¦ °¡Áö°í ÇÒ´çµÈ Ŭ¶óÀÌ¾ðÆ® Á¦°ø IRP¸¦ °¡¸®Å²´Ù.

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

FileObj
ÁÖ¼Ò, ¿¬°á ¿£µåÆ÷ÀÎÆ®, ÅëÁ¦ ä³ÎÀ» ±¸ÇöÇÏ´Â ÆÄÀÏ °´Ã¼¸¦ °¡¸®Å²´Ù.

CompRoutine
Ŭ¶óÀÌ¾ðÆ® Á¦°ø IoCompletion ·çƾÀÇ ¿£Æ®¸® Æ÷ÀÎÆ®¸¦ ¼­¼úÇϰųª NULLÀÌ´Ù. Ŭ¶óÀÌ¾ðÆ®°¡ ÀÌ ¸Å°³º¯¼ö¸¦ NULL·Î ¼³Á¤ÇÏÁö ¾Ê´Â´Ù¸é ÁÖ¾îÁø IRP°¡ ¿Ï·áµÉ ¶§ I/O ¸Å´ÏÀú´Â ÀÌ ·çƾÀ» È£ÃâÇÑ´Ù.

Contxt
Ŭ¶óÀÌ¾ðÆ® °áÁ´ ÄÁÅØ½ºÆ®¸¦ °¡¸®Å²´Ù. ÀÌ Å¬¶óÀÌ¾ðÆ® Á¦°ø Æ÷ÀÎÅÍ´Â ¿Ï·áµÈ IRP¸¦ °¡Áö°í È£ÃâµÉ ¶§ IoCompletion ·çƾÀ¸·Î Àü´ÞµÈ´Ù. CompRoutineÀÌ NULLÀ̸é Contxt´Â NULLÀÌ´Ù.

QType
Ŭ¶óÀÌ¾ðÆ®°¡ ¹«¾ùÀ» Äõ¸®ÇÏ´ÂÁö¸¦ ¼­¼úÇÑ´Ù. ÀÌ ¸Å°³º¯¼ö´Â ¸ðµç Æ®·£½ºÆ÷Æ®°¡ Áö¿øÇÏ´Â Äõ¸®¿¡ ´ëÇØ¼­ ´ÙÀ½ÀÇ ½Ã½ºÅÛ Á¤ÀÇ °ªÀ̰ųª Æ®·£½ºÆ÷Æ® Á¤ÀÇ °ªÀÌ´Ù:

TDI_QUERY_ADDRESS_INFO
Æ®·£½ºÆ÷Æ®´Â MdlAddr¿¡ ¸ÊµÈ Ŭ¶óÀÌ¾ðÆ® Á¦°ø ¹öÆÛ·Î TDI_ADDRESS_INFO ±¸Á¶Ã¼·Î½á Æ÷¸ËµÈ Á¤º¸¸¦ ¸®ÅÏÇØ¾ßÇÑ´Ù´Â °ÍÀ» ¼­¼úÇÑ´Ù.

FileObj´Â Æ®·£½ºÆ÷Æ® ÁÖ¼Ò¸¦ ±¸ÇöÇϰųª Æ®·£½ºÆ÷Æ® ÁÖ¼Ò¿Í ÀÌ¹Ì ¿¬°üµÈ ¿¬°á ¿£µåÆ÷ÀÎÆ®¸¦ ±¸ÇöÇÏ´Â ¿­¸° ÆÄÀÏ °´Ã¼¸¦ °¡¸®ÄѾßÇÑ´Ù.

TDI_QUERY_CONNECTION_INFO
Æ®·£½ºÆ÷Æ®´Â MdlAddr¿¡ ¸ÊµÈ Ŭ¶óÀÌ¾ðÆ® Á¦°ø ¹öÆÛ·Î TDI_CONNECTION_INFO ±¸Á¶Ã¼·Î½á Æ÷¸ËµÈ Á¤º¸¸¦ ¸®ÅÏÇØ¾ßÇÑ´Ù´Â °ÍÀ» ¼­¼úÇÑ´Ù.

FileObj´Â ¿¬°á ¿£µåÆ÷ÀÎÆ®¸¦ ±¸ÇöÇÏ´Â ¿­¸° ÆÄÀÏ °´Ã¼¸¦ °¡¸®ÄѾßÇÑ´Ù.

TDI_QUERY_BROADCAST_ADDRESS
Æ®·£½ºÆ÷Æ®´Â MdlAddr¿¡ ¸ÊµÈ Ŭ¶óÀÌ¾ðÆ® Á¦°ø ¹öÆÛ·Î TRANSPORT_ADDRESS ±¸Á¶Ã¼·Î½á Æ÷¸ËµÈ Á¤º¸¸¦ ¸®ÅÏÇØ¾ßÇÑ´Ù´Â °ÍÀ» ¼­¼úÇÑ´Ù.

FileObj´Â ÅëÁ¦ ä³ÎÀ» ±¸ÇöÇÏ´Â ¿­¸° ÆÄÀÏ °´Ã¼¸¦ °¡¸®ÄѾßÇÑ´Ù.

TDI_QUERY_NETWORK_ADDRESS
Æ®·£½ºÆ÷Æ®´Â MdlAddr¿¡ ¸ÊµÈ Ŭ¶óÀÌ¾ðÆ® Á¦°ø ¹öÆÛ·Î TRANSPORT_ADDRESS ±¸Á¶Ã¼·Î½á Æ÷¸ËµÈ Á¤º¸¸¦ ¸®ÅÏÇØ¾ßÇÑ´Ù´Â °ÍÀ» ¼­¼úÇÑ´Ù.

FileObj´Â ÅëÁ¦ ä³ÎÀ» ±¸ÇöÇÏ´Â ¿­¸° ÆÄÀÏ °´Ã¼¸¦ °¡¸®ÄѾßÇÑ´Ù.

TDI_QUERY_DATA_LINK_ADDRESS
Æ®·£½ºÆ÷Æ®´Â MdlAddr¿¡ ¸ÊµÈ Ŭ¶óÀÌ¾ðÆ® Á¦°ø ¹öÆÛ·Î TRANSPORT_ADDRESS ±¸Á¶Ã¼·Î½á Æ÷¸ËµÈ Á¤º¸¸¦ ¸®ÅÏÇØ¾ßÇÑ´Ù´Â °ÍÀ» ¼­¼úÇÑ´Ù.

FileObj´Â ÅëÁ¦ ä³ÎÀ» ±¸ÇöÇÏ´Â ¿­¸° ÆÄÀÏ °´Ã¼¸¦ °¡¸®ÄѾßÇÑ´Ù.

TDI_QUERY_PROVIDER_INFO ȤÀº TDI_QUERY_PROVIDER_INFORMATION
Æ®·£½ºÆ÷Æ®´Â MdlAddr¿¡ ¸ÊµÈ Ŭ¶óÀÌ¾ðÆ® Á¦°ø ¹öÆÛ·Î TDI_PROVIDER_INFO ±¸Á¶Ã¼·Î½á Æ÷¸ËµÈ Á¤º¸¸¦ ¸®ÅÏÇØ¾ßÇÑ´Ù´Â °ÍÀ» ¼­¼úÇÑ´Ù.

FileObj´Â ÅëÁ¦ ä³ÎÀ» ±¸ÇöÇÏ´Â ¿­¸° ÆÄÀÏ °´Ã¼¸¦ °¡¸®ÄѾßÇÑ´Ù.

TDI_QUERY_PROVIDER_STATISTICS
Æ®·£½ºÆ÷Æ®´Â MdlAddr¿¡ ¸ÊµÈ Ŭ¶óÀÌ¾ðÆ® Á¦°ø ¹öÆÛ·Î TDI_PROVIDER_STATISTICS ±¸Á¶Ã¼·Î½á Æ÷¸ËµÈ Á¤º¸¸¦ ¸®ÅÏÇØ¾ßÇÑ´Ù´Â °ÍÀ» ¼­¼úÇÑ´Ù.

FileObj´Â ÅëÁ¦ ä³ÎÀ» ±¸ÇöÇÏ´Â ¿­¸° ÆÄÀÏ °´Ã¼¸¦ °¡¸®ÄѾßÇÑ´Ù.

TDI_QUERY_DATAGRAM_INFO
Æ®·£½ºÆ÷Æ®´Â MdlAddr¿¡ ¸ÊµÈ Ŭ¶óÀÌ¾ðÆ® Á¦°ø ¹öÆÛ·Î TDI_DATAGRAM_INFO ±¸Á¶Ã¼·Î½á Æ÷¸ËµÈ Á¤º¸¸¦ ¸®ÅÏÇØ¾ßÇÑ´Ù´Â °ÍÀ» ¼­¼úÇÑ´Ù.

FileObj´Â º¸Åë ÅëÁ¦ ä³ÎÀ» ±¸ÇöÇÏ´Â ¿­¸° ÆÄÀÏ °´Ã¼¸¦ °¡¸®ÄѾßÇÑ´Ù. ÇϺÎÀÇ Æ®·£½ºÆ÷Æ®°¡ ±×°ÍÀ» Áö¿øÇÑ´Ù¸é FileObj´Â ÁÖ¼Ò¸¦ ±¸ÇöÇÏ´Â ¿­¸° ÆÄÀÏ °´Ã¼¸¦ °¡¸®ÄѾßÇÑ´Ù.

TDI_QUERY_MAX_DATAGRAM_INFO
Æ®·£½ºÆ÷Æ®´Â MdlAddr¿¡ ¸ÊµÈ Ŭ¶óÀÌ¾ðÆ® Á¦°ø ¹öÆÛ·Î TDI_MAX_DATAGRAM_INFO ±¸Á¶Ã¼·Î½á Æ÷¸ËµÈ Á¤º¸¸¦ ¸®ÅÏÇØ¾ßÇÑ´Ù´Â °ÍÀ» ¼­¼úÇÑ´Ù.

FileObj´Â º¸Åë ÅëÁ¦ ä³ÎÀ» ±¸ÇöÇÏ´Â ¿­¸° ÆÄÀÏ °´Ã¼¸¦ °¡¸®ÄѾßÇÑ´Ù. ÇϺÎÀÇ Æ®·£½ºÆ÷Æ®°¡ ±×°ÍÀ» Áö¿øÇÑ´Ù¸é FileObj´Â ÁÖ¼Ò¸¦ ±¸ÇöÇÏ´Â ¿­¸° ÆÄÀÏ °´Ã¼¸¦ °¡¸®ÄѾßÇÑ´Ù.

ÇϺÎÀÇ Æ®·£½ºÆ÷Æ®´Â µå¶óÀ̹ö °³¹ßÀÚÀÇ °áÁ¤¿¡¼­ Á¤º¸ Äõ¸® ¸®Äù½ºÆ®ÀÇ Ãß°¡ÀûÀΠŸÀÔÀ» Áö¿øÇÒ ¼ö ÀÖ´Ù. ±×·¯ÇÑ Æ®·£½ºÆ÷Æ®´Â °¡Àå Áß¿äÇÑ ºñÆ®°¡ ¼³Á¤µÈ TDI_QUERY_XXX Äڵ带 Á¤ÀÇÇØ¾ßÇÑ´Ù.

°Ô´Ù°¡ NetBIOS Æ®·£½ºÆ÷Æ®ÀÇ Å¬¶óÀÌ¾ðÆ®´Â QTypeÀ» À§Çؼ­ ´ÙÀ½À» ¼­¼úÇØ¾ßÇÑ´Ù:

TDI_QUERY_SESSION_STATUS
Æ®·£½ºÆ÷Æ®´Â MdlAddr¿¡ ¸ÊµÈ Ŭ¶óÀÌ¾ðÆ® Á¦°ø ¹öÆÛ·Î SESSION_BUFFER ±¸Á¶Ã¼¿¡ ÀÇÇØ¼­ µÚµû¸£´Â SESSION_HEADER·Î½á Æ÷¸ËµÈ Á¤º¸¸¦ ¸®ÅÏÇØ¾ßÇÑ´Ù´Â °ÍÀ» ¼­¼úÇÑ´Ù.

FileObj´Â ÅëÁ¦ ä³ÎÀ» ±¸ÇöÇÏ´Â ¿­¸° ÆÄÀÏ °´Ã¼¸¦ °¡¸®ÄѾßÇÑ´Ù.

TDI_QUERY_ADAPTER_STATUS
Æ®·£½ºÆ÷Æ®´Â MdlAddr¿¡ ¸ÊµÈ Ŭ¶óÀÌ¾ðÆ® Á¦°ø ¹öÆÛ·Î ADAPTER_STATUS ±¸Á¶Ã¼·Î½á Æ÷¸ËµÈ Á¤º¸¸¦ ¸®ÅÏÇØ¾ßÇÑ´Ù´Â °ÍÀ» ¼­¼úÇÑ´Ù.

FileObj´Â ÅëÁ¦ ä³ÎÀ» ±¸ÇöÇÏ´Â ¿­¸° ÆÄÀÏ °´Ã¼¸¦ °¡¸®ÄѾßÇÑ´Ù.

¾ÕÀÇ ±¸Á¶Ã¼µé¿¡ ´ëÇÑ ´õ ¸¹Àº Á¤º¸´Â Ç÷§Æû SDK¸¦ ºÁ¶ó.

MdlAddr
Ŭ¶óÀÌ¾ðÆ®¿¡ ÀÇÇØ¼­ ¼³Á¤µÈ ÇÊ¿äÇÑ ¸®Äù½ºÆ® ƯÁ¤ Á¤º¸¸¦ Æ÷ÇÔÇϴ Ŭ¶óÀÌ¾ðÆ® Á¦°ø ¹öÆÛ¸¦ ¸ÅÇÎÇÏ´Â MDLÀ» °¡¸®Å²´Ù. Æ®·£½ºÆ÷Æ®´Â ÀÌ ¹öÆÛ¾ÈÀ¸·Î ÁÖ¾îÁø QType¿¡ µû¶ó¼­ Æ÷¸ËµÈ ¸®Äù½ºÆ®µÈ Á¤º¸¸¦ ¸®ÅÏÇÑ´Ù.

ÁÖ¼®

TdiBuildQueryInformation ÇÔ¼ö´Â ÁÖ¾îÁø IRPÀÇ Æ®·£½ºÆ÷Æ® I/O ½ºÅà ·ÎÄÉÀ̼Ǿȿ¡ MajorFunction·Î½á IRP_MJ_INTERNAL_DEVICE_CONTROLÀ» ¼³Á¤Çϰí MinorFunction·Î½á TDI_QUERY_INFORMATIONÀ» ¼³Á¤ÇÑ´Ù.

TDI Ŭ¶óÀÌ¾ðÆ®´Â ¿¬°á»óÅ Á¤º¸, Ŭ¶óÀÌ¾ðÆ®°¡ »ç¿ëÇÒ ¼ö ÀÖ´Â ºê·Îµåij½ºÆ® ÁÖ¼Ò, º¸³»±â³ª µ¥ÀÌŸ±×·¥À̳ª »ç¿ëÀÚ ¿¬°á µ¥ÀÌŸ¸¦ À§Çؼ­ »çÀÌÁî Á¦ÇѰú °°Àº Æ®·£½ºÆ÷Æ®ÀÇ Æ¯Â¡°°Àº Á¤º¸¸¦ À§Çؼ­ ÇϺÎÀÇ Æ®·£½ºÆ÷Æ®¿¡°Ô ¹°¾îº¸±â À§Çؼ­ Äõ¸® ¸®Äù½ºÆ®¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù.

Ŭ¶óÀÌ¾ðÆ®´Â ¸í½ÃµÈ QType¿¡ ÀÇÁ¸ÇÏ¿© ÁÖ¼Ò, ¿¬°á ¿£µåÆ÷ÀÎÆ®, ÅëÁ¦ ä³Î¿¡ ´ëÇÑ Á¤º¸¸¦ Äõ¸®ÇÒ ¼ö ÀÖ´Ù. Ŭ¶óÀÌ¾ðÆ®´Â ÁÖ¾îÁø QType¿¡ ÀûÀýÇÑ ¿­¸° ÆÄÀÏ °´Ã¼·Î TdiBuildQueryInformation ÇÔ¼ö¿¡ ´ëÇÑ FileObj Æ÷ÀÎÅ͸¦ Á¦°øÇؾßÇÑ´Ù. ±×·¸Áö ¾ÊÀ¸¸é ÇϺÎÀÇ Æ®·£½ºÆ÷Æ®´Â Äõ¸® ¸®Äù½ºÆ®¸¦ ¸¸Á·½Ãų ¼ö ¾ø´Ù.

TdiBuildQueryInformation ÇÔ¼ö´Â TDI_REQUEST_KERNEL_QUERY_INFORMATION ±¸Á¶Ã¼ÀÇ RequestConnectionInformation ¸â¹ö¸¦ NULL·Î ¼³Á¤Ç߱⠶§¹®¿¡ NetBIOS Æ®·£½ºÆ÷Æ®ÀÇ Å¬¶óÀÌ¾ðÆ®´Â TDI_QUERY_FIND_NAME ŸÀÔÀÇ Äõ¸®¸¦ °¡Áö°í TdiBuildQueryInformation ÇÔ¼ö¸¦ »ç¿ëÇÒ ¼ö ¾ø´Ù. TDI_QUERY_FIND_NAMEÀ» »ç¿ëÇÏ¿© TDI_QUERY_INFORMATION ¸®Äù½ºÆ®¿¡ ´ëÇÑ IRP¸¦ ¼³Á¤Çϱâ À§Çؼ­ NetBIOS Æ®·£½ºÆ÷Æ®ÀÇ Å¬¶óÀÌ¾ðÆ®´Â TdiBuildQueryInformation ÇÔ¼ö¸¦ À§Çؼ­ ±× ÄÚµå¿Í À¯»çÇÑ Äڵ带 »ç¿ëÇÒ ¼ö ÀÖÁö¸¸ RequestConnectionInformation¿¡ ´ëÇØ¼­ TDI_CONNECTION_INFORMATION ±¸Á¶Ã¼ÀÇ Æ÷ÀÎÅ͸¦ ¼­¼úÇØ¾ßÇÑ´Ù.