Author: tfaber Date: Tue May 1 16:53:02 2012 New Revision: 56469
URL: http://svn.reactos.org/svn/reactos?rev=56469&view=rev Log: [FBTUSB] - Shut up warnings - Fix whitespace issues
Modified: trunk/reactos/drivers/bluetooth/fbtusb/fbtdev.c trunk/reactos/drivers/bluetooth/fbtusb/fbtpnp.c trunk/reactos/drivers/bluetooth/fbtusb/fbtpwr.c trunk/reactos/drivers/bluetooth/fbtusb/fbtrwr.c trunk/reactos/drivers/bluetooth/fbtusb/fbtusb.c
Modified: trunk/reactos/drivers/bluetooth/fbtusb/fbtdev.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/bluetooth/fbtusb/fb... ============================================================================== --- trunk/reactos/drivers/bluetooth/fbtusb/fbtdev.c [iso-8859-1] (original) +++ trunk/reactos/drivers/bluetooth/fbtusb/fbtdev.c [iso-8859-1] Tue May 1 16:53:02 2012 @@ -22,13 +22,13 @@ // Dispatch routine for CreateHandle NTSTATUS FreeBT_DispatchCreate(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp) { - ULONG i; + //ULONG i; NTSTATUS ntStatus; PFILE_OBJECT fileObject; PDEVICE_EXTENSION deviceExtension; PIO_STACK_LOCATION irpStack; - PFREEBT_PIPE_CONTEXT pipeContext; - PUSBD_INTERFACE_INFORMATION interface; + //PFREEBT_PIPE_CONTEXT pipeContext; + PUSBD_INTERFACE_INFORMATION interface;
PAGED_CODE();
@@ -71,12 +71,12 @@
}
- if (deviceExtension->OpenHandleCount>0) - { - ntStatus = STATUS_ACCESS_VIOLATION; - goto FreeBT_DispatchCreate_Exit; - - } + if (deviceExtension->OpenHandleCount>0) + { + ntStatus = STATUS_ACCESS_VIOLATION; + goto FreeBT_DispatchCreate_Exit; + + }
// opening a device as opposed to pipe. ntStatus = STATUS_SUCCESS; @@ -105,15 +105,15 @@ PFILE_OBJECT fileObject; PDEVICE_EXTENSION deviceExtension; PIO_STACK_LOCATION irpStack; - PFREEBT_PIPE_CONTEXT pipeContext; - PUSBD_PIPE_INFORMATION pipeInformation; + //PFREEBT_PIPE_CONTEXT pipeContext; + //PUSBD_PIPE_INFORMATION pipeInformation;
PAGED_CODE();
irpStack = IoGetCurrentIrpStackLocation(Irp); fileObject = irpStack->FileObject; - pipeContext = NULL; - pipeInformation = NULL; + //pipeContext = NULL; + //pipeInformation = NULL; deviceExtension = (PDEVICE_EXTENSION) DeviceObject->DeviceExtension;
FreeBT_DbgPrint(3, ("FreeBT_DispatchClose: Entered\n")); @@ -134,16 +134,16 @@ // Called when a HCI Send on the control pipe completes NTSTATUS FreeBT_HCISendCompletion(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PVOID Context) { - ULONG stageLength; + //ULONG stageLength; NTSTATUS ntStatus;
FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_HCISendCompletion, status=0x%08X\n", Irp->IoStatus.Status));
- if (Irp->PendingReturned) - IoMarkIrpPending(Irp); + if (Irp->PendingReturned) + IoMarkIrpPending(Irp);
ExFreePool(Context); - FreeBT_IoDecrement(DeviceObject->DeviceExtension); + FreeBT_IoDecrement(DeviceObject->DeviceExtension); ntStatus = Irp->IoStatus.Status; Irp->IoStatus.Information = 0;
@@ -155,79 +155,79 @@ // HCI Commands are sent on the (default) control pipe NTSTATUS FreeBT_SendHCICommand(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PVOID IoBuffer, IN ULONG InputBufferLength) { - PDEVICE_EXTENSION deviceExtension; - ULONG urbFlags; - ULONG stageLength; - PVOID pBuffer; - PURB urb; - NTSTATUS ntStatus; - PIO_STACK_LOCATION nextStack; - //PFBT_HCI_CMD_HEADER pHCICommand; - //LARGE_INTEGER delay; - - deviceExtension = (PDEVICE_EXTENSION) DeviceObject->DeviceExtension; - if (!deviceExtension) - { - ntStatus=STATUS_INVALID_PARAMETER; - FreeBT_DbgPrint(1, ("FBTUSB: FreeBT_SendHCICommand: Failed to get DeviceExtension\n")); - Irp->IoStatus.Status = ntStatus; - Irp->IoStatus.Information = 0; - IoCompleteRequest(Irp, IO_NO_INCREMENT); - return ntStatus; - - } - - // The user is doing a reset, reset all the pipes as well, so that any - // old events or data are removed - /*pHCICommand=(PFBT_HCI_CMD_HEADER)IoBuffer; - if (pHCICommand->OpCode==FBT_HCI_CMD_RESET) - { - FreeBT_ResetPipe(DeviceObject, deviceExtension->EventPipe.PipeHandle); - FreeBT_ResetPipe(DeviceObject, deviceExtension->DataInPipe.PipeHandle); - FreeBT_ResetPipe(DeviceObject, deviceExtension->DataOutPipe.PipeHandle); - FreeBT_ResetPipe(DeviceObject, deviceExtension->AudioInPipe.PipeHandle); - FreeBT_ResetPipe(DeviceObject, deviceExtension->AudioOutPipe.PipeHandle); - - // Wait a second for the device to recover - FreeBT_DbgPrint(1, ("FBTUSB: FreeBT_SendHCICommand: Sleeping\n")); - delay.QuadPart = -10000 * 5000; // 5s + PDEVICE_EXTENSION deviceExtension; + //ULONG urbFlags; + //ULONG stageLength; + //PVOID pBuffer; + PURB urb; + NTSTATUS ntStatus; + PIO_STACK_LOCATION nextStack; + //PFBT_HCI_CMD_HEADER pHCICommand; + //LARGE_INTEGER delay; + + deviceExtension = (PDEVICE_EXTENSION) DeviceObject->DeviceExtension; + if (!deviceExtension) + { + ntStatus=STATUS_INVALID_PARAMETER; + FreeBT_DbgPrint(1, ("FBTUSB: FreeBT_SendHCICommand: Failed to get DeviceExtension\n")); + Irp->IoStatus.Status = ntStatus; + Irp->IoStatus.Information = 0; + IoCompleteRequest(Irp, IO_NO_INCREMENT); + return ntStatus; + + } + + // The user is doing a reset, reset all the pipes as well, so that any + // old events or data are removed + /*pHCICommand=(PFBT_HCI_CMD_HEADER)IoBuffer; + if (pHCICommand->OpCode==FBT_HCI_CMD_RESET) + { + FreeBT_ResetPipe(DeviceObject, deviceExtension->EventPipe.PipeHandle); + FreeBT_ResetPipe(DeviceObject, deviceExtension->DataInPipe.PipeHandle); + FreeBT_ResetPipe(DeviceObject, deviceExtension->DataOutPipe.PipeHandle); + FreeBT_ResetPipe(DeviceObject, deviceExtension->AudioInPipe.PipeHandle); + FreeBT_ResetPipe(DeviceObject, deviceExtension->AudioOutPipe.PipeHandle); + + // Wait a second for the device to recover + FreeBT_DbgPrint(1, ("FBTUSB: FreeBT_SendHCICommand: Sleeping\n")); + delay.QuadPart = -10000 * 5000; // 5s KeWaitForSingleObject(&deviceExtension->DelayEvent, Executive, UserMode, FALSE, &delay);
- FreeBT_DbgPrint(1, ("FBTUSB: FreeBT_SendHCICommand: Finished sleeping\n")); - - - }*/ - - // Create the URB + FreeBT_DbgPrint(1, ("FBTUSB: FreeBT_SendHCICommand: Finished sleeping\n")); + + + }*/ + + // Create the URB urb = (PURB)ExAllocatePool(NonPagedPool, sizeof(struct _URB_CONTROL_VENDOR_OR_CLASS_REQUEST)); if(urb == NULL) { FreeBT_DbgPrint(1, ("FBTUSB: FreeBT_SendHCICommand: Failed to alloc mem for urb\n")); ntStatus = STATUS_INSUFFICIENT_RESOURCES; - Irp->IoStatus.Status = ntStatus; - Irp->IoStatus.Information = 0; - IoCompleteRequest(Irp, IO_NO_INCREMENT); - return ntStatus; - - } - - UsbBuildVendorRequest( - urb, - URB_FUNCTION_CLASS_DEVICE, // This works, for CSR and Silicon Wave - sizeof(struct _URB_CONTROL_VENDOR_OR_CLASS_REQUEST), - 0, - 0, - 0, - 0, - 0, - IoBuffer, - NULL, - InputBufferLength, - NULL); + Irp->IoStatus.Status = ntStatus; + Irp->IoStatus.Information = 0; + IoCompleteRequest(Irp, IO_NO_INCREMENT); + return ntStatus; + + } + + UsbBuildVendorRequest( + urb, + URB_FUNCTION_CLASS_DEVICE, // This works, for CSR and Silicon Wave + sizeof(struct _URB_CONTROL_VENDOR_OR_CLASS_REQUEST), + 0, + 0, + 0, + 0, + 0, + IoBuffer, + NULL, + InputBufferLength, + NULL);
// use the original irp as an internal device control irp nextStack = IoGetNextIrpStackLocation(Irp); @@ -236,41 +236,41 @@ nextStack->Parameters.DeviceIoControl.IoControlCode = IOCTL_INTERNAL_USB_SUBMIT_URB;
IoSetCompletionRoutine( - Irp, - (PIO_COMPLETION_ROUTINE)FreeBT_HCISendCompletion, - urb, - TRUE, - TRUE, - TRUE); + Irp, + (PIO_COMPLETION_ROUTINE)FreeBT_HCISendCompletion, + urb, + TRUE, + TRUE, + TRUE);
// We return STATUS_PENDING; call IoMarkIrpPending. IoMarkIrpPending(Irp);
- FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_SendHCICommand::")); + FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_SendHCICommand::")); FreeBT_IoIncrement(deviceExtension);
- FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_SendHCICommand: Sending IRP %X to underlying driver\n", Irp)); + FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_SendHCICommand: Sending IRP %X to underlying driver\n", Irp)); ntStatus=IoCallDriver(deviceExtension->TopOfStackDeviceObject, Irp); if(!NT_SUCCESS(ntStatus)) { FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_SendHCICommand: IoCallDriver fails with status %X\n", ntStatus));
- FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_SendHCICommand::")); - FreeBT_IoDecrement(deviceExtension); + FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_SendHCICommand::")); + FreeBT_IoDecrement(deviceExtension);
// If the device was surprise removed out, the pipeInformation field is invalid. // similarly if the request was cancelled, then we need not reset the device. if((ntStatus != STATUS_CANCELLED) && (ntStatus != STATUS_DEVICE_NOT_CONNECTED)) - ntStatus = FreeBT_ResetDevice(DeviceObject); + ntStatus = FreeBT_ResetDevice(DeviceObject);
else FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_SendHCICommand: ntStatus is STATUS_CANCELLED or STATUS_DEVICE_NOT_CONNECTED\n"));
- Irp->IoStatus.Status = ntStatus; - Irp->IoStatus.Information = 0; - IoCompleteRequest(Irp, IO_NO_INCREMENT); - - return ntStatus; + Irp->IoStatus.Status = ntStatus; + Irp->IoStatus.Information = 0; + IoCompleteRequest(Irp, IO_NO_INCREMENT); + + return ntStatus;
}
@@ -283,24 +283,24 @@ // Called when a HCI Get on the event pipe completes NTSTATUS FreeBT_HCIEventCompletion(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PVOID Context) { - ULONG stageLength; + //ULONG stageLength; NTSTATUS ntStatus; PIO_STACK_LOCATION nextStack; - PURB urb; + PURB urb;
FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_HCIEventCompletion, status=0x%08X\n", Irp->IoStatus.Status));
- if (Irp->PendingReturned) - IoMarkIrpPending(Irp); + if (Irp->PendingReturned) + IoMarkIrpPending(Irp);
// initialize variables - urb=(PURB)Context; + urb=(PURB)Context; ntStatus = Irp->IoStatus.Status; Irp->IoStatus.Information = urb->UrbBulkOrInterruptTransfer.TransferBufferLength; nextStack = IoGetNextIrpStackLocation(Irp);
ExFreePool(Context); - FreeBT_IoDecrement(DeviceObject->DeviceExtension); + FreeBT_IoDecrement(DeviceObject->DeviceExtension);
return ntStatus;
@@ -309,10 +309,10 @@ // Called from the DeviceIOControl handler to wait for an event on the interrupt pipe NTSTATUS FreeBT_GetHCIEvent(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PVOID IoBuffer, IN ULONG InputBufferLength) { - PDEVICE_EXTENSION deviceExtension; - PURB urb; - NTSTATUS ntStatus; - PIO_STACK_LOCATION nextStack; + PDEVICE_EXTENSION deviceExtension; + PURB urb; + NTSTATUS ntStatus; + PIO_STACK_LOCATION nextStack;
FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_GetHCIEvent: Entered\n"));
@@ -346,17 +346,17 @@ nextStack->Parameters.DeviceIoControl.IoControlCode = IOCTL_INTERNAL_USB_SUBMIT_URB;
IoSetCompletionRoutine( - Irp, - (PIO_COMPLETION_ROUTINE)FreeBT_HCIEventCompletion, - urb, - TRUE, - TRUE, - TRUE); + Irp, + (PIO_COMPLETION_ROUTINE)FreeBT_HCIEventCompletion, + urb, + TRUE, + TRUE, + TRUE);
// We return STATUS_PENDING; call IoMarkIrpPending. IoMarkIrpPending(Irp);
- FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_GetHCIEvent::")); + FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_GetHCIEvent::")); FreeBT_IoIncrement(deviceExtension);
ntStatus = IoCallDriver(deviceExtension->TopOfStackDeviceObject, Irp); @@ -364,8 +364,8 @@ { FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_GetHCIEvent: IoCallDriver fails with status %X\n", ntStatus));
- FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_GetHCIEvent::")); - FreeBT_IoDecrement(deviceExtension); + FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_GetHCIEvent::")); + FreeBT_IoDecrement(deviceExtension);
// If the device was surprise removed out, the pipeInformation field is invalid. // similarly if the request was cancelled, then we need not reset the pipe. @@ -432,17 +432,17 @@ if (deviceExtension->DeviceState != Working) { FreeBT_DbgPrint(1, ("FBTUSB: Invalid device state\n")); - ntStatus = STATUS_INVALID_DEVICE_STATE; - goto FreeBT_DispatchDevCtrlExit; - - } + ntStatus = STATUS_INVALID_DEVICE_STATE; + goto FreeBT_DispatchDevCtrlExit; + + }
FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_DispatchDevCtrl::"));
// Make sure that any selective suspend request has been completed. if (deviceExtension->SSEnable) { - FreeBT_DbgPrint(3, ("Waiting on the IdleReqPendEvent\n")); + FreeBT_DbgPrint(3, ("Waiting on the IdleReqPendEvent\n")); KeWaitForSingleObject(&deviceExtension->NoIdleReqPendEvent, Executive, KernelMode, @@ -453,49 +453,49 @@
switch(code) { - case IOCTL_FREEBT_HCI_SEND_CMD: - FreeBT_DbgPrint(3, ("FBTUSB: IOCTL_FREEBT_HCI_SEND_CMD received\n")); - if (inputBufferLength<FBT_HCI_CMD_MIN_SIZE) - { - ntStatus = STATUS_BUFFER_TOO_SMALL; - FreeBT_DbgPrint(3, ("FBTUSB: IOCTL_FREEBT_HCI_SEND_CMD: Buffer too small\n")); - goto FreeBT_DispatchDevCtrlExit; - - } - - if (inputBufferLength>FBT_HCI_CMD_MAX_SIZE) - { - ntStatus = STATUS_INVALID_BUFFER_SIZE; - FreeBT_DbgPrint(3, ("FBTUSB: IOCTL_FREEBT_HCI_SEND_CMD: Buffer too long\n")); - goto FreeBT_DispatchDevCtrlExit; - - } - - return FreeBT_SendHCICommand(DeviceObject, Irp, ioBuffer, inputBufferLength); - break; - - case IOCTL_FREEBT_HCI_GET_EVENT: - FreeBT_DbgPrint(3, ("FBTUSB: IOCTL_FREEBT_HCI_GET_EVENT received\n")); - if (outputBufferLength<FBT_HCI_EVENT_MAX_SIZE) - { - ntStatus = STATUS_BUFFER_TOO_SMALL; - FreeBT_DbgPrint(3, ("FBTUSB: IOCTL_FREEBT_HCI_GET_EVENT: Buffer too small\n")); - goto FreeBT_DispatchDevCtrlExit; - - } - - return FreeBT_GetHCIEvent(DeviceObject, Irp, ioBuffer, outputBufferLength); - break; + case IOCTL_FREEBT_HCI_SEND_CMD: + FreeBT_DbgPrint(3, ("FBTUSB: IOCTL_FREEBT_HCI_SEND_CMD received\n")); + if (inputBufferLength<FBT_HCI_CMD_MIN_SIZE) + { + ntStatus = STATUS_BUFFER_TOO_SMALL; + FreeBT_DbgPrint(3, ("FBTUSB: IOCTL_FREEBT_HCI_SEND_CMD: Buffer too small\n")); + goto FreeBT_DispatchDevCtrlExit; + + } + + if (inputBufferLength>FBT_HCI_CMD_MAX_SIZE) + { + ntStatus = STATUS_INVALID_BUFFER_SIZE; + FreeBT_DbgPrint(3, ("FBTUSB: IOCTL_FREEBT_HCI_SEND_CMD: Buffer too long\n")); + goto FreeBT_DispatchDevCtrlExit; + + } + + return FreeBT_SendHCICommand(DeviceObject, Irp, ioBuffer, inputBufferLength); + break; + + case IOCTL_FREEBT_HCI_GET_EVENT: + FreeBT_DbgPrint(3, ("FBTUSB: IOCTL_FREEBT_HCI_GET_EVENT received\n")); + if (outputBufferLength<FBT_HCI_EVENT_MAX_SIZE) + { + ntStatus = STATUS_BUFFER_TOO_SMALL; + FreeBT_DbgPrint(3, ("FBTUSB: IOCTL_FREEBT_HCI_GET_EVENT: Buffer too small\n")); + goto FreeBT_DispatchDevCtrlExit; + + } + + return FreeBT_GetHCIEvent(DeviceObject, Irp, ioBuffer, outputBufferLength); + break;
default: - FreeBT_DbgPrint(3, ("FBTUSB: Invalid IOCTL 0x%08x received\n", code)); + FreeBT_DbgPrint(3, ("FBTUSB: Invalid IOCTL 0x%08x received\n", code)); ntStatus = STATUS_INVALID_DEVICE_REQUEST; break;
}
FreeBT_DispatchDevCtrlExit: - Irp->IoStatus.Information = 0; + Irp->IoStatus.Information = 0; Irp->IoStatus.Status = ntStatus; IoCompleteRequest(Irp, IO_NO_INCREMENT);
@@ -1125,13 +1125,13 @@ { FreeBT_DbgPrint(3, ("IoCancelIrp returns TRUE\n"));
- } + }
else { FreeBT_DbgPrint(3, ("IoCancelIrp returns FALSE\n"));
- } + }
// ....we decrement the FreeIdleIrpCount from 2 to 1. // if completion routine runs ahead of us, then this routine @@ -1167,7 +1167,7 @@ if(irpContext) { KeSetEvent(irpContext->Event, 0, FALSE); - FreeBT_IoDecrement(irpContext->DeviceExtension); + FreeBT_IoDecrement(irpContext->DeviceExtension); ExFreePool(irpContext);
}
Modified: trunk/reactos/drivers/bluetooth/fbtusb/fbtpnp.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/bluetooth/fbtusb/fb... ============================================================================== --- trunk/reactos/drivers/bluetooth/fbtusb/fbtpnp.c [iso-8859-1] (original) +++ trunk/reactos/drivers/bluetooth/fbtusb/fbtpnp.c [iso-8859-1] Tue May 1 16:53:02 2012 @@ -25,7 +25,7 @@ { PIO_STACK_LOCATION irpStack; PDEVICE_EXTENSION deviceExtension; - KEVENT startDeviceEvent; + //KEVENT startDeviceEvent; NTSTATUS ntStatus;
irpStack = IoGetCurrentIrpStackLocation(Irp); @@ -33,7 +33,7 @@
// since the device is removed, fail the Irp. if (Removed == deviceExtension->DeviceState) - { + { ntStatus = STATUS_DELETE_PENDING; Irp->IoStatus.Status = ntStatus; Irp->IoStatus.Information = 0; @@ -45,15 +45,15 @@ FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_DispatchPnP::")); FreeBT_IoIncrement(deviceExtension); if (irpStack->MinorFunction == IRP_MN_START_DEVICE) - { + { ASSERT(deviceExtension->IdleReqPend == 0);
}
else - { + { if (deviceExtension->SSEnable) - { + { CancelSelectSuspend(deviceExtension);
} @@ -64,7 +64,7 @@ FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_DispatchPnP::")); FreeBT_DbgPrint(2, (PnPMinorFunctionString(irpStack->MinorFunction))); switch (irpStack->MinorFunction) - { + { case IRP_MN_START_DEVICE: ntStatus = HandleStartDevice(DeviceObject, Irp); break; @@ -73,7 +73,7 @@ // if we cannot stop the device, we fail the query stop irp ntStatus = CanStopDevice(DeviceObject, Irp); if(NT_SUCCESS(ntStatus)) - { + { ntStatus = HandleQueryStopDevice(DeviceObject, Irp); return ntStatus;
@@ -168,14 +168,14 @@
ntStatus = IoCallDriver(deviceExtension->TopOfStackDeviceObject, Irp); if (ntStatus == STATUS_PENDING) - { + { KeWaitForSingleObject(&startDeviceEvent, Executive, KernelMode, FALSE, NULL); ntStatus = Irp->IoStatus.Status;
}
if (!NT_SUCCESS(ntStatus)) - { + { FreeBT_DbgPrint(1, ("FBTUSB: HandleStartDevice: Lower drivers failed this Irp (0x%08x)\n", ntStatus)); return ntStatus;
@@ -185,7 +185,7 @@ // and select the interface descriptors ntStatus = ReadandSelectDescriptors(DeviceObject); if (!NT_SUCCESS(ntStatus)) - { + { FreeBT_DbgPrint(1, ("FBTUSB: HandleStartDevice: ReadandSelectDescriptors failed (0x%08x)\n", ntStatus)); return ntStatus;
@@ -195,7 +195,7 @@ // handles to the device ntStatus = IoSetDeviceInterfaceState(&deviceExtension->InterfaceName, TRUE); if (!NT_SUCCESS(ntStatus)) - { + { FreeBT_DbgPrint(1, ("FBTUSB: HandleStartDevice: IoSetDeviceInterfaceState failed (0x%08x)\n", ntStatus)); return ntStatus;
@@ -213,19 +213,19 @@ deviceExtension->WaitWakeIrp = NULL;
if (deviceExtension->WaitWakeEnable) - { + { IssueWaitWake(deviceExtension);
}
ProcessQueuedRequests(deviceExtension); if (WinXpOrBetter == deviceExtension->WdmVersion) - { + { deviceExtension->SSEnable = deviceExtension->SSRegistryEnable;
// set timer.for selective suspend requests if (deviceExtension->SSEnable) - { + { dueTime.QuadPart = -10000 * IDLE_INTERVAL; // 5000 ms KeSetTimerEx(&deviceExtension->Timer, dueTime, IDLE_INTERVAL, &deviceExtension->DeferredProcCall); deviceExtension->FreeIdleIrpCount = 0; @@ -254,11 +254,11 @@ // 1. Read the device descriptor urb = (PURB) ExAllocatePool(NonPagedPool, sizeof(struct _URB_CONTROL_DESCRIPTOR_REQUEST)); if(urb) - { + { siz = sizeof(USB_DEVICE_DESCRIPTOR); deviceDescriptor = (PUSB_DEVICE_DESCRIPTOR) ExAllocatePool(NonPagedPool, siz); if (deviceDescriptor) - { + { UsbBuildGetDescriptorRequest( urb, (USHORT) sizeof(struct _URB_CONTROL_DESCRIPTOR_REQUEST), @@ -272,7 +272,7 @@
ntStatus = CallUSBD(DeviceObject, urb); if (NT_SUCCESS(ntStatus)) - { + { ASSERT(deviceDescriptor->bNumConfigurations); ntStatus = ConfigureDevice(DeviceObject);
@@ -284,7 +284,7 @@ }
else - { + { FreeBT_DbgPrint(1, ("FBTUSB: ReadandSelectDescriptors: Failed to allocate memory for deviceDescriptor")); ExFreePool(urb); ntStatus = STATUS_INSUFFICIENT_RESOURCES; @@ -294,7 +294,7 @@ }
else - { + { FreeBT_DbgPrint(1, ("FBTUSB: ReadandSelectDescriptors: Failed to allocate memory for urb")); ntStatus = STATUS_INSUFFICIENT_RESOURCES;
@@ -323,12 +323,12 @@ // 2. Read the CD with all embedded interface and endpoint descriptors urb = (PURB) ExAllocatePool(NonPagedPool, sizeof(struct _URB_CONTROL_DESCRIPTOR_REQUEST)); if (urb) - { + { siz = sizeof(USB_CONFIGURATION_DESCRIPTOR); configurationDescriptor = (PUSB_CONFIGURATION_DESCRIPTOR) ExAllocatePool(NonPagedPool, siz);
if(configurationDescriptor) - { + { UsbBuildGetDescriptorRequest( urb, (USHORT) sizeof(struct _URB_CONTROL_DESCRIPTOR_REQUEST), @@ -342,7 +342,7 @@
ntStatus = CallUSBD(DeviceObject, urb); if(!NT_SUCCESS(ntStatus)) - { + { FreeBT_DbgPrint(1, ("FBTUSB: ConfigureDevice: UsbBuildGetDescriptorRequest failed\n")); goto ConfigureDevice_Exit;
@@ -351,7 +351,7 @@ }
else - { + { FreeBT_DbgPrint(1, ("FBTUSB: ConfigureDevice: Failed to allocate mem for config Descriptor\n")); ntStatus = STATUS_INSUFFICIENT_RESOURCES; goto ConfigureDevice_Exit; @@ -363,7 +363,7 @@
configurationDescriptor = (PUSB_CONFIGURATION_DESCRIPTOR) ExAllocatePool(NonPagedPool, siz); if (configurationDescriptor) - { + { UsbBuildGetDescriptorRequest( urb, (USHORT)sizeof(struct _URB_CONTROL_DESCRIPTOR_REQUEST), @@ -377,7 +377,7 @@
ntStatus = CallUSBD(DeviceObject, urb); if (!NT_SUCCESS(ntStatus)) - { + { FreeBT_DbgPrint(1,("FBTUSB: ConfigureDevice: Failed to read configuration descriptor")); goto ConfigureDevice_Exit;
@@ -386,7 +386,7 @@ }
else - { + { FreeBT_DbgPrint(1, ("FBTUSB: ConfigureDevice: Failed to alloc mem for config Descriptor\n")); ntStatus = STATUS_INSUFFICIENT_RESOURCES; goto ConfigureDevice_Exit; @@ -396,7 +396,7 @@ }
else - { + { FreeBT_DbgPrint(1, ("FBTUSB: ConfigureDevice: Failed to allocate memory for urb\n")); ntStatus = STATUS_INSUFFICIENT_RESOURCES; goto ConfigureDevice_Exit; @@ -404,7 +404,7 @@ }
if (configurationDescriptor) - { + { // save a copy of configurationDescriptor in deviceExtension // remember to free it later. deviceExtension->UsbConfigurationDescriptor = configurationDescriptor; @@ -427,14 +427,14 @@ }
else - { + { deviceExtension->UsbConfigurationDescriptor = NULL;
}
ConfigureDevice_Exit: if (urb) - { + { ExFreePool(urb);
} @@ -448,7 +448,7 @@ LONG numberOfInterfaces, interfaceNumber, interfaceindex; ULONG i; PURB urb; - PUCHAR pInf; + //PUCHAR pInf; NTSTATUS ntStatus; PDEVICE_EXTENSION deviceExtension; PUSB_INTERFACE_DESCRIPTOR interfaceDescriptor; @@ -465,10 +465,10 @@
// Parse the configuration descriptor for the interface; tmp = interfaceList = (PUSBD_INTERFACE_LIST_ENTRY) - ExAllocatePool(NonPagedPool, sizeof(USBD_INTERFACE_LIST_ENTRY) * (numberOfInterfaces + 1)); + ExAllocatePool(NonPagedPool, sizeof(USBD_INTERFACE_LIST_ENTRY) * (numberOfInterfaces + 1));
if (!tmp) - { + {
FreeBT_DbgPrint(1, ("FBTUSB: SelectInterfaces: Failed to allocate mem for interfaceList\n")); return STATUS_INSUFFICIENT_RESOURCES; @@ -476,11 +476,11 @@ }
- FreeBT_DbgPrint(3, ("FBTUSB: -------------\n")); - FreeBT_DbgPrint(3, ("FBTUSB: Number of interfaces %d\n", numberOfInterfaces)); + FreeBT_DbgPrint(3, ("FBTUSB: -------------\n")); + FreeBT_DbgPrint(3, ("FBTUSB: Number of interfaces %d\n", numberOfInterfaces));
while (interfaceNumber < numberOfInterfaces) - { + { interfaceDescriptor = USBD_ParseConfigurationDescriptorEx( ConfigurationDescriptor, ConfigurationDescriptor, @@ -488,7 +488,7 @@ 0, -1, -1, -1);
if (interfaceDescriptor) - { + { interfaceList->InterfaceDescriptor = interfaceDescriptor; interfaceList->Interface = NULL; interfaceList++; @@ -505,10 +505,10 @@ urb = USBD_CreateConfigurationRequestEx(ConfigurationDescriptor, tmp);
if (urb) - { + { Interface = &urb->UrbSelectConfiguration.Interface; for (i=0; i<Interface->NumberOfPipes; i++) - { + { // perform pipe initialization here // set the transfer size and any pipe flags we use // USBD sets the rest of the Interface struct members @@ -518,17 +518,17 @@
ntStatus = CallUSBD(DeviceObject, urb); if (NT_SUCCESS(ntStatus)) - { + { // save a copy of interface information in the device extension. deviceExtension->UsbInterface = (PUSBD_INTERFACE_INFORMATION) ExAllocatePool(NonPagedPool, Interface->Length); if (deviceExtension->UsbInterface) - { + { RtlCopyMemory(deviceExtension->UsbInterface, Interface, Interface->Length);
}
else - { + { ntStatus = STATUS_INSUFFICIENT_RESOURCES; FreeBT_DbgPrint(1, ("FBTUSB: SelectInterfaces: Memory alloc for UsbInterface failed\n"));
@@ -547,18 +547,18 @@ Interface->SubClass, Interface->Protocol));
- if (Interface->Class==FREEBT_USB_STDCLASS && Interface->SubClass==FREEBT_USB_STDSUBCLASS && - Interface->Protocol==FREEBT_USB_STDPROTOCOL) - { - FreeBT_DbgPrint(3, ("FBTUSB: This is a standard USB Bluetooth device\n")); - - } - - else - { - FreeBT_DbgPrint(3, ("FBTUSB: WARNING: This device does not report itself as a standard USB Bluetooth device\n")); - - } + if (Interface->Class==FREEBT_USB_STDCLASS && Interface->SubClass==FREEBT_USB_STDSUBCLASS && + Interface->Protocol==FREEBT_USB_STDPROTOCOL) + { + FreeBT_DbgPrint(3, ("FBTUSB: This is a standard USB Bluetooth device\n")); + + } + + else + { + FreeBT_DbgPrint(3, ("FBTUSB: WARNING: This device does not report itself as a standard USB Bluetooth device\n")); + + }
// Initialize the PipeContext // Dump the pipe info @@ -568,74 +568,74 @@ sizeof(FREEBT_PIPE_CONTEXT));
if (!deviceExtension->PipeContext) - { + { ntStatus = STATUS_INSUFFICIENT_RESOURCES; FreeBT_DbgPrint(1, ("FBTUSB: Memory alloc for UsbInterface failed\n"));
}
else - { - FreeBT_DbgPrint(3, ("FBTUSB: SelectInterfaces: Allocated PipeContext %p\n", deviceExtension->PipeContext)); - for (i=0; i<Interface->NumberOfPipes; i++) - { - deviceExtension->PipeContext[i].PipeOpen = FALSE; - - FreeBT_DbgPrint(3, ("FBTUSB: ---------\n")); - FreeBT_DbgPrint(3, ("FBTUSB: PipeType 0x%x\n", Interface->Pipes[i].PipeType)); - FreeBT_DbgPrint(3, ("FBTUSB: EndpointAddress 0x%x\n", Interface->Pipes[i].EndpointAddress)); - FreeBT_DbgPrint(3, ("FBTUSB: MaxPacketSize 0x%x\n", Interface->Pipes[i].MaximumPacketSize)); - FreeBT_DbgPrint(3, ("FBTUSB: Interval 0x%x\n", Interface->Pipes[i].Interval)); - FreeBT_DbgPrint(3, ("FBTUSB: Handle 0x%x\n", Interface->Pipes[i].PipeHandle)); - FreeBT_DbgPrint(3, ("FBTUSB: MaximumTransferSize 0x%x\n", Interface->Pipes[i].MaximumTransferSize)); - - // Log the pipes - // Note the HCI Command endpoint won't appear here, because the Default Control Pipe - // is used for this. The Default Control Pipe is always present at EndPointAddress 0x0 - switch (Interface->Pipes[i].EndpointAddress) - { - case FREEBT_STDENDPOINT_HCIEVENT: - deviceExtension->PipeContext[i].PipeType=HciEventPipe; - deviceExtension->EventPipe=Interface->Pipes[i]; - FreeBT_DbgPrint(3, ("FBTUSB: HCI Event Endpoint\n")); - break; - - case FREEBT_STDENDPOINT_ACLIN: - deviceExtension->PipeContext[i].PipeType=AclDataIn; - deviceExtension->DataInPipe=Interface->Pipes[i]; - FreeBT_DbgPrint(3, ("FBTUSB: ACL Data In Endpoint\n")); - break; - - case FREEBT_STDENDPOINT_ACLOUT: - deviceExtension->PipeContext[i].PipeType=AclDataOut; - deviceExtension->DataOutPipe=Interface->Pipes[i]; - FreeBT_DbgPrint(3, ("FBTUSB: ACL Data Out Endpoint\n")); - break; - - case FREEBT_STDENDPOINT_AUDIOIN: - deviceExtension->PipeContext[i].PipeType=SCODataIn; - deviceExtension->AudioInPipe=Interface->Pipes[i]; - FreeBT_DbgPrint(3, ("FBTUSB: ACL Data Out Endpoint\n")); - break; - - case FREEBT_STDENDPOINT_AUDIOOUT: - deviceExtension->PipeContext[i].PipeType=SCODataOut; - deviceExtension->AudioOutPipe=Interface->Pipes[i]; - FreeBT_DbgPrint(3, ("FBTUSB: ACL Data Out Endpoint\n")); - break; - - } - - } - - } + { + FreeBT_DbgPrint(3, ("FBTUSB: SelectInterfaces: Allocated PipeContext %p\n", deviceExtension->PipeContext)); + for (i=0; i<Interface->NumberOfPipes; i++) + { + deviceExtension->PipeContext[i].PipeOpen = FALSE; + + FreeBT_DbgPrint(3, ("FBTUSB: ---------\n")); + FreeBT_DbgPrint(3, ("FBTUSB: PipeType 0x%x\n", Interface->Pipes[i].PipeType)); + FreeBT_DbgPrint(3, ("FBTUSB: EndpointAddress 0x%x\n", Interface->Pipes[i].EndpointAddress)); + FreeBT_DbgPrint(3, ("FBTUSB: MaxPacketSize 0x%x\n", Interface->Pipes[i].MaximumPacketSize)); + FreeBT_DbgPrint(3, ("FBTUSB: Interval 0x%x\n", Interface->Pipes[i].Interval)); + FreeBT_DbgPrint(3, ("FBTUSB: Handle 0x%x\n", Interface->Pipes[i].PipeHandle)); + FreeBT_DbgPrint(3, ("FBTUSB: MaximumTransferSize 0x%x\n", Interface->Pipes[i].MaximumTransferSize)); + + // Log the pipes + // Note the HCI Command endpoint won't appear here, because the Default Control Pipe + // is used for this. The Default Control Pipe is always present at EndPointAddress 0x0 + switch (Interface->Pipes[i].EndpointAddress) + { + case FREEBT_STDENDPOINT_HCIEVENT: + deviceExtension->PipeContext[i].PipeType=HciEventPipe; + deviceExtension->EventPipe=Interface->Pipes[i]; + FreeBT_DbgPrint(3, ("FBTUSB: HCI Event Endpoint\n")); + break; + + case FREEBT_STDENDPOINT_ACLIN: + deviceExtension->PipeContext[i].PipeType=AclDataIn; + deviceExtension->DataInPipe=Interface->Pipes[i]; + FreeBT_DbgPrint(3, ("FBTUSB: ACL Data In Endpoint\n")); + break; + + case FREEBT_STDENDPOINT_ACLOUT: + deviceExtension->PipeContext[i].PipeType=AclDataOut; + deviceExtension->DataOutPipe=Interface->Pipes[i]; + FreeBT_DbgPrint(3, ("FBTUSB: ACL Data Out Endpoint\n")); + break; + + case FREEBT_STDENDPOINT_AUDIOIN: + deviceExtension->PipeContext[i].PipeType=SCODataIn; + deviceExtension->AudioInPipe=Interface->Pipes[i]; + FreeBT_DbgPrint(3, ("FBTUSB: ACL Data Out Endpoint\n")); + break; + + case FREEBT_STDENDPOINT_AUDIOOUT: + deviceExtension->PipeContext[i].PipeType=SCODataOut; + deviceExtension->AudioOutPipe=Interface->Pipes[i]; + FreeBT_DbgPrint(3, ("FBTUSB: ACL Data Out Endpoint\n")); + break; + + } + + } + + }
FreeBT_DbgPrint(3, ("FBTUSB: ---------\n"));
}
else - { + { FreeBT_DbgPrint(1, ("FBTUSB: SelectInterfaces: Failed to select an interface\n"));
} @@ -643,20 +643,20 @@ }
else - { + { FreeBT_DbgPrint(1, ("FBTUSB: SelectInterfaces: USBD_CreateConfigurationRequestEx failed\n")); ntStatus = STATUS_INSUFFICIENT_RESOURCES;
}
if (tmp) - { + { ExFreePool(tmp);
}
if (urb) - { + { ExFreePool(urb);
} @@ -674,11 +674,11 @@ siz = sizeof(struct _URB_SELECT_CONFIGURATION); urb = (PURB) ExAllocatePool(NonPagedPool, siz); if (urb) - { + { UsbBuildSelectConfigurationRequest(urb, (USHORT)siz, NULL); ntStatus = CallUSBD(DeviceObject, urb); if(!NT_SUCCESS(ntStatus)) - { + { FreeBT_DbgPrint(3, ("FBTUSB: DeconfigureDevice: Failed to deconfigure device\n"));
} @@ -688,7 +688,7 @@ }
else - { + { FreeBT_DbgPrint(1, ("FBTUSB: DeconfigureDevice: Failed to allocate urb\n")); ntStatus = STATUS_INSUFFICIENT_RESOURCES;
@@ -722,7 +722,7 @@ &ioStatus);
if (!irp) - { + { FreeBT_DbgPrint(1, ("FBTUSB: CallUSBD: IoBuildDeviceIoControlRequest failed\n")); return STATUS_INSUFFICIENT_RESOURCES;
@@ -737,7 +737,7 @@
ntStatus = IoCallDriver(deviceExtension->TopOfStackDeviceObject, irp); if (ntStatus == STATUS_PENDING) - { + { KeWaitForSingleObject(&event, Executive, KernelMode, FALSE, NULL); ntStatus = ioStatus.Status;
@@ -808,7 +808,7 @@ // above us fails a query-stop and passes down the subsequent // cancel-stop. if(PendingStop == deviceExtension->DeviceState) - { + { KeInitializeEvent(&event, NotificationEvent, FALSE);
IoCopyCurrentIrpStackLocationToNext(Irp); @@ -821,14 +821,14 @@
ntStatus = IoCallDriver(deviceExtension->TopOfStackDeviceObject, Irp); if(ntStatus == STATUS_PENDING) - { + { KeWaitForSingleObject(&event, Executive, KernelMode, FALSE, NULL); ntStatus = Irp->IoStatus.Status;
}
if(NT_SUCCESS(ntStatus)) - { + { KeAcquireSpinLock(&deviceExtension->DevStateLock, &oldIrql);
RESTORE_PREVIOUS_PNP_STATE(deviceExtension); @@ -844,7 +844,7 @@ }
else - { + { // spurious Irp ntStatus = STATUS_SUCCESS;
@@ -866,9 +866,9 @@
deviceExtension = (PDEVICE_EXTENSION) DeviceObject->DeviceExtension; if(WinXpOrBetter == deviceExtension->WdmVersion) - { + { if(deviceExtension->SSEnable) - { + { // Cancel the timer so that the DPCs are no longer fired. // Thus, we are making judicious usage of our resources. // we do not need DPCs because the device is stopping. @@ -898,7 +898,7 @@ // the driver must not send any more Irps down that touch // the device until another Start has occurred. if (deviceExtension->WaitWakeEnable) - { + { CancelWaitWake(deviceExtension);
} @@ -988,7 +988,7 @@ // someone above us fails a query-remove and passes down the // subsequent cancel-remove. if(PendingRemove == deviceExtension->DeviceState) - { + {
KeInitializeEvent(&event, NotificationEvent, FALSE);
@@ -1002,14 +1002,14 @@
ntStatus = IoCallDriver(deviceExtension->TopOfStackDeviceObject, Irp); if(ntStatus == STATUS_PENDING) - { + { KeWaitForSingleObject(&event, Executive, KernelMode, FALSE, NULL); ntStatus = Irp->IoStatus.Status;
}
if (NT_SUCCESS(ntStatus)) - { + { KeAcquireSpinLock(&deviceExtension->DevStateLock, &oldIrql);
deviceExtension->QueueState = AllowRequests; @@ -1026,8 +1026,8 @@ }
else - { - // spurious cancel-remove + { + // spurious cancel-remove ntStatus = STATUS_SUCCESS;
} @@ -1053,16 +1053,16 @@ // 2. return device and memory resources // 3. disable interfaces if(deviceExtension->WaitWakeEnable) - { + { CancelWaitWake(deviceExtension);
}
if (WinXpOrBetter == deviceExtension->WdmVersion) - { + { if (deviceExtension->SSEnable) - { + { // Cancel the timer so that the DPCs are no longer fired. // we do not need DPCs because the device has been surprise // removed @@ -1090,7 +1090,7 @@
ntStatus = IoSetDeviceInterfaceState(&deviceExtension->InterfaceName, FALSE); if(!NT_SUCCESS(ntStatus)) - { + { FreeBT_DbgPrint(1, ("FBTUSB: HandleSurpriseRemoval: IoSetDeviceInterfaceState::disable:failed\n"));
} @@ -1112,7 +1112,7 @@ NTSTATUS HandleRemoveDevice(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp) { KIRQL oldIrql; - KEVENT event; + //KEVENT event; ULONG requestCount; NTSTATUS ntStatus; PDEVICE_EXTENSION deviceExtension; @@ -1126,7 +1126,7 @@ // (If we wanted to express an interest in preventing this removal, // we should have failed the query remove IRP). if(SurpriseRemoved != deviceExtension->DeviceState) - { + {
// we are here after QUERY_REMOVE KeAcquireSpinLock(&deviceExtension->DevStateLock, &oldIrql); @@ -1134,15 +1134,15 @@ KeReleaseSpinLock(&deviceExtension->DevStateLock, oldIrql);
if(deviceExtension->WaitWakeEnable) - { + { CancelWaitWake(deviceExtension);
}
if(WinXpOrBetter == deviceExtension->WdmVersion) - { + { if (deviceExtension->SSEnable) - { + { // Cancel the timer so that the DPCs are no longer fired. // we do not need DPCs because the device has been removed KeCancelTimer(&deviceExtension->Timer); @@ -1164,7 +1164,7 @@
ntStatus = IoSetDeviceInterfaceState(&deviceExtension->InterfaceName, FALSE); if(!NT_SUCCESS(ntStatus)) - { + { FreeBT_DbgPrint(1, ("FBTUSB: HandleRemoveDevice: IoSetDeviceInterfaceState::disable:failed\n"));
} @@ -1231,7 +1231,7 @@ pdc = irpStack->Parameters.DeviceCapabilities.Capabilities;
if(pdc->Version < 1 || pdc->Size < sizeof(DEVICE_CAPABILITIES)) - { + {
FreeBT_DbgPrint(1, ("FBTUSB: HandleQueryCapabilities::request failed\n")); ntStatus = STATUS_UNSUCCESSFUL; @@ -1254,7 +1254,7 @@ TRUE); ntStatus = IoCallDriver(deviceExtension->TopOfStackDeviceObject, Irp); if(ntStatus == STATUS_PENDING) - { + { KeWaitForSingleObject(&event, Executive, KernelMode, FALSE, NULL); ntStatus = Irp->IoStatus.Status;
@@ -1263,12 +1263,12 @@ // initialize PowerDownLevel to disabled deviceExtension->PowerDownLevel = PowerDeviceUnspecified; if(NT_SUCCESS(ntStatus)) - { + { deviceExtension->DeviceCapabilities = *pdc; for(i = PowerSystemSleeping1; i <= PowerSystemSleeping3; i++) - { + { if(deviceExtension->DeviceCapabilities.DeviceState[i] < PowerDeviceD3) - { + { deviceExtension->PowerDownLevel = deviceExtension->DeviceCapabilities.DeviceState[i];
} @@ -1283,8 +1283,8 @@ }
if(deviceExtension->PowerDownLevel == PowerDeviceUnspecified || - deviceExtension->PowerDownLevel <= PowerDeviceD0) - { + deviceExtension->PowerDownLevel <= PowerDeviceD0) + { deviceExtension->PowerDownLevel = PowerDeviceD2;
} @@ -1317,19 +1317,19 @@ KeClearEvent(&deviceExtension->NoDpcWorkItemPendingEvent);
if(CanDeviceSuspend(deviceExtension)) - { + { FreeBT_DbgPrint(3, ("FBTUSB: DpcRoutine: Device is Idle\n")); item = IoAllocateWorkItem(deviceObject);
if (item) - { + { IoQueueWorkItem(item, IdleRequestWorkerRoutine, DelayedWorkQueue, item); ntStatus = STATUS_PENDING;
}
else - { + { FreeBT_DbgPrint(3, ("FBTUSB: DpcRoutine: Cannot alloc memory for work item\n")); ntStatus = STATUS_INSUFFICIENT_RESOURCES; KeSetEvent(&deviceExtension->NoDpcWorkItemPendingEvent, IO_NO_INCREMENT, FALSE); @@ -1339,7 +1339,7 @@ }
else - { + { FreeBT_DbgPrint(3, ("FBTUSB: DpcRoutine: Idle event not signaled\n")); KeSetEvent(&deviceExtension->NoDpcWorkItemPendingEvent, IO_NO_INCREMENT, FALSE);
@@ -1351,7 +1351,7 @@
VOID IdleRequestWorkerRoutine(IN PDEVICE_OBJECT DeviceObject, IN PVOID Context) { - PIRP irp; + //PIRP irp; NTSTATUS ntStatus; PDEVICE_EXTENSION deviceExtension; PIO_WORKITEM workItem; @@ -1362,11 +1362,11 @@ workItem = (PIO_WORKITEM) Context;
if(CanDeviceSuspend(deviceExtension)) - { + { FreeBT_DbgPrint(3, ("FBTUSB: IdleRequestWorkerRoutine: Device is idle\n")); ntStatus = SubmitIdleRequestIrp(deviceExtension); if(!NT_SUCCESS(ntStatus)) - { + { FreeBT_DbgPrint(1, ("FBTUSB: IdleRequestWorkerRoutine: SubmitIdleRequestIrp failed\n"));
} @@ -1374,7 +1374,7 @@ }
else - { + { FreeBT_DbgPrint(3, ("FBTUSB: IdleRequestWorkerRoutine: Device is not idle\n"));
} @@ -1427,10 +1427,10 @@ // 3a. if the device is active, send them down // 3b. else complete with STATUS_DELETE_PENDING while(1) - { + { KeAcquireSpinLock(&DeviceExtension->QueueLock, &oldIrql); if(IsListEmpty(&DeviceExtension->NewRequestsQueue)) - { + { KeReleaseSpinLock(&DeviceExtension->QueueLock, oldIrql); break;
@@ -1443,9 +1443,9 @@
// check if its already cancelled if (nextIrp->Cancel) - { + { if(cancelRoutine) - { + { // the cancel routine for this IRP hasnt been called yet // so queue the IRP in the cancelledIrp list and complete // after releasing the lock @@ -1454,8 +1454,8 @@ }
else - { - // the cancel routine has run + { + // the cancel routine has run // it must be waiting to hold the queue lock // so initialize the IRPs listEntry InitializeListHead(listEntry); @@ -1467,10 +1467,10 @@ }
else - { + { KeReleaseSpinLock(&DeviceExtension->QueueLock, oldIrql); if(FailRequests == DeviceExtension->QueueState) - { + { nextIrp->IoStatus.Information = 0; nextIrp->IoStatus.Status = STATUS_DELETE_PENDING; IoCompleteRequest(nextIrp, IO_NO_INCREMENT); @@ -1478,8 +1478,8 @@ }
else - { - PIO_STACK_LOCATION irpStack; + { + //PIO_STACK_LOCATION irpStack;
FreeBT_DbgPrint(3, ("FBTUSB: ProcessQueuedRequests::")); FreeBT_IoIncrement(DeviceExtension); @@ -1497,7 +1497,7 @@ }
while(!IsListEmpty(&cancelledIrpList)) - { + { PLIST_ENTRY cancelEntry = RemoveHeadList(&cancelledIrpList);
cancelledIrp = CONTAINING_RECORD(cancelEntry, IRP, Tail.Overlay.ListEntry); @@ -1547,14 +1547,14 @@ NULL);
if (NT_SUCCESS(ntStatus)) - { + { FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_GetRegistryDword: Success, Value = %X\n", *Value)); return STATUS_SUCCESS; }
else - { - FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_GetRegistryDword: Failed\n")); + { + FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_GetRegistryDword: Failed\n")); *Value = 0; return STATUS_UNSUCCESSFUL;
@@ -1573,7 +1573,7 @@ PIRP pendingIrp; PIO_STACK_LOCATION pendingIrpStack, irpStack; - NTSTATUS ntStatus; + //NTSTATUS ntStatus;
deviceExtension = (PDEVICE_EXTENSION) DeviceObject->DeviceExtension; irpStack = IoGetCurrentIrpStackLocation(Irp); @@ -1588,21 +1588,21 @@ for(thisEntry = listHead->Flink, nextEntry = thisEntry->Flink; thisEntry != listHead; thisEntry = nextEntry, nextEntry = thisEntry->Flink) - { + { pendingIrp = CONTAINING_RECORD(thisEntry, IRP, Tail.Overlay.ListEntry); pendingIrpStack = IoGetCurrentIrpStackLocation(pendingIrp); if (irpStack->FileObject == pendingIrpStack->FileObject) - { + { RemoveEntryList(thisEntry);
if (NULL == IoSetCancelRoutine(pendingIrp, NULL)) - { + { InitializeListHead(thisEntry);
}
else - { + { InsertTailList(&cleanupList, thisEntry);
} @@ -1614,7 +1614,7 @@ KeReleaseSpinLock(&deviceExtension->QueueLock, oldIrql);
while(!IsListEmpty(&cleanupList)) - { + { thisEntry = RemoveHeadList(&cleanupList); pendingIrp = CONTAINING_RECORD(thisEntry, IRP, Tail.Overlay.ListEntry);
@@ -1644,7 +1644,7 @@ if ((DeviceExtension->OpenHandleCount == 0) && (DeviceExtension->OutStandingIO == 1)) return TRUE;
- return FALSE; + return FALSE;
}
@@ -1654,8 +1654,8 @@ ULONG i; NTSTATUS ntStatus; PDEVICE_EXTENSION deviceExtension; - PFREEBT_PIPE_CONTEXT pipeContext; - PUSBD_PIPE_INFORMATION pipeInformation; + PFREEBT_PIPE_CONTEXT pipeContext; + //PUSBD_PIPE_INFORMATION pipeInformation; PUSBD_INTERFACE_INFORMATION interfaceInfo;
deviceExtension = (PDEVICE_EXTENSION) DeviceObject->DeviceExtension; @@ -1668,14 +1668,14 @@ return STATUS_SUCCESS;
for(i=0; i<interfaceInfo->NumberOfPipes; i++) - { + { if(pipeContext[i].PipeOpen) - { + { FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_AbortPipes: Aborting open pipe %d\n", i));
urb = (PURB) ExAllocatePool(NonPagedPool, sizeof(struct _URB_PIPE_REQUEST)); if (urb) - { + { urb->UrbHeader.Length = sizeof(struct _URB_PIPE_REQUEST); urb->UrbHeader.Function = URB_FUNCTION_ABORT_PIPE; urb->UrbPipeRequest.PipeHandle = interfaceInfo->Pipes[i].PipeHandle; @@ -1687,7 +1687,7 @@ }
else - { + { FreeBT_DbgPrint(1, ("FBTUSB: FreeBT_AbortPipes: Failed to alloc memory for urb\n")); ntStatus = STATUS_INSUFFICIENT_RESOURCES; return ntStatus; @@ -1731,7 +1731,7 @@ if (result == 2) KeClearEvent(&DeviceExtension->StopEvent);
- KeReleaseSpinLock(&DeviceExtension->IOCountLock, oldIrql); + KeReleaseSpinLock(&DeviceExtension->IOCountLock, oldIrql);
FreeBT_DbgPrint(3, ("FreeBT_IoIncrement::%d\n", result));
@@ -1752,7 +1752,7 @@ KeSetEvent(&DeviceExtension->StopEvent, IO_NO_INCREMENT, FALSE);
if(result == 0) - { + { ASSERT(Removed == DeviceExtension->DeviceState); KeSetEvent(&DeviceExtension->RemoveEvent, IO_NO_INCREMENT, FALSE);
@@ -1790,35 +1790,35 @@ NTSTATUS ReleaseMemory(IN PDEVICE_OBJECT DeviceObject) { // Disconnect from the interrupt and unmap any I/O ports - PDEVICE_EXTENSION deviceExtension; - UNICODE_STRING uniDeviceName; - NTSTATUS ntStatus; + PDEVICE_EXTENSION deviceExtension; + UNICODE_STRING uniDeviceName; + NTSTATUS ntStatus;
deviceExtension = (PDEVICE_EXTENSION) DeviceObject->DeviceExtension; if (deviceExtension->UsbConfigurationDescriptor) - { - FreeBT_DbgPrint(3, ("FBTUSB: ReleaseMemory: Freeing UsbConfigurationDescriptor\n")); + { + FreeBT_DbgPrint(3, ("FBTUSB: ReleaseMemory: Freeing UsbConfigurationDescriptor\n")); ExFreePool(deviceExtension->UsbConfigurationDescriptor); deviceExtension->UsbConfigurationDescriptor = NULL;
}
if(deviceExtension->UsbInterface) - { - FreeBT_DbgPrint(3, ("FBTUSB: ReleaseMemory: Freeing UsbInterface\n")); + { + FreeBT_DbgPrint(3, ("FBTUSB: ReleaseMemory: Freeing UsbInterface\n")); ExFreePool(deviceExtension->UsbInterface); deviceExtension->UsbInterface = NULL;
}
if(deviceExtension->PipeContext) - { - RtlInitUnicodeString(&uniDeviceName, deviceExtension->wszDosDeviceName); - ntStatus = IoDeleteSymbolicLink(&uniDeviceName); - if (!NT_SUCCESS(ntStatus)) - FreeBT_DbgPrint(3, ("FBTUSB: Failed to delete symbolic link %ws\n", deviceExtension->wszDosDeviceName)); - - FreeBT_DbgPrint(3, ("FBTUSB: ReleaseMemory: Freeing PipeContext %p\n", deviceExtension->PipeContext)); + { + RtlInitUnicodeString(&uniDeviceName, deviceExtension->wszDosDeviceName); + ntStatus = IoDeleteSymbolicLink(&uniDeviceName); + if (!NT_SUCCESS(ntStatus)) + FreeBT_DbgPrint(3, ("FBTUSB: Failed to delete symbolic link %ws\n", deviceExtension->wszDosDeviceName)); + + FreeBT_DbgPrint(3, ("FBTUSB: ReleaseMemory: Freeing PipeContext %p\n", deviceExtension->PipeContext)); ExFreePool(deviceExtension->PipeContext); deviceExtension->PipeContext = NULL;
@@ -1831,7 +1831,7 @@ PCHAR PnPMinorFunctionString (UCHAR MinorFunction) { switch (MinorFunction) - { + { case IRP_MN_START_DEVICE: return "IRP_MN_START_DEVICE\n";
Modified: trunk/reactos/drivers/bluetooth/fbtusb/fbtpwr.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/bluetooth/fbtusb/fb... ============================================================================== --- trunk/reactos/drivers/bluetooth/fbtusb/fbtpwr.c [iso-8859-1] (original) +++ trunk/reactos/drivers/bluetooth/fbtusb/fbtpwr.c [iso-8859-1] Tue May 1 16:53:02 2012 @@ -22,9 +22,9 @@ // Handle power events NTSTATUS FreeBT_DispatchPower(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp) { - NTSTATUS ntStatus; + NTSTATUS ntStatus = STATUS_SUCCESS; PIO_STACK_LOCATION irpStack; - PUNICODE_STRING tagString; + //PUNICODE_STRING tagString; PDEVICE_EXTENSION deviceExtension;
irpStack = IoGetCurrentIrpStackLocation(Irp); @@ -38,7 +38,7 @@ // it should return STATUS_PENDING and queue all incoming // IRPs until the IRP completes. if (Removed == deviceExtension->DeviceState) - { + {
// Even if a driver fails the IRP, it must nevertheless call // PoStartNextPowerIrp to inform the Power Manager that it @@ -53,7 +53,7 @@ }
if (NotStarted == deviceExtension->DeviceState) - { + { // if the device is not started yet, pass it down PoStartNextPowerIrp(Irp); IoSkipCurrentIrpStackLocation(Irp); @@ -66,7 +66,7 @@ FreeBT_IoIncrement(deviceExtension);
switch(irpStack->MinorFunction) - { + { case IRP_MN_SET_POWER: // The Power Manager sends this IRP for one of the // following reasons: @@ -82,7 +82,7 @@ IoMarkIrpPending(Irp);
switch(irpStack->Parameters.Power.Type) - { + { case SystemPowerState: HandleSystemSetPower(DeviceObject, Irp); ntStatus = STATUS_PENDING; @@ -108,7 +108,7 @@ IoMarkIrpPending(Irp);
switch(irpStack->Parameters.Power.Type) - { + { case SystemPowerState: HandleSystemQueryPower(DeviceObject, Irp); ntStatus = STATUS_PENDING; @@ -144,7 +144,7 @@ PoStartNextPowerIrp(Irp); ntStatus = PoCallDriver(deviceExtension->TopOfStackDeviceObject, Irp); if(!NT_SUCCESS(ntStatus)) - { + { FreeBT_DbgPrint(1, ("FBTUSB: Lower drivers failed the wait-wake Irp\n"));
} @@ -168,7 +168,7 @@ IoSkipCurrentIrpStackLocation(Irp); ntStatus = PoCallDriver(deviceExtension->TopOfStackDeviceObject, Irp); if(!NT_SUCCESS(ntStatus)) - { + { FreeBT_DbgPrint(1, ("FBTUSB: FreeBT_DispatchPower: Lower drivers failed this Irp\n"));
} @@ -205,7 +205,7 @@
// Fail a query for a power state incompatible with waking up the system if ((deviceExtension->WaitWakeEnable) && (systemState > deviceExtension->DeviceCapabilities.SystemWake)) - { + { FreeBT_DbgPrint(1, ("FBTUSB: HandleSystemQueryPower: Query for an incompatible system power state\n"));
PoStartNextPowerIrp(Irp); @@ -222,7 +222,7 @@
// if querying for a lower S-state, issue a wait-wake if((systemState > deviceExtension->SysPower) && (deviceExtension->WaitWakeEnable)) - { + { IssueWaitWake(deviceExtension);
} @@ -296,7 +296,7 @@ deviceExtension->DevPower - 1));
if (deviceExtension->WaitWakeEnable && deviceState > deviceExtension->DeviceCapabilities.DeviceWake) - { + { PoStartNextPowerIrp(Irp); Irp->IoStatus.Status = ntStatus = STATUS_INVALID_DEVICE_STATE; Irp->IoStatus.Information = 0; @@ -310,16 +310,16 @@ }
if (deviceState < deviceExtension->DevPower) - { + { ntStatus = STATUS_SUCCESS;
}
else - { + { ntStatus = HoldIoRequests(DeviceObject, Irp); if(STATUS_PENDING == ntStatus) - { + { return ntStatus;
} @@ -332,13 +332,13 @@ Irp->IoStatus.Status = ntStatus; Irp->IoStatus.Information = 0; if(!NT_SUCCESS(ntStatus)) - { + { IoCompleteRequest(Irp, IO_NO_INCREMENT);
}
else - { + { IoSkipCurrentIrpStackLocation(Irp); ntStatus=PoCallDriver(deviceExtension->TopOfStackDeviceObject, Irp);
@@ -357,7 +357,7 @@ NTSTATUS SysPoCompletionRoutine(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PDEVICE_EXTENSION DeviceExtension) { NTSTATUS ntStatus; - PIO_STACK_LOCATION irpStack; + PIO_STACK_LOCATION irpStack;
ntStatus = Irp->IoStatus.Status; irpStack = IoGetCurrentIrpStackLocation(Irp); @@ -366,7 +366,7 @@
// lower drivers failed this Irp if(!NT_SUCCESS(ntStatus)) - { + { PoStartNextPowerIrp(Irp); FreeBT_DbgPrint(3, ("FBTUSB: SysPoCompletionRoutine::")); FreeBT_IoDecrement(DeviceExtension); @@ -377,7 +377,7 @@
// ..otherwise update the cached system power state (IRP_MN_SET_POWER) if(irpStack->MinorFunction == IRP_MN_SET_POWER) - { + { DeviceExtension->SysPower = irpStack->Parameters.Power.State.SystemState;
} @@ -415,14 +415,14 @@
powerContext = (PPOWER_COMPLETION_CONTEXT) ExAllocatePool(NonPagedPool, sizeof(POWER_COMPLETION_CONTEXT)); if (!powerContext) - { + { FreeBT_DbgPrint(1, ("FBTUSB: SendDeviceIrp: Failed to alloc memory for powerContext\n")); ntStatus = STATUS_INSUFFICIENT_RESOURCES;
}
else - { + { powerContext->DeviceObject = DeviceObject; powerContext->SIrp = SIrp;
@@ -438,9 +438,9 @@ }
if (!NT_SUCCESS(ntStatus)) - { + { if (powerContext) - { + { ExFreePool(powerContext);
} @@ -516,7 +516,7 @@ deviceExtension->DevPower - 1));
if (newDevState < oldDevState) - { + {
FreeBT_DbgPrint(3, ("FBTUSB: HandleDeviceSetPower: Adding power to the device\n"));
@@ -531,23 +531,23 @@
ntStatus = PoCallDriver(deviceExtension->TopOfStackDeviceObject, Irp);
- } + }
else - { + { // newDevState >= oldDevState
// hold I/O if transition from D0 -> DX (X = 1, 2, 3) // if transition from D1 or D2 to deeper sleep states, // I/O queue is already on hold. if(PowerDeviceD0 == oldDevState && newDevState > oldDevState) - { + { // D0 -> DX transition FreeBT_DbgPrint(3, ("FBTUSB: HandleDeviceSetPower: Removing power from the device\n"));
ntStatus = HoldIoRequests(DeviceObject, Irp); if (!NT_SUCCESS(ntStatus)) - { + { PoStartNextPowerIrp(Irp); Irp->IoStatus.Status = ntStatus; Irp->IoStatus.Information = 0; @@ -561,7 +561,7 @@ }
else - { + { goto HandleDeviceSetPower_Exit;
} @@ -569,7 +569,7 @@ }
else if (PowerDeviceD0 == oldDevState && PowerDeviceD0 == newDevState) - { + { // D0 -> D0 // unblock the queue which may have been blocked processing // query irp @@ -594,7 +594,7 @@
ntStatus = PoCallDriver(deviceExtension->TopOfStackDeviceObject, Irp); if(!NT_SUCCESS(ntStatus)) - { + { FreeBT_DbgPrint(1, ("FBTUSB: HandleDeviceSetPower: Lower drivers failed a power Irp\n"));
} @@ -617,13 +617,13 @@
ntStatus = Irp->IoStatus.Status; if(Irp->PendingReturned) - { + { IoMarkIrpPending(Irp);
}
if(!NT_SUCCESS(ntStatus)) - { + { PoStartNextPowerIrp(Irp);
FreeBT_DbgPrint(3, ("FBTUSB: FinishDevPoUpIrp::")); @@ -665,7 +665,7 @@ // save/restore. PoSetPowerState(DeviceObject, DevicePowerState, newState); if(PowerDeviceD0 == newDevState) - { + { KeAcquireSpinLock(&DeviceExtension->DevStateLock, &oldIrql); DeviceExtension->QueueState = AllowRequests; KeReleaseSpinLock(&DeviceExtension->DevStateLock, oldIrql); @@ -701,7 +701,7 @@ newState = irpStack->Parameters.Power.State;
if (NT_SUCCESS(ntStatus) && irpStack->MinorFunction == IRP_MN_SET_POWER) - { + { FreeBT_DbgPrint(3, ("FBTUSB: updating cache..\n")); DeviceExtension->DevPower = newState.DeviceState; PoSetPowerState(DeviceObject, DevicePowerState, newState); @@ -734,7 +734,7 @@
context = (PWORKER_THREAD_CONTEXT) ExAllocatePool(NonPagedPool, sizeof(WORKER_THREAD_CONTEXT)); if(context) - { + { item = IoAllocateWorkItem(DeviceObject);
context->Irp = Irp; @@ -742,7 +742,7 @@ context->WorkItem = item;
if (item) - { + { IoMarkIrpPending(Irp); IoQueueWorkItem(item, HoldIoRequestsWorkerRoutine, DelayedWorkQueue, context); ntStatus = STATUS_PENDING; @@ -750,7 +750,7 @@ }
else - { + { FreeBT_DbgPrint(3, ("FBTUSB: HoldIoRequests: Failed to allocate memory for workitem\n")); ExFreePool(context); ntStatus = STATUS_INSUFFICIENT_RESOURCES; @@ -760,7 +760,7 @@ }
else - { + { FreeBT_DbgPrint(1, ("FBTUSB: HoldIoRequests: Failed to alloc memory for worker thread context\n")); ntStatus = STATUS_INSUFFICIENT_RESOURCES;
@@ -806,16 +806,16 @@ // now send the Irp down IoCopyCurrentIrpStackLocationToNext(irp); IoSetCompletionRoutine( - irp, - (PIO_COMPLETION_ROUTINE) FinishDevPoDnIrp, - deviceExtension, - TRUE, - TRUE, - TRUE); + irp, + (PIO_COMPLETION_ROUTINE) FinishDevPoDnIrp, + deviceExtension, + TRUE, + TRUE, + TRUE);
ntStatus = PoCallDriver(deviceExtension->TopOfStackDeviceObject, irp); if(!NT_SUCCESS(ntStatus)) - { + { FreeBT_DbgPrint(1, ("FBTUSB: HoldIoRequestsWorkerRoutine: Lower driver fail a power Irp\n"));
} @@ -892,7 +892,7 @@ FreeBT_DbgPrint(3, ("FBTUSB: IssueWaitWake: Entered\n"));
if(InterlockedExchange(&DeviceExtension->FlagWWOutstanding, 1)) - { + { return STATUS_DEVICE_BUSY;
} @@ -909,7 +909,7 @@ &DeviceExtension->WaitWakeIrp);
if(!NT_SUCCESS(ntStatus)) - { + { InterlockedExchange(&DeviceExtension->FlagWWOutstanding, 0);
} @@ -928,10 +928,10 @@
Irp = (PIRP) InterlockedExchangePointer(&DeviceExtension->WaitWakeIrp, NULL); if(Irp) - { + { IoCancelIrp(Irp); if(InterlockedExchange(&DeviceExtension->FlagWWCancel, 1)) - { + { PoStartNextPowerIrp(Irp); Irp->IoStatus.Status = STATUS_CANCELLED; Irp->IoStatus.Information = 0; @@ -949,7 +949,7 @@ { FreeBT_DbgPrint(3, ("FBTUSB: WaitWakeCompletionRoutine: Entered\n")); if(Irp->PendingReturned) - { + { IoMarkIrpPending(Irp);
} @@ -958,7 +958,7 @@ // as part of the completion process. If it's already NULL, // avoid race with the CancelWaitWake routine. if(InterlockedExchangePointer(&DeviceExtension->WaitWakeIrp, NULL)) - { + { PoStartNextPowerIrp(Irp);
return STATUS_SUCCESS; @@ -969,7 +969,7 @@ // If FlagWWCancel != 0, complete the Irp. // If FlagWWCancel == 0, CancelWaitWake completes it. if(InterlockedExchange(&DeviceExtension->FlagWWCancel, 1)) - { + { PoStartNextPowerIrp(Irp);
return STATUS_CANCELLED; @@ -1000,14 +1000,14 @@ InterlockedExchange(&deviceExtension->FlagWWOutstanding, 0);
if(!NT_SUCCESS(IoStatus->Status)) - { + { return;
}
// wake up the device if(deviceExtension->DevPower == PowerDeviceD0) - { + { FreeBT_DbgPrint(3, ("FBTUSB: WaitWakeCallback: Device already powered up...\n"));
return; @@ -1026,7 +1026,7 @@ NULL);
if(deviceExtension->WaitWakeEnable) - { + { IssueWaitWake(deviceExtension);
} @@ -1041,7 +1041,7 @@ PCHAR PowerMinorFunctionString (IN UCHAR MinorFunction) { switch (MinorFunction) - { + { case IRP_MN_SET_POWER: return "IRP_MN_SET_POWER\n";
Modified: trunk/reactos/drivers/bluetooth/fbtusb/fbtrwr.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/bluetooth/fbtusb/fb... ============================================================================== --- trunk/reactos/drivers/bluetooth/fbtusb/fbtrwr.c [iso-8859-1] (original) +++ trunk/reactos/drivers/bluetooth/fbtusb/fbtrwr.c [iso-8859-1] Tue May 1 16:53:02 2012 @@ -22,18 +22,18 @@ // Read/Write handler NTSTATUS FreeBT_DispatchRead(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp) { - PMDL mdl; - PURB urb; - ULONG totalLength; - ULONG stageLength; - NTSTATUS ntStatus; - ULONG_PTR virtualAddress; - PFILE_OBJECT fileObject; - PDEVICE_EXTENSION deviceExtension; - PIO_STACK_LOCATION irpStack; - PIO_STACK_LOCATION nextStack; - PFREEBT_RW_CONTEXT rwContext; - ULONG maxLength=0; + PMDL mdl; + PURB urb; + ULONG totalLength; + ULONG stageLength; + NTSTATUS ntStatus; + ULONG_PTR virtualAddress; + PFILE_OBJECT fileObject; + PDEVICE_EXTENSION deviceExtension; + PIO_STACK_LOCATION irpStack; + PIO_STACK_LOCATION nextStack; + PFREEBT_RW_CONTEXT rwContext; + //ULONG maxLength=0;
urb = NULL; mdl = NULL; @@ -56,7 +56,7 @@ // Make sure that any selective suspend request has been completed. if (deviceExtension->SSEnable) { - FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_DispatchRead: Waiting on the IdleReqPendEvent\n")); + FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_DispatchRead: Waiting on the IdleReqPendEvent\n")); KeWaitForSingleObject(&deviceExtension->NoIdleReqPendEvent, Executive, KernelMode, @@ -80,7 +80,7 @@
}
- FreeBT_DbgPrint(1, ("FBTUSB: FreeBT_DispatchRead: Transfer data length = %d\n", totalLength)); + FreeBT_DbgPrint(1, ("FBTUSB: FreeBT_DispatchRead: Transfer data length = %d\n", totalLength)); if (totalLength == 0) { ntStatus = STATUS_SUCCESS; @@ -189,7 +189,7 @@ FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_DispatchRead::")); FreeBT_IoIncrement(deviceExtension);
- FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_DispatchRead: URB sent to lower driver, IRP is pending\n")); + FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_DispatchRead: URB sent to lower driver, IRP is pending\n"));
// we return STATUS_PENDING and not the status returned by the lower layer. return STATUS_PENDING; @@ -206,13 +206,13 @@
NTSTATUS FreeBT_ReadCompletion(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PVOID Context) { - ULONG stageLength; - NTSTATUS ntStatus; - PIO_STACK_LOCATION nextStack; - PFREEBT_RW_CONTEXT rwContext; - PDEVICE_EXTENSION deviceExtension; - - deviceExtension = (PDEVICE_EXTENSION) DeviceObject->DeviceExtension; + //ULONG stageLength; + NTSTATUS ntStatus; + //PIO_STACK_LOCATION nextStack; + PFREEBT_RW_CONTEXT rwContext; + PDEVICE_EXTENSION deviceExtension; + + deviceExtension = (PDEVICE_EXTENSION) DeviceObject->DeviceExtension; rwContext = (PFREEBT_RW_CONTEXT) Context; ntStatus = Irp->IoStatus.Status;
@@ -221,13 +221,13 @@
if (NT_SUCCESS(ntStatus)) { - Irp->IoStatus.Information = rwContext->Urb->UrbBulkOrInterruptTransfer.TransferBufferLength; + Irp->IoStatus.Information = rwContext->Urb->UrbBulkOrInterruptTransfer.TransferBufferLength;
}
else { - Irp->IoStatus.Information = 0; + Irp->IoStatus.Information = 0; FreeBT_DbgPrint(1, ("FBTUSB: FreeBT_ReadCompletion: - failed with status = %X\n", ntStatus));
} @@ -252,18 +252,18 @@ // Read/Write handler NTSTATUS FreeBT_DispatchWrite(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp) { - PMDL mdl; - PURB urb; - ULONG totalLength; - ULONG stageLength; - NTSTATUS ntStatus; - ULONG_PTR virtualAddress; - PFILE_OBJECT fileObject; - PDEVICE_EXTENSION deviceExtension; - PIO_STACK_LOCATION irpStack; - PIO_STACK_LOCATION nextStack; - PFREEBT_RW_CONTEXT rwContext; - ULONG maxLength=0; + PMDL mdl; + PURB urb; + ULONG totalLength; + ULONG stageLength; + NTSTATUS ntStatus; + ULONG_PTR virtualAddress; + PFILE_OBJECT fileObject; + PDEVICE_EXTENSION deviceExtension; + PIO_STACK_LOCATION irpStack; + PIO_STACK_LOCATION nextStack; + PFREEBT_RW_CONTEXT rwContext; + //ULONG maxLength=0;
urb = NULL; mdl = NULL; @@ -286,7 +286,7 @@ // Make sure that any selective suspend request has been completed. if (deviceExtension->SSEnable) { - FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_WriteDispatch: Waiting on the IdleReqPendEvent\n")); + FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_WriteDispatch: Waiting on the IdleReqPendEvent\n")); KeWaitForSingleObject(&deviceExtension->NoIdleReqPendEvent, Executive, KernelMode, @@ -310,10 +310,10 @@
}
- FreeBT_DbgPrint(1, ("FBTUSB: FreeBT_WriteDispatch: Transfer data length = %d\n", totalLength)); + FreeBT_DbgPrint(1, ("FBTUSB: FreeBT_WriteDispatch: Transfer data length = %d\n", totalLength)); if (totalLength>FBT_HCI_DATA_MAX_SIZE) { - FreeBT_DbgPrint(1, ("FBTUSB: FreeBT_WriteDispatch: Buffer exceeds maximum packet length (%d), failing IRP\n", FBT_HCI_DATA_MAX_SIZE)); + FreeBT_DbgPrint(1, ("FBTUSB: FreeBT_WriteDispatch: Buffer exceeds maximum packet length (%d), failing IRP\n", FBT_HCI_DATA_MAX_SIZE)); ntStatus = STATUS_INVALID_BUFFER_SIZE; ExFreePool(rwContext); goto FreeBT_DispatchWrite_Exit; @@ -322,7 +322,7 @@
if (totalLength<FBT_HCI_DATA_MIN_SIZE) { - FreeBT_DbgPrint(1, ("FBTUSB: FreeBT_WriteDispatch: Zero length buffer, completing IRP\n")); + FreeBT_DbgPrint(1, ("FBTUSB: FreeBT_WriteDispatch: Zero length buffer, completing IRP\n")); ntStatus = STATUS_BUFFER_TOO_SMALL; ExFreePool(rwContext); goto FreeBT_DispatchWrite_Exit; @@ -429,7 +429,7 @@ FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_DispatchWrite::")); FreeBT_IoIncrement(deviceExtension);
- FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_DispatchWrite: URB sent to lower driver, IRP is pending\n")); + FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_DispatchWrite: URB sent to lower driver, IRP is pending\n"));
// we return STATUS_PENDING and not the status returned by the lower layer. return STATUS_PENDING; @@ -446,13 +446,13 @@
NTSTATUS FreeBT_WriteCompletion(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PVOID Context) { - ULONG stageLength; - NTSTATUS ntStatus; - PIO_STACK_LOCATION nextStack; - PFREEBT_RW_CONTEXT rwContext; - PDEVICE_EXTENSION deviceExtension; - - deviceExtension = (PDEVICE_EXTENSION) DeviceObject->DeviceExtension; + ULONG stageLength; + NTSTATUS ntStatus; + PIO_STACK_LOCATION nextStack; + PFREEBT_RW_CONTEXT rwContext; + PDEVICE_EXTENSION deviceExtension; + + deviceExtension = (PDEVICE_EXTENSION) DeviceObject->DeviceExtension; rwContext = (PFREEBT_RW_CONTEXT) Context; ntStatus = Irp->IoStatus.Status;
@@ -508,7 +508,7 @@ else { // No more data to transfer - FreeBT_DbgPrint(1, ("FBTUSB: FreeNT_WriteCompletion: Write completed, %d bytes written\n", Irp->IoStatus.Information)); + FreeBT_DbgPrint(1, ("FBTUSB: FreeNT_WriteCompletion: Write completed, %d bytes written\n", Irp->IoStatus.Information)); Irp->IoStatus.Information = rwContext->Numxfer;
}
Modified: trunk/reactos/drivers/bluetooth/fbtusb/fbtusb.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/bluetooth/fbtusb/fb... ============================================================================== --- trunk/reactos/drivers/bluetooth/fbtusb/fbtusb.c [iso-8859-1] (original) +++ trunk/reactos/drivers/bluetooth/fbtusb/fbtusb.c [iso-8859-1] Tue May 1 16:53:02 2012 @@ -49,7 +49,7 @@ registryPath->Buffer = (PWSTR) ExAllocatePool(PagedPool, registryPath->MaximumLength);
if (!registryPath->Buffer) - { + { FreeBT_DbgPrint(1, ("FBTUSB: Failed to allocate memory for registryPath\n")); ntStatus = STATUS_INSUFFICIENT_RESOURCES; goto DriverEntry_Exit; @@ -90,7 +90,7 @@
registryPath = &Globals.FreeBT_RegistryPath; if(registryPath->Buffer) - { + { ExFreePool(registryPath->Buffer); registryPath->Buffer = NULL;
@@ -107,68 +107,68 @@ // to initialise NTSTATUS NTAPI FreeBT_AddDevice(IN PDRIVER_OBJECT DriverObject, IN PDEVICE_OBJECT PhysicalDeviceObject) { - NTSTATUS ntStatus; - PDEVICE_OBJECT deviceObject; - PDEVICE_EXTENSION deviceExtension; - POWER_STATE state; - KIRQL oldIrql; - UNICODE_STRING uniDeviceName; - WCHAR wszDeviceName[255]={0}; - UNICODE_STRING uniDosDeviceName; - LONG instanceNumber=0; + NTSTATUS ntStatus; + PDEVICE_OBJECT deviceObject; + PDEVICE_EXTENSION deviceExtension; + POWER_STATE state; + //KIRQL oldIrql; + UNICODE_STRING uniDeviceName; + WCHAR wszDeviceName[255]={0}; + UNICODE_STRING uniDosDeviceName; + LONG instanceNumber=0;
FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_AddDevice: Entered\n"));
deviceObject = NULL;
- swprintf(wszDeviceName, L"\Device\FbtUsb%02d", instanceNumber); - RtlInitUnicodeString(&uniDeviceName, wszDeviceName); - ntStatus=STATUS_OBJECT_NAME_COLLISION; - while (instanceNumber<99 && !NT_SUCCESS(ntStatus)) - { - swprintf(wszDeviceName, L"\Device\FbtUsb%02d", instanceNumber); - uniDeviceName.Length = wcslen(wszDeviceName) * sizeof(WCHAR); - FreeBT_DbgPrint(1, ("FBTUSB: Attempting to create device %ws\n", wszDeviceName)); - ntStatus = IoCreateDevice( - DriverObject, // our driver object - sizeof(DEVICE_EXTENSION), // extension size for us - &uniDeviceName, // name for this device - FILE_DEVICE_UNKNOWN, - 0, // device characteristics - FALSE, // Not exclusive - &deviceObject); // Our device object - - if (!NT_SUCCESS(ntStatus)) - instanceNumber++; - - } + swprintf(wszDeviceName, L"\Device\FbtUsb%02d", instanceNumber); + RtlInitUnicodeString(&uniDeviceName, wszDeviceName); + ntStatus=STATUS_OBJECT_NAME_COLLISION; + while (instanceNumber<99 && !NT_SUCCESS(ntStatus)) + { + swprintf(wszDeviceName, L"\Device\FbtUsb%02d", instanceNumber); + uniDeviceName.Length = wcslen(wszDeviceName) * sizeof(WCHAR); + FreeBT_DbgPrint(1, ("FBTUSB: Attempting to create device %ws\n", wszDeviceName)); + ntStatus = IoCreateDevice( + DriverObject, // our driver object + sizeof(DEVICE_EXTENSION), // extension size for us + &uniDeviceName, // name for this device + FILE_DEVICE_UNKNOWN, + 0, // device characteristics + FALSE, // Not exclusive + &deviceObject); // Our device object + + if (!NT_SUCCESS(ntStatus)) + instanceNumber++; + + }
if (!NT_SUCCESS(ntStatus)) - { + { FreeBT_DbgPrint(1, ("FBTUSB: Failed to create device object\n")); return ntStatus;
}
- FreeBT_DbgPrint(1, ("FBTUSB: Created device %ws\n", wszDeviceName)); + FreeBT_DbgPrint(1, ("FBTUSB: Created device %ws\n", wszDeviceName));
deviceExtension = (PDEVICE_EXTENSION) deviceObject->DeviceExtension; deviceExtension->FunctionalDeviceObject = deviceObject; deviceExtension->PhysicalDeviceObject = PhysicalDeviceObject; deviceObject->Flags |= DO_DIRECT_IO;
- swprintf(deviceExtension->wszDosDeviceName, L"\DosDevices\FbtUsb%02d", instanceNumber); - RtlInitUnicodeString(&uniDosDeviceName, deviceExtension->wszDosDeviceName); - ntStatus=IoCreateSymbolicLink(&uniDosDeviceName, &uniDeviceName); - if (!NT_SUCCESS(ntStatus)) - { - FreeBT_DbgPrint(1, ("FBTUSB: Failed to create symbolic link %ws to %ws, status=0x%08x\n", deviceExtension->wszDosDeviceName, wszDeviceName, ntStatus)); - IoDeleteDevice(deviceObject); - return ntStatus; - - } - - FreeBT_DbgPrint(1, ("FBTUSB: Created symbolic link %ws\n", deviceExtension->wszDosDeviceName)); + swprintf(deviceExtension->wszDosDeviceName, L"\DosDevices\FbtUsb%02d", instanceNumber); + RtlInitUnicodeString(&uniDosDeviceName, deviceExtension->wszDosDeviceName); + ntStatus=IoCreateSymbolicLink(&uniDosDeviceName, &uniDeviceName); + if (!NT_SUCCESS(ntStatus)) + { + FreeBT_DbgPrint(1, ("FBTUSB: Failed to create symbolic link %ws to %ws, status=0x%08x\n", deviceExtension->wszDosDeviceName, wszDeviceName, ntStatus)); + IoDeleteDevice(deviceObject); + return ntStatus; + + } + + FreeBT_DbgPrint(1, ("FBTUSB: Created symbolic link %ws\n", deviceExtension->wszDosDeviceName));
KeInitializeSpinLock(&deviceExtension->DevStateLock);
@@ -205,10 +205,10 @@ // Delegating to WMILIB ntStatus = FreeBT_WmiRegistration(deviceExtension); if (!NT_SUCCESS(ntStatus)) - { + { FreeBT_DbgPrint(1, ("FBTUSB: FreeBT_WmiRegistration failed with %X\n", ntStatus)); IoDeleteDevice(deviceObject); - IoDeleteSymbolicLink(&uniDosDeviceName); + IoDeleteSymbolicLink(&uniDosDeviceName); return ntStatus;
} @@ -216,7 +216,7 @@
// Set the flags as underlying PDO if (PhysicalDeviceObject->Flags & DO_POWER_PAGABLE) - { + { deviceObject->Flags |= DO_POWER_PAGABLE;
} @@ -237,12 +237,12 @@ // attachment chain. This is where all the IRPs should be routed. deviceExtension->TopOfStackDeviceObject = IoAttachDeviceToDeviceStack(deviceObject, PhysicalDeviceObject); if (NULL == deviceExtension->TopOfStackDeviceObject) - { + { #ifdef ENABLE_WMI FreeBT_WmiDeRegistration(deviceExtension); #endif IoDeleteDevice(deviceObject); - IoDeleteSymbolicLink(&uniDosDeviceName); + IoDeleteSymbolicLink(&uniDosDeviceName); return STATUS_NO_SUCH_DEVICE;
} @@ -253,37 +253,37 @@ NULL, &deviceExtension->InterfaceName); if (!NT_SUCCESS(ntStatus)) - { + { #ifdef ENABLE_WMI FreeBT_WmiDeRegistration(deviceExtension); #endif IoDetachDevice(deviceExtension->TopOfStackDeviceObject); IoDeleteDevice(deviceObject); - IoDeleteSymbolicLink(&uniDosDeviceName); + IoDeleteSymbolicLink(&uniDosDeviceName); return ntStatus;
}
if (IoIsWdmVersionAvailable(1, 0x20)) - { + { deviceExtension->WdmVersion = WinXpOrBetter;
}
else if (IoIsWdmVersionAvailable(1, 0x10)) - { + { deviceExtension->WdmVersion = Win2kOrBetter;
}
else if (IoIsWdmVersionAvailable(1, 0x5)) - { + { deviceExtension->WdmVersion = WinMeOrBetter;
}
else if (IoIsWdmVersionAvailable(1, 0x0)) - { + { deviceExtension->WdmVersion = Win98OrBetter;
} @@ -292,14 +292,14 @@ deviceExtension->SSEnable = 0;
// WinXP only: check the registry flag indicating whether - // the device should selectively suspend when idle + // the device should selectively suspend when idle if (WinXpOrBetter == deviceExtension->WdmVersion) - { + { FreeBT_GetRegistryDword(FREEBT_REGISTRY_PARAMETERS_PATH, L"BulkUsbEnable", (PULONG)(&deviceExtension->SSRegistryEnable)); if (deviceExtension->SSRegistryEnable) - { + { // initialize DPC KeInitializeDpc(&deviceExtension->DeferredProcCall, DpcRoutine, deviceObject);