none
Problem with NDIS Driver: ptUnbindAdapter is called by Windows when it wouldn't be... RRS feed

  • Discussion générale

  • Hello,

    I have some problems with my NDIS Driver.

    When I install the driver, I can see that all the interfaces of my computer are Binded (thanks to a set of traces...).

    When I unbind one of them (by unchecking the driver into the ethernet card properties), the ethernet one for example, I can see that the interface is correctly unbinded (still thanks to the traces).

    But when I Bind it again (by checking the driver into the ethernet card properties), I can see a set of Bind-Unbind-Bind-Unbind... as showed on the following log extract (the ">>>" comments are from me).

    >>> Binds on driver install
    00000004 0.00000082 ==> PtBindAdapter
    00000009 0.00005219 DriverNomade / PtBindAdapter / Begin
    00000010 0.00005465 DriverNomade / PtBindAdapter / Index=0
    00000011 0.00005589 DriverNomade / PtBindAdapter / Adapter=853D49A0
    00000012 0.00005753 DriverNomade / PtBindAdapter / DeviceName=\DEVICE\NDISWANIPV6
    00000013 0.00005835 DriverNomade / PtBindAdapter / End
    00000014 0.00006082 <== PtBindAdapter
    00000019 0.00010191
    00000020 0.00010191 ==> PtBindAdapter
    00000025 0.00013478 DriverNomade / PtBindAdapter / Begin
    00000026 0.00013643 DriverNomade / PtBindAdapter / Index=1
    00000027 0.00013807 DriverNomade / PtBindAdapter / Adapter=85386D80
    00000028 0.00013930 DriverNomade / PtBindAdapter / DeviceName=\DEVICE\NDISWANIP
    00000029 0.00014013 DriverNomade / PtBindAdapter / End
    00000030 0.00014218 <== PtBindAdapter
    00000035 0.00017505
    00000036 0.00017505 ==> PtBindAdapter
    00000041 0.00020752 DriverNomade / PtBindAdapter / Begin
    00000042 0.00020916 DriverNomade / PtBindAdapter / Index=2
    00000043 0.00021039 DriverNomade / PtBindAdapter / Adapter=853D22A0
    00000044 0.00021163 DriverNomade / PtBindAdapter / DeviceName=\DEVICE\NDISWANBH
    00000045 0.00021286 DriverNomade / PtBindAdapter / End
    00000046 0.00021450 <== PtBindAdapter
    00000047 0.00021491
    00000052 0.00078528 ==> PtBindAdapter
    00000057 0.00082555 DriverNomade / PtBindAdapter / Begin
    00000058 0.00082760 DriverNomade / PtBindAdapter / Index=3
    00000059 0.00082925 DriverNomade / PtBindAdapter / Adapter=853D24C0
    00000060 0.00083089 DriverNomade / PtBindAdapter / DeviceName=\DEVICE\{7CEAEAAE-18E3-4FF2-8710-4CA9B28F41AE}
    00000061 0.00083212 DriverNomade / PtBindAdapter / End
    00000062 0.00083418 <== PtBindAdapter
    00000067 0.00086993
    00000068 0.00086993 ==> PtBindAdapter
    00000073 0.00090362 DriverNomade / PtBindAdapter / Begin
    00000074 0.00090527 DriverNomade / PtBindAdapter / Index=4
    00000075 0.00090650 DriverNomade / PtBindAdapter / Adapter=8544A858
    00000076 0.00090814 DriverNomade / PtBindAdapter / DeviceName=\DEVICE\{91F46A50-EDCD-4026-BFE9-85529DC9F7EF}
    00000077 0.00090938 DriverNomade / PtBindAdapter / End
    00000078 0.00091143 <== PtBindAdapter

    >>> Manual Unbind
    00000087 24.11894035 ==> PtUnbindAdapter
    00000088 24.11895180     <-*-> Miniport 0x8544A858 is going to be unbinded 
    00000089 24.12683487 ==> MPHalt
    00000090 24.15553284 ==> PtStatusComplete
    00000091 24.15554047 <== PtStatusComplete
    00000094 24.15636635 DriverNomade / MPHalt / Begin
    00000095 24.15639496 DriverNomade / MPHalt / Index=4
    00000096 24.15639877 DriverNomade / MPHalt / Adapter=8544A858
    00000097 24.15641212 DriverNomade / MPHalt / DeviceName=\DEVICE\{91F46A50-EDCD-4026-BFE9-85529DC9F7EF}
    00000098 24.15642166 DriverNomade / MPHalt / End
    00000099 24.15642357 ==> NdisFreeMemory( pAdapt, sizeof(ADAPT), 0 );
    00000101 24.15643501 <== NdisFreeMemory( pAdapt, sizeof(ADAPT), 0 );
    00000102 24.15644073 <== MPHalt
    00000103 24.15682411 <== PtUnbindAdapter

    >>> Manual Bind
    00000107 37.19797134 ==> PtBindAdapter
    00000112 37.19804001 DriverNomade / PtBindAdapter / Begin
    00000113 37.19805527 DriverNomade / PtBindAdapter / Index=4
    00000114 37.19805527 DriverNomade / PtBindAdapter / Adapter=866E99A0
    00000115 37.19805908 DriverNomade / PtBindAdapter / DeviceName=\DEVICE\{91F46A50-EDCD-4026-BFE9-85529DC9F7EF}
    00000116 37.19805908 DriverNomade / PtBindAdapter / End
    00000117 37.19806290 <== PtBindAdapter

    >>> What's happening here???
    00000120 37.19889450 ==> PtUnbindAdapter
    00000121 37.19889450     <-*-> Miniport 0x866E99A0 is going to be unbinded 
    00000122 37.19893646 ==> PtCloseAdapterComplete
    00000123 37.19894028 <== PtCloseAdapterComplete
    00000124 37.19900513 ==> NdisFreeMemory( pAdapt, sizeof(ADAPT), 0 );
    00000126 37.19901276 <== NdisFreeMemory( pAdapt, sizeof(ADAPT), 0 );
    00000127 37.19901276 <== PtUnbindAdapter
    00000130 37.27474976
    00000131 37.27475357 ==> PtBindAdapter
    00000138 37.27483368 ==> NdisFreeMemory( pAdapt, sizeof(ADAPT), 0 );
    00000141 37.27484131 <== NdisFreeMemory( pAdapt, sizeof(ADAPT), 0 );
    00000142 37.27484131 <== PtBindAdapter
    00000144 37.27484131
    00000145 37.27502441 ==> PtUnbindAdapter
    00000146 37.27502441     <-*-> Miniport 0x866E99A0 is going to be unbinded 
    00000148 37.27503586 ==> NdisFreeMemory( pAdapt, sizeof(ADAPT), 0 );
    00000151 37.27504349 <== NdisFreeMemory( pAdapt, sizeof(ADAPT), 0 );
    00000152 37.27504349 <== PtUnbindAdapter
    00000155 37.27577209
    00000156 37.27577209 ==> PtBindAdapter
    00000163 37.27582550 ==> NdisFreeMemory( pAdapt, sizeof(ADAPT), 0 );
    00000166 37.27582932 <== NdisFreeMemory( pAdapt, sizeof(ADAPT), 0 );
    00000167 37.27583313 <== PtBindAdapter
    00000168 37.27583313
    00000170 37.27584076 ==> PtUnbindAdapter
    00000171 37.27584457     <-*-> Miniport 0x866E99A0 is going to be unbinded 
    00000174 37.27585983 ==> NdisFreeMemory( pAdapt, sizeof(ADAPT), 0 );
    00000176 37.27586365 <== NdisFreeMemory( pAdapt, sizeof(ADAPT), 0 );
    00000177 37.27586746 <== PtUnbindAdapter
    00000181 37.29149628 ==> PtBindAdapter
    00000188 37.29154205 ==> NdisFreeMemory( pAdapt, sizeof(ADAPT), 0 );
    00000191 37.29154587 <== NdisFreeMemory( pAdapt, sizeof(ADAPT), 0 );
    00000192 37.29154587 <== PtBindAdapter                          

    Why does windows call ptUnbind afer binding? And a set of Bind/Unbind? 

    I don't understand what's happening here, and I'm very ennoyed about it...

    (I'm under Windows 7, 32 bits version)

    Regards,

    A.FOUQUET.

    • Type modifié Aurel Bera vendredi 21 septembre 2012 09:20 Pas de reponse
    mardi 7 août 2012 13:20

Toutes les réponses