BSOD в NDIS-драйвере

Тема в разделе "WASM.NT.KERNEL", создана пользователем prus, 8 янв 2008.

  1. prus

    prus New Member

    Публикаций:
    0
    Регистрация:
    26 окт 2007
    Сообщения:
    92
    Привет Всем!

    Помогите разобраться с проблемой плз...

    Я пытаюсь написать драйвер для перехвата пакетов в сети. Делаю по описанию в книгах, ddk и еще исходники смотрю winpcap, passthru и прочее. Состряпал пример и пытаюсь его поглядеть в VMWare. После старта через некоторое время появляется BSOD или все виснет намертво. Несколько часов сижу и не могу воткнуть, где я напортачил. ОС - WinXP SP1. Поглядите плз:

    Код (Text):
    1. #include <ntddk.h>
    2. #define NDIS50 1
    3. #include <ndis.h>
    4. #include <stdio.h>
    5.  
    6. #define PACKET_POOL_TAG 'pPR2'
    7.  
    8. struct UserStruct {
    9.     ULONG ulData;
    10. } g_UserStruct;
    11.  
    12. // Описатель открытого сетевого адаптера
    13. NDIS_HANDLE g_AdapterHandle;
    14.  
    15. NDIS_HANDLE g_NdisProtocolHandle;
    16. PNDIS_EVENT g_pCloseWaitEvent;
    17.  
    18. VOID OnOpenAdapterDone(IN NDIS_HANDLE ProtocolBindingContext,
    19.                        IN NDIS_STATUS Status,
    20.                        IN NDIS_STATUS OpenErrorStatus)
    21. {
    22.  
    23.     NDIS_REQUEST ndisRequest;
    24.     NDIS_STATUS ndisStatus;
    25.     ULONG uiMode = NDIS_PACKET_TYPE_PROMISCUOUS;
    26.  
    27.     DbgPrint("In OnOpenAdapterDone");
    28.  
    29.     if( NT_SUCCESS(OpenErrorStatus) ) {
    30.  
    31.         ndisRequest.RequestType = NdisRequestSetInformation;
    32.         ndisRequest.DATA.SET_INFORMATION.Oid = OID_GEN_CURRENT_PACKET_FILTER;
    33.         ndisRequest.DATA.SET_INFORMATION.InformationBuffer = &uiMode;
    34.         ndisRequest.DATA.SET_INFORMATION.InformationBufferLength = sizeof(ULONG);
    35.  
    36.         NdisRequest(&ndisStatus,
    37.                     g_AdapterHandle,
    38.                     &ndisRequest);
    39.  
    40.     } // if( NT_SUCCESS(OpenErrorStatus) )
    41.  
    42.     return;
    43.  
    44. }
    45.  
    46. VOID OnCloseAdapterDone(IN NDIS_HANDLE ProtocolBindingContext,
    47.                         IN NDIS_STATUS Status)
    48. {
    49.  
    50.     DbgPrint("In OnCloseAdapterDone");
    51.     NdisSetEvent(g_pCloseWaitEvent);
    52.  
    53.     return;
    54.  
    55. }
    56.  
    57. VOID OnSendDone(IN NDIS_HANDLE ProtocolBindingContext,
    58.                 IN PNDIS_PACKET pPacket,
    59.                 IN NDIS_STATUS Status)
    60. {
    61.  
    62.     DbgPrint("In OnSendDone");
    63.  
    64.     return;
    65.  
    66. }
    67.  
    68. VOID OnTransferDataDone(IN NDIS_HANDLE pBindingContext,
    69.                         IN PNDIS_PACKET pPacket,
    70.                         IN NDIS_STATUS Status,
    71.                         IN UINT uiBytesTransfered)
    72. {
    73.  
    74.     DbgPrint("In OnTransferDataDone");
    75.  
    76.     return;
    77.  
    78. }
    79.  
    80. VOID OnResetDone(IN NDIS_HANDLE pBindingContext,
    81.                  IN NDIS_STATUS Status)
    82. {
    83.  
    84.     DbgPrint("In OnResetDone");
    85.  
    86.     return;
    87.  
    88. }
    89.  
    90. VOID OnRequestDone(IN NDIS_HANDLE ProtocolBindingContext,
    91.                    IN PNDIS_REQUEST pNdisRequest,
    92.                    IN NDIS_STATUS Status)
    93. {
    94.  
    95.     DbgPrint("In OnRequestDone");
    96.  
    97.     return;
    98.  
    99. }
    100.  
    101. NDIS_STATUS OnReceiveStub(IN NDIS_HANDLE ProtocolBindingContext,
    102.                           IN NDIS_HANDLE MacReceiveContext,
    103.                           IN PVOID pvHeaderBuffer,
    104.                           IN UINT uiHeaderBufferSize,
    105.                           IN PVOID pvLookAheadBuffer,
    106.                           IN UINT uiLookAheadBufferSize,
    107.                           UINT uiPacketSize)
    108. {
    109.  
    110.     char _t[255]={0};
    111.     UINT uiFrameType = 0;
    112.  
    113.     memcpy(&uiFrameType, ( ((char*)pvHeaderBuffer) + 12 ), 2);
    114.     _snprintf(_t, 253, "Type %u, PacketSize %u", uiFrameType, uiPacketSize);
    115.  
    116.     DbgPrint(_t);
    117.  
    118.     return NDIS_STATUS_NOT_ACCEPTED;
    119.  
    120. }
    121.  
    122. VOID OnReceiveDoneStub(IN NDIS_HANDLE ProtocolBindingContext)
    123. {
    124.  
    125.     DbgPrint("In OnReceiveDoneStub");
    126.  
    127.     return;
    128.  
    129. }
    130.  
    131. VOID OnStatus(IN NDIS_HANDLE ProtocolBindingContext,
    132.               IN NDIS_STATUS Status,
    133.               IN PVOID pvStatusBuffer,
    134.               IN UINT uiStatusBufferSize)
    135. {
    136.  
    137.     DbgPrint("In OnStatus");
    138.  
    139.     return;
    140.  
    141. }
    142.  
    143. VOID OnStatusDone(IN NDIS_HANDLE ProtocolBindingContext)
    144. {
    145.  
    146.     DbgPrint("In OnStatusDone");
    147.  
    148.     return;
    149.  
    150. }
    151.  
    152. VOID OnBindAdapter(OUT PNDIS_STATUS pStatus,
    153.                    IN NDIS_HANDLE BindContext,
    154.                    IN PNDIS_STRING DeviceName,
    155.                    IN PVOID pvSS1,
    156.                    IN PVOID pvSS2)
    157. {
    158.  
    159.     DbgPrint("In OnBindAdapter");
    160.  
    161.     return;
    162.  
    163. }
    164.  
    165. VOID OnUnbindAdapter(OUT PNDIS_STATUS pStatus,
    166.                    IN NDIS_HANDLE BindContext,
    167.                    IN PNDIS_HANDLE UnbindContext)
    168. {
    169.  
    170.     DbgPrint("In OnUnbindAdapter");
    171.  
    172.     return;
    173.  
    174. }
    175.  
    176. VOID OnProtocolUnload(VOID)
    177. {
    178.  
    179.     DbgPrint("In OnProtocolUnload");
    180.  
    181.     return;
    182.  
    183. }
    184.  
    185. INT OnReceivePacket(IN NDIS_HANDLE ProtocolBindingContext,
    186.                      IN PNDIS_PACKET pPacket)
    187. {
    188.  
    189.     DbgPrint("In OnReceivePacket");
    190.  
    191.     return 0;
    192.  
    193. }
    194.  
    195. NDIS_STATUS OnPNPEvent(IN NDIS_HANDLE ProtocolBindingContext,
    196.                        IN PNET_PNP_EVENT pNetPnPEvent)
    197. {
    198.  
    199.     DbgPrint("In OnPNPEvent");
    200.  
    201.     return NDIS_STATUS_SUCCESS;
    202.  
    203. }
    204.  
    205.  
    206.  
    207. VOID DriverUnload(IN PDRIVER_OBJECT pDriverObject)
    208. {
    209.  
    210.     NDIS_STATUS ndisStatus;
    211.  
    212.     NdisResetEvent(g_pCloseWaitEvent);
    213.    
    214.     NdisCloseAdapter(&ndisStatus,
    215.                      g_AdapterHandle);
    216.  
    217.     if( ndisStatus == NDIS_STATUS_PENDING ) {
    218.         NdisWaitEvent(g_pCloseWaitEvent, 0);
    219.     }
    220.  
    221.     NdisDeregisterProtocol(&ndisStatus,
    222.                            g_NdisProtocolHandle);
    223.  
    224.     if( !NT_SUCCESS(ndisStatus) ) {
    225.         DbgPrint("In DriverUnload: NdisDeregisterProtocol failed");
    226.     }
    227.  
    228.     ExFreePoolWithTag(g_pCloseWaitEvent, PACKET_POOL_TAG);
    229.  
    230.     DbgPrint("In DriverUnload: NdisDeregisterProtocol success");
    231.  
    232.     return;
    233.  
    234. }
    235.  
    236. NTSTATUS DriverEntry(IN PDRIVER_OBJECT pDriverObject, IN PUNICODE_STRING ustrRegistryPath)
    237. {
    238.  
    239.     UINT uiMediumIndex = 0;
    240.     NDIS_STATUS ndisStatus, ndisErrorStatus;
    241.     NDIS_MEDIUM ndisMediumArray = NdisMedium802_3;
    242.     UNICODE_STRING ustrAdapterName;
    243.     NDIS_PROTOCOL_CHARACTERISTICS ndisProtocolCharacteristics;
    244.     NDIS_STRING ndisProtoName = NDIS_STRING_CONST("PACKET_MODULE");
    245.     ULONG OsMajorVersion;
    246.     ULONG OsMinorVersion;
    247.  
    248.     DbgPrint("In DriverEntry: Loading...");
    249.  
    250.     RtlInitUnicodeString(&ustrAdapterName, L"\\Device\\{79D2A5DE-2BA5-44A1-ADAF-69B90724722D}");
    251.  
    252.     g_pCloseWaitEvent = (PNDIS_EVENT)ExAllocatePoolWithTag(NonPagedPool, sizeof(NDIS_EVENT), PACKET_POOL_TAG);
    253.  
    254.     NdisInitializeEvent(g_pCloseWaitEvent);
    255.  
    256.     pDriverObject->DriverUnload = DriverUnload;
    257.  
    258.     PsGetVersion(&OsMajorVersion, &OsMinorVersion, NULL, NULL);
    259.  
    260.     DbgPrint("In DriverEntry: OsMajorVersion = %lu, OsMinorVersion = %lu", OsMajorVersion, OsMinorVersion);
    261.  
    262.     RtlZeroMemory(&ndisProtocolCharacteristics, sizeof(NDIS_PROTOCOL_CHARACTERISTICS));
    263.  
    264.     ndisProtocolCharacteristics.MajorNdisVersion = 5;
    265.     ndisProtocolCharacteristics.MinorNdisVersion = 0;
    266.     ndisProtocolCharacteristics.Reserved = 0;
    267.     ndisProtocolCharacteristics.OpenAdapterCompleteHandler = OnOpenAdapterDone;
    268.     ndisProtocolCharacteristics.CloseAdapterCompleteHandler = OnCloseAdapterDone;
    269.     ndisProtocolCharacteristics.SendCompleteHandler = OnSendDone;
    270.     ndisProtocolCharacteristics.TransferDataCompleteHandler = OnTransferDataDone;
    271.     ndisProtocolCharacteristics.ResetCompleteHandler = OnResetDone;
    272.     ndisProtocolCharacteristics.RequestCompleteHandler = OnRequestDone;
    273.     ndisProtocolCharacteristics.ReceiveHandler = OnReceiveStub;
    274.  
    275.     ndisProtocolCharacteristics.ReceiveCompleteHandler = OnReceiveDoneStub;
    276.     ndisProtocolCharacteristics.StatusHandler = OnStatus;
    277.     ndisProtocolCharacteristics.StatusCompleteHandler = OnStatusDone;
    278.     ndisProtocolCharacteristics.Name = ndisProtoName;
    279.     ndisProtocolCharacteristics.BindAdapterHandler = OnBindAdapter;
    280.     ndisProtocolCharacteristics.UnbindAdapterHandler = OnUnbindAdapter;
    281.  
    282.     ndisProtocolCharacteristics.UnloadHandler = OnProtocolUnload;
    283.     ndisProtocolCharacteristics.ReceivePacketHandler = OnReceivePacket;
    284.     ndisProtocolCharacteristics.PnPEventHandler = OnPNPEvent;
    285.  
    286.     DbgPrint("In DriverEntry: Register NDIS Protocol");
    287.  
    288.     NdisRegisterProtocol(&ndisStatus,
    289.                          &g_NdisProtocolHandle,
    290.                          &ndisProtocolCharacteristics,
    291.                          sizeof(NDIS_PROTOCOL_CHARACTERISTICS));
    292.  
    293.     if( ndisStatus != NDIS_STATUS_SUCCESS ) {
    294.         return ndisStatus;
    295.     }
    296.  
    297.     DbgPrint("In DriverEntry: NdisRegisterProtocol success");
    298.  
    299.     NdisOpenAdapter(&ndisStatus,
    300.                     &ndisErrorStatus,
    301.                     &g_AdapterHandle,
    302.                     &uiMediumIndex,
    303.                     &ndisMediumArray,
    304.                     1,
    305.                     g_NdisProtocolHandle,
    306.                     &g_UserStruct,
    307.                     &ustrAdapterName,
    308.                     0,
    309.                     NULL);
    310.  
    311.     if( ndisStatus != NDIS_STATUS_PENDING ) {
    312.  
    313.         if( !NT_SUCCESS(ndisStatus) ) {
    314.  
    315.             if( ndisStatus == NDIS_STATUS_ADAPTER_NOT_FOUND ) {
    316.                 DbgPrint("In DriverEntry: Adapter not found");         
    317.             }
    318.  
    319.             NdisDeregisterProtocol(&ndisStatus,
    320.                                    g_NdisProtocolHandle);
    321.  
    322.             if( !NT_SUCCESS(ndisStatus) ) {
    323.                 DbgPrint("In DriverEntry: NdisDeregisterProtocol failed");         
    324.             }
    325.  
    326.             return STATUS_UNSUCCESSFUL;
    327.        
    328.         } // if( !NT_SUCCESS(ndisStatus) )
    329.         else {
    330.        
    331.             OnOpenAdapterDone(&g_UserStruct,
    332.                               ndisStatus,
    333.                               NDIS_STATUS_SUCCESS);
    334.  
    335.             if(NT_SUCCESS(ndisStatus)){
    336.                 DbgPrint(("In DriverEntry: NdisOpenAdapter returned STATUS_SUCCESS\n"));
    337.             }
    338.  
    339.         }
    340.  
    341.         DbgPrint("In DriverEntry: NdisOpenAdapter success");
    342.    
    343.    
    344.     } // if( ndisStatus != NDIS_STATUS_PENDING )
    345.  
    346.     return STATUS_SUCCESS;
    347.  
    348. }
     
  2. steelfactor

    steelfactor New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    501
    Что за BSOD? Анализ крешдампа в студию, plz
     
  3. prus

    prus New Member

    Публикаций:
    0
    Регистрация:
    26 окт 2007
    Сообщения:
    92
    steelfactor

    Не подскажите, чем анализ проделать?
    Тут статья на сайте была с исходниками, но там bcdesc.h нехватает.
    Чем еще это сделать можно?
     
  4. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    prus
    Берешь файл крешдампадампа . Открываешь с помощью Windbg . И делаешь анализ (проще говоря прикрепляешь то, что выдал виндбг) и постишь сюда.
     
  5. lotos_od

    lotos_od New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    29
    Адрес:
    Ukraine
    Debugging tools http://www.microsoft.com/whdc/devtools/debugging/default.mspx содержат отличный бесплатный отладчик WinDbg. С его помощью сможешь открыть crashdump (скорее всего он у тебя находится в %SystemRoot%\Minidump, но можешь это посмотреть в System Properties->Advanced->Startup And Recovery Settings...->Dump file).

    Более подробно об анализе аварийных дампов можно поискать у Руссиновича.

    (опередил :) )
     
  6. prus

    prus New Member

    Публикаций:
    0
    Регистрация:
    26 окт 2007
    Сообщения:
    92
    Вот это оно?
    Код (Text):
    1. *** ERROR: Symbol file could not be found.  Defaulted to export symbols for ntoskrnl.exe -
    2. Loading Kernel Symbols
    3. ................................................................................................
    4. Loading User Symbols
    5.  
    6. Loading unloaded module list
    7. ..
    8. *******************************************************************************
    9. *                                                                             *
    10. *                        Bugcheck Analysis                                    *
    11. *                                                                             *
    12. *******************************************************************************
    13.  
    14. Use !analyze -v to get detailed debugging information.
    15.  
    16. BugCheck D1, {3f595555, 2, 0, bae813da}
    17.  
    18. ***** Kernel symbols are WRONG. Please fix symbols to do analysis.
    19.  
    20. *** ERROR: Symbol file could not be found.  Defaulted to export symbols for NDIS.sys -
    21. *************************************************************************
    22. ***                                                                   ***
    23. ***                                                                   ***
    24. ***    Your debugger is not using the correct symbols                 ***
    25. ***                                                                   ***
    26. ***    In order for this command to work properly, your symbol path   ***
    27. ***    must point to .pdb files that have full type information.      ***
    28. ***                                                                   ***
    29. ***    Certain .pdb files (such as the public OS symbols) do not      ***
    30. ***    contain the required information.  Contact the group that      ***
    31. ***    provided you with these symbols if you need this command to    ***
    32. ***    work.                                                          ***
    33. ***                                                                   ***
    34. ***    Type referenced: nt!_KPRCB                                     ***
    35. ***                                                                   ***
    36. *************************************************************************
    37. *************************************************************************
    38. ***                                                                   ***
    39. ***                                                                   ***
    40. ***    Your debugger is not using the correct symbols                 ***
    41. ***                                                                   ***
    42. ***    In order for this command to work properly, your symbol path   ***
    43. ***    must point to .pdb files that have full type information.      ***
    44. ***                                                                   ***
    45. ***    Certain .pdb files (such as the public OS symbols) do not      ***
    46. ***    contain the required information.  Contact the group that      ***
    47. ***    provided you with these symbols if you need this command to    ***
    48. ***    work.                                                          ***
    49. ***                                                                   ***
    50. ***    Type referenced: nt!_KPRCB                                     ***
    51. ***                                                                   ***
    52. *************************************************************************
    53. *********************************************************************
    54. * Symbols can not be loaded because symbol path is not initialized. *
    55. *                                                                   *
    56. * The Symbol Path can be set by:                                    *
    57. *   using the _NT_SYMBOL_PATH environment variable.                 *
    58. *   using the -y <symbol_path> argument when starting the debugger. *
    59. *   using .sympath and .sympath+                                    *
    60. *********************************************************************
    61. *********************************************************************
    62. * Symbols can not be loaded because symbol path is not initialized. *
    63. *                                                                   *
    64. * The Symbol Path can be set by:                                    *
    65. *   using the _NT_SYMBOL_PATH environment variable.                 *
    66. *   using the -y <symbol_path> argument when starting the debugger. *
    67. *   using .sympath and .sympath+                                    *
    68. *********************************************************************
    69. Probably caused by : NDIS.sys ( NDIS!NdisCompletePnPEvent+71c )
    70.  
    71. Followup: MachineOwner
    72. ---------
     
  7. prus

    prus New Member

    Публикаций:
    0
    Регистрация:
    26 окт 2007
    Сообщения:
    92
    Код (Text):
    1. MODULE_NAME: NDIS
    2.  
    3. FAULTING_MODULE: 804d4000 nt
    4.  
    5. DEBUG_FLR_IMAGE_TIMESTAMP:  3d6de4c3
    6.  
    7. READ_ADDRESS: unable to get nt!MmSpecialPoolStart
    8. unable to get nt!MmSpecialPoolEnd
    9. unable to get nt!MmPoolCodeStart
    10. unable to get nt!MmPoolCodeEnd
    11.  3f595555
    12.  
    13. CURRENT_IRQL:  2
    14.  
    15. FAULTING_IP:
    16. NDIS!NdisCompletePnPEvent+71c
    17. bae813da 833800          cmp     dword ptr [eax],0
    18.  
    19. DEFAULT_BUCKET_ID:  WRONG_SYMBOLS
    20.  
    21. BUGCHECK_STR:  0xD1
    22.  
    23. LAST_CONTROL_TRANSFER:  from 804dce53 to 805266db
    24.  
    25. STACK_TEXT:  
    26. WARNING: Stack unwind information not available. Following frames may be wrong.
    27. f6702ccc 804dce53 0000000a 3f595555 00000002 nt!KeBugCheckEx+0x19
    28. f6702cf8 80593875 f6810000 f680d000 8054aed0 nt!Kei386EoiHelper+0x251c
    29. f6702d10 8058f5a7 00000000 00000023 00000023 nt!PsSetThreadWin32Thread+0x92
    30. f6702d58 bae7df29 8168abc0 81687130 81522f08 nt!NtQueryInformationToken+0xd9
    31. f6702d74 bae815ec 8168abc0 81522f08 8151a870 NDIS!NdisRequest+0x73
    32. f6702d98 bae70623 8151a858 00000000 81572020 NDIS!NdisCompletePnPEvent+0x92e
    33. f6702dac 8057c73a 8151a860 00000000 00000000 NDIS!NdisFreeToBlockPool+0xb2d
    34. f6702ddc 805124c1 bae70600 8151a860 00000000 nt!CcUnpinDataForThread+0x66d
    35. 00000000 00000000 00000000 00000000 00000000 nt!KeProfileInterruptWithSource+0x28e
    36.  
    37.  
    38. STACK_COMMAND:  .bugcheck ; kb
    39.  
    40. FOLLOWUP_IP:
    41. NDIS!NdisCompletePnPEvent+71c
    42. bae813da 833800          cmp     dword ptr [eax],0
    43.  
    44. SYMBOL_NAME:  NDIS!NdisCompletePnPEvent+71c
    45.  
    46. FOLLOWUP_NAME:  MachineOwner
    47.  
    48. IMAGE_NAME:  NDIS.sys
    49.  
    50. BUCKET_ID:  WRONG_SYMBOLS
    51.  
    52. Followup: MachineOwner
    53. ---------
     
  8. steelfactor

    steelfactor New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    501
    Как я понял, при оповещении о завершении подключения твой драйвер получает конфликт прерываний, что и дает BSOD - BugCheck D1 означает IRQ_NOT_LESS_OR_EQUAL (?) .
    Все на это указывает.
    P.S. Символы нормальные загрузи
     
  9. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Конфликт прерываний?! Чето ты помоему не в теме вообще.. Этот бсод происходит при ошибке страницы при высоком IRQL, прерывания тут не очень причем как-то. Разве что таймеровские.

    А символы да, не помешает.
     
  10. steelfactor

    steelfactor New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    501
    Great
    Э, ну да, сорри, непростительно, не о том думал, когда писал... пойду просплюсь
    0x000000d1 означает, что драйвер пытается получить доступ к странице не на том IRQL
     
  11. prus

    prus New Member

    Публикаций:
    0
    Регистрация:
    26 окт 2007
    Сообщения:
    92
    Вот с символами анализ получился такой:
    Код (Text):
    1. DRIVER_IRQL_NOT_LESS_OR_EQUAL (d1)
    2. An attempt was made to access a pageable (or completely invalid) address at an
    3. interrupt request level (IRQL) that is too high.  This is usually
    4. caused by drivers using improper addresses.
    5. If kernel debugger is available get stack backtrace.
    6. Arguments:
    7. Arg1: 3f595555, memory referenced
    8. Arg2: 00000002, IRQL
    9. Arg3: 00000000, value 0 = read operation, 1 = write operation
    10. Arg4: bae813da, address which referenced memory
    11.  
    12. Debugging Details:
    13. ------------------
    14.  
    15. READ_ADDRESS:  3f595555
    16.  
    17. CURRENT_IRQL:  2
    18.  
    19. FAULTING_IP:
    20. NDIS!ndisMQueueRequest+11
    21. bae813da 833800          cmp     dword ptr [eax],0
    22.  
    23. DEFAULT_BUCKET_ID:  INTEL_CPU_MICROCODE_ZERO
    24.  
    25. BUGCHECK_STR:  0xD1
    26.  
    27. PROCESS_NAME:  System
    28.  
    29. TRAP_FRAME:  f6702ce8 -- (.trap 0xfffffffff6702ce8)
    30. ErrCode = 00000000
    31. eax=3f595555 ebx=804ee071 ecx=81687130 edx=81522f08 esi=81687130 edi=8168abc0
    32. eip=bae813da esp=f6702d5c ebp=f6702d74 iopl=0         ov up ei ng nz ac pe cy
    33. cs=0008  ss=0010  ds=0023  es=0023  fs=0030  gs=0000             efl=00010a97
    34. NDIS!ndisMQueueRequest+0x11:
    35. bae813da 833800          cmp     dword ptr [eax],0    ds:0023:3f595555=????????
    36. Resetting default scope
    37.  
    38. LAST_CONTROL_TRANSFER:  from 804dce53 to 805266db
    39.  
    40. STACK_TEXT:  
    41. f6702ccc 804dce53 0000000a 3f595555 00000002 nt!KeBugCheckEx+0x19
    42. f6702ccc bae813da 0000000a 3f595555 00000002 nt!KiTrap0E+0x2ad
    43. f6702d58 bae7df29 8168abc0 81687130 81522f08 NDIS!ndisMQueueRequest+0x11
    44. f6702d74 bae815ec 8168abc0 81522f08 8151a870 NDIS!ndisMRequest+0x93
    45. f6702d98 bae70623 8151a858 00000000 81572020 NDIS!ndisMRundownRequests+0x30
    46. f6702dac 8057c73a 8151a860 00000000 00000000 NDIS!ndisWorkerThread+0x73
    47. f6702ddc 805124c1 bae70600 8151a860 00000000 nt!PspSystemThreadStartup+0x34
    48. 00000000 00000000 00000000 00000000 00000000 nt!KiThreadStartup+0x16
    49.  
    50.  
    51. STACK_COMMAND:  kb
    52.  
    53. FOLLOWUP_IP:
    54. NDIS!ndisMQueueRequest+11
    55. bae813da 833800          cmp     dword ptr [eax],0
    56.  
    57. SYMBOL_STACK_INDEX:  2
    58.  
    59. SYMBOL_NAME:  NDIS!ndisMQueueRequest+11
    60.  
    61. FOLLOWUP_NAME:  MachineOwner
    62.  
    63. MODULE_NAME: NDIS
    64.  
    65. IMAGE_NAME:  NDIS.sys
    66.  
    67. DEBUG_FLR_IMAGE_TIMESTAMP:  3d6de4c3
    68.  
    69. FAILURE_BUCKET_ID:  0xD1_VRF_NDIS!ndisMQueueRequest+11
    70.  
    71. BUCKET_ID:  0xD1_VRF_NDIS!ndisMQueueRequest+11
    72.  
    73. Followup: MachineOwner
    Используйте тег [ code ] для заключения большого текста в фиксированную область окна
     
  12. TheDeath

    TheDeath New Member

    Публикаций:
    0
    Регистрация:
    20 июл 2003
    Сообщения:
    66
    Адрес:
    Russia,Новосибирск
    Тут кто-то писал,как заставить windbg самому выкачивать нужные символы.Может кто-то скажет еще раз?
     
  13. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    .sympath srv*d:\symbols*http://msdl.microsoft.com/download/symbols

    d:\symbols - локальный каталог, куда сохранять оные.
     
  14. prus

    prus New Member

    Публикаций:
    0
    Регистрация:
    26 окт 2007
    Сообщения:
    92
    TheDeath
    .sympath srv*С:\sym*http://msdl.microsoft.com/download/symbols
    .reload
     
  15. prus

    prus New Member

    Публикаций:
    0
    Регистрация:
    26 окт 2007
    Сообщения:
    92
    Ну нет ни у кого мыслей по проблеме?
     
  16. prus

    prus New Member

    Публикаций:
    0
    Регистрация:
    26 окт 2007
    Сообщения:
    92
    С BSOD вроде бы разобрался... Но почему-то не вижу пакетов теперь. Протокол зарегистрировался нормально, адаптер открывается тоже без ошибок, перевод сетевой карточки в неразборчивый режим тоже, как я понимаю, без ошибок. Но вот пакетов не вижу. Кто-нить сталкивался с такой проблемой?
     
  17. WIN32

    WIN32 Member

    Публикаций:
    0
    Регистрация:
    20 янв 2007
    Сообщения:
    338
    Ты чем отлаживаешь свой драйвер? Если тупо DbgPrint'ами, то тебе хоть рабочий исходник дай, толку не будет. Научись отлаживать ринг0 код. Потом уже пробуй что-то писать.
     
  18. neutronion

    neutronion New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2010
    Сообщения:
    1.100
    Это как это, кроме как WinDbgером пошаговой и остановами _asm int 3? Просветите пожалуйста.
     
  19. drem1lin

    drem1lin Member

    Публикаций:
    0
    Регистрация:
    17 мар 2009
    Сообщения:
    300
    я вот тоже не знаю. WIN32 человек же явно учится, и вместо бессмысленного тролинга лучше бы совет дали, что и как и чем
     
  20. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    Вы издеваетесь чтоли? Поднимать темы 3х летней давности, когда в топике выделена тема Драйверы режима ядра и там можно найти практически все ответы на подобные вопросы.
    Еще раз увижу - в бан отправлю.