Ошибка создания файла \\Device\\Tcp

Тема в разделе "WASM.BEGINNERS", создана пользователем steelfactor, 9 ноя 2007.

  1. steelfactor

    steelfactor New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    501
    код постоянно вываливается с ошибкой создания файла, все мне известные варианты открытия перепробовал...
    Код (Text):
    1. #include <ntddk.h>
    2. #include <tdi.h>
    3.  
    4. NTSTATUS status;
    5. UNICODE_STRING tdi_driver_name;
    6. OBJECT_ATTRIBUTES oa;
    7. IO_STATUS_BLOCK iosb;
    8. HANDLE tdi_address_handle;
    9. PFILE_FULL_EA_INFORMATION file_full_info;
    10. char DataBlock[sizeof(FILE_FULL_EA_INFORMATION) + TDI_TRANSPORT_ADDRESS_LENGTH + 300] = {0};
    11.  
    12. VOID Unload(IN PDRIVER_OBJECT pDriverObject)
    13. {
    14.     DbgPrint("Driver unloaded...");
    15. }
    16.  
    17. NTSTATUS CompleteIRP(IN PIRP pIrp, ULONG info, NTSTATUS status)
    18. {
    19.     pIrp->IoStatus.Status = status;
    20.     pIrp->IoStatus.Information = info;
    21.     IoCompleteRequest(pIrp, IO_NO_INCREMENT);
    22.     return status;
    23. }
    24.  
    25. NTSTATUS OnCreate(IN PDEVICE_OBJECT pDeviceObject, IN PIRP pIrp)
    26. {
    27.     DbgPrint("device created...");
    28.     return CompleteIRP(pIrp, 0, STATUS_SUCCESS);
    29. }
    30.  
    31. NTSTATUS DriverEntry(IN PDRIVER_OBJECT pDriverObject, IN PUNICODE_STRING pusRegystryPath)
    32. {
    33.    pDriverObject->DriverUnload = Unload;
    34.    pDriverObject->MajorFunction[IRP_MJ_CREATE] = OnCreate;
    35.    file_full_info = (PFILE_FULL_EA_INFORMATION)&DataBlock;
    36.    RtlInitUnicodeString(&tdi_driver_name, L"\\Device\\Tcp");   
    37.    InitializeObjectAttributes(&oa, &tdi_driver_name, OBJ_CASE_INSENSITIVE|OBJ_KERNEL_HANDLE, 0, 0);
    38.   status = ZwCreateFile(&tdi_address_handle,                            FILE_READ_EA | FILE_WRITE_EA,
    39.     &oa,
    40.              &iosb,
    41.     NULL,
    42.     FILE_ATTRIBUTE_NORMAL,
    43.     0,
    44.     FILE_OPEN,
    45.     0,
    46.     file_full_info,
    47.     sizeof(DataBlock));
    48. if(status != STATUS_SUCCESS)
    49.   {
    50.     DbgPrint("Failed to open address object, status 0x%08X", status);
    51.     return STATUS_UNSUCCESSFUL;
    52.   }
    53.     return STATUS_SUCCESS;
    54. }
     
  2. ltshck

    ltshck New Member

    Публикаций:
    0
    Регистрация:
    5 ноя 2007
    Сообщения:
    195
    какой код ошибки?
     
  3. steelfactor

    steelfactor New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    501
    BSOD'a как такового нет, драйвер нормально устанавливается, но вызов ZwCreateFile постоянно вываливается с STATUS_UNSUCCESSFUL
     
  4. steelfactor

    steelfactor New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    501
    Все, разобрался сам...
    дело было в EA структуре