TdiRegisterDeviceObject

NTSTATUS
   TdiRegisterDeviceObject(
       IN PUNICODE_STRING DeviceName,
       OUT HANDLE *DevRegistrationHandle
       );

TdiRegisterDeviceObject ÇÔ¼ö´Â Æ®·£½ºÆ÷Æ®°¡ ƯÁ¤ Æ®·£½ºÆ÷Æ®¿Í NIC°úÀÇ ¹ÙÀεù »ó¿¡¼­ Ŭ¶óÀ̾ðÆ®ÀÇ ³×Æ®¿÷ I/O ¸®Äù½ºÆ®ÀÇ Å¸°ÙÀ» ±¸ÇöÇÏ´Â »õ·Î¿î ÀåÄ¡ °´Ã¼¸¦ »ý¼ºÇßÀ½À» Æ®·£½ºÆ÷Æ®ÀÇ Å¬¶óÀÌ¾ðÆ®¿¡°Ô ¾Ë¸°´Ù.

¸Å°³º¯¼ö

DeviceName
Æ®·£½ºÆ÷Æ® »ý¼º ÀåÄ¡ °´Ã¼¸¦ È®ÀÎÇÏ´Â À¯´ÏÄÚµå ¹®ÀÚ¿­À» Æ÷ÇÔÇϴ ȣÃâÀÚ ÇÒ´ç ¹öÆÛ¸¦ °¡¸®Å²´Ù.

DevRegistrationHandle
ÀÌ È£ÃâÀÌ ¼º°øÇÑ´Ù¸é ºÒÅõ¸íÇÑ ÇÚµéÀ» ¸®ÅÏÇÏ´Â TdiRegisterDeviceObject ÇÔ¼öÀÇ È£ÃâÀÚ Á¦°ø ·ÎÄÉÀ̼ÇÀÇ º¯¼ö¸¦ ¼­¼úÇÑ´Ù.

¸®Åϰª

TdiRegisterDeviceObject ÇÔ¼ö´Â ¸ðµç Æ®·£½ºÆ÷Æ®ÀÇ Å¬¶óÀÌ¾ðÆ® µî·ÏÀ» ¾Ë ¶§ STATUS_SUCCESS¸¦ ¸®ÅÏÇÑ´Ù. ±×·¸Áö ¾ÊÀ¸¸é STATUS_INSUFFICIENT_RESOURCES¸¦ ¸®ÅÏÇÑ´Ù. (½Ã½ºÅÛ ÀÚ¿øÀÇ »ç¿ëÀÌ µ¿ÀûÀ̱⠶§¹®¿¡ °°Àº Æ®·£½ºÆ÷Æ®·ÎÀÇ ¼øÂ÷ÀûÀΠȣÃâÀº ¼º°øÇÒ ¼ö ÀÖ´Ù.)

ÁÖ¼®

Æ®·£½ºÆ÷Æ® ½ºÅÃÀÌ ÇϺÎÀÇ NDIS ¹Ì´ÏÆ÷Æ® µå¶óÀ̹ö¿Í ¹ÙÀεùµÈ ÈÄ¿¡ TDI Æ®·£½ºÆ÷Æ®´Â »õ·Ó°Ô ¼º¸³µÈ Æ®·£½ºÆ÷Æ®¿Í NIC°úÀÇ ¹ÙÀεù»ó¿¡¼­ Ŭ¶óÀ̾ðÆ®ÀÇ ³×Æ®¿÷ I/O ¸®Äù½ºÆ®¿¡ ´ëÇØ¼­ Ÿ°ÙÀ» ±¸ÇöÇϱâ À§ÇØ IoCreateDevice ÇÔ¼ö¸¦ °¡Áö°í ¸í¸íµÈ ÀåÄ¡ °´Ã¼¸¦ »ý¼ºÇؾßÇÑ´Ù. ±×¸®°í³ª¼­ Æ®·£½ºÆ÷Æ®´Â TdiRegisterDeviceObject ÇÔ¼ö¸¦ È£ÃâÇØ¾ßÇÑ´Ù. À̰ÍÀº TDI·Î ÇÏ¿©±Ý ÁÖ¾îÁø DeviceName Æ÷ÀÎÅÍ¿Í ÀÔ·Â °ªÀÌ TDI_PNP_OPCODE_ADDÀÎ PnPOpcode¸¦ °¡Áö°í Æ®·£½ºÆ÷Æ® Ŭ¶óÀ̾ðÆ®ÀÇ ¸ðµç µî·ÏµÈ ClientPnPBindingChange ·çƾÀ» È£ÃâÇϵµ·ÏÇÑ´Ù.

TdiRegisterDeviceObject ÇÔ¼öÀÇ ¼º°øÀûÀΠȣÃâÀÚ´Â Æ®·£½ºÆ÷Æ®°¡ ¹ÙÀεùÀ» ²÷¾úÀ» ¶§ TdiDeregisterDeviceObject ÇÔ¼ö·ÎÀÇ ¼øÂ÷ÀûÀÌ°í »óÈ£ÀûÀΠȣÃâÀ» À§Çؼ­ *DevRegistrationHandle¿¡ ¸®ÅϵǴ °ªÀ» ÀúÀåÇÑ´Ù. ¶ÇÇÑ Æ®·£½ºÆ÷Æ®´Â TdiRegisterNetAddress¿Í TdiPnPPowerRequest ÇÔ¼ö·ÎÀÇ ¼øÂ÷ÀûÀΠȣÃâÀ» À§Çؼ­ DeviceObject¿¡ ¹öÆÛÈ­µÈ ¹®ÀÚ¿­À» ÀúÀåÇØ¾ßÇÑ´Ù.

IoCreateDevice ÇÔ¼öÈ£ÃâÀÇ Æ¯Â¡¿¡ ´ëÇØ¼­´Â Ä¿³Î ¸ðµå µå¶óÀ̹ö ·¹ÆÛ·±½º¸¦ ºÁ¶ó.

TdiRegisterDeviceObject ÇÔ¼öÀÇ È£ÃâÀÚ´Â IRQL < DISPATCH_LEVEL¿¡¼­ ½ÇÇàµÇ¾î¾ßÇÑ´Ù.