код постоянно вываливается с ошибкой создания файла, все мне известные варианты открытия перепробовал... Код (Text): #include <ntddk.h> #include <tdi.h> NTSTATUS status; UNICODE_STRING tdi_driver_name; OBJECT_ATTRIBUTES oa; IO_STATUS_BLOCK iosb; HANDLE tdi_address_handle; PFILE_FULL_EA_INFORMATION file_full_info; char DataBlock[sizeof(FILE_FULL_EA_INFORMATION) + TDI_TRANSPORT_ADDRESS_LENGTH + 300] = {0}; VOID Unload(IN PDRIVER_OBJECT pDriverObject) { DbgPrint("Driver unloaded..."); } NTSTATUS CompleteIRP(IN PIRP pIrp, ULONG info, NTSTATUS status) { pIrp->IoStatus.Status = status; pIrp->IoStatus.Information = info; IoCompleteRequest(pIrp, IO_NO_INCREMENT); return status; } NTSTATUS OnCreate(IN PDEVICE_OBJECT pDeviceObject, IN PIRP pIrp) { DbgPrint("device created..."); return CompleteIRP(pIrp, 0, STATUS_SUCCESS); } NTSTATUS DriverEntry(IN PDRIVER_OBJECT pDriverObject, IN PUNICODE_STRING pusRegystryPath) { pDriverObject->DriverUnload = Unload; pDriverObject->MajorFunction[IRP_MJ_CREATE] = OnCreate; file_full_info = (PFILE_FULL_EA_INFORMATION)&DataBlock; RtlInitUnicodeString(&tdi_driver_name, L"\\Device\\Tcp"); InitializeObjectAttributes(&oa, &tdi_driver_name, OBJ_CASE_INSENSITIVE|OBJ_KERNEL_HANDLE, 0, 0); status = ZwCreateFile(&tdi_address_handle, FILE_READ_EA | FILE_WRITE_EA, &oa, &iosb, NULL, FILE_ATTRIBUTE_NORMAL, 0, FILE_OPEN, 0, file_full_info, sizeof(DataBlock)); if(status != STATUS_SUCCESS) { DbgPrint("Failed to open address object, status 0x%08X", status); return STATUS_UNSUCCESSFUL; } return STATUS_SUCCESS; }
BSOD'a как такового нет, драйвер нормально устанавливается, но вызов ZwCreateFile постоянно вываливается с STATUS_UNSUCCESSFUL