Не подскажите что за ошибка, и как лечится. Пытаюсь сделать вот что:
NTSTATUS DriverEntry( IN PDRIVER_OBJECT DriverObject,
IN PUNICODE_STRING RegistryPath )
{
NTSTATUS status = STATUS_SUCCESS;
...............................................................
DriverObject->MajorFunction[IRP_MJ_CREATE] = DispatchOpen;
..............................................................
return status;
}
NTSTATUS DispatchOpen(IN PDEVICE_OBJECT pDevObj, IN PIRP pIrp)
{
NTSTATUS status = STATUS_SUCCESS;
Pxxx_DEVICE_EXTENSION pDevExt = pDevObj->DeviceExtension;
PAGED_CODE();
...................................................
PIO_WORKITEM pIoWorkItem;
pDevExt->bWriteThreadAlive = TRUE;
pIoWorkItem = IoAllocateWorkItem(pDevObj);
if(pIoWorkItem)
{
IoQueueWorkItem(pIoWorkItem, WorkerThreadStart, DelayedWorkQueue, (PVOID)pDevExt);
KeWaitForSingleObject(&pDevExt->kInitEvent, Executive, KernelMode, FALSE, NULL);
status = pDevExt->NtThreadStatus;
IoFreeWorkItem(pIoWorkItem);
...............................................
}
pIrp->IoStatus.Status = status;
pIrp->IoStatus.Information = 0;
IoCompleteRequest(pIrp, IO_NO_INCREMENT);
KdPrint(("DispatchOpen Exit 0x%0x \r\n", status));
return status;
}
VOID WorkerThreadStart(PDEVICE_OBJECT DeviceObject, PVOID Context)
{
Pxxx_DEVICE_EXTENSION pContext = (PVOID)Context;
HANDLE WriteThreadHandle;
KdPrint(("WorkerThreadStart Enter \r\n"));
pContext->NtThreadStatus = PsCreateSystemThread(&WriteThreadHandle, 0, NULL, NULL, NULL, WriteThread, (PVOID)pContext);
if(NT_SUCCESS(pContext->NtThreadStatus))
{
ObReferenceObjectByHandle(WriteThreadHandle, GENERIC_READ | GENERIC_WRITE, NULL, KernelMode, (PVOID *)&pContext->pWriteThread, NULL);
ZwClose(WriteThreadHandle);
}
KeSetEvent(&pContext->kInitEvent, IO_NO_INCREMENT, FALSE);
}
VOID WriteThread(PVOID StartContext)
{
}