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 ±¸Á¶Ã¼ÀÇ Æ÷ÀÎÅ͸¦ ¼¼úÇØ¾ßÇÑ´Ù.
|