#include "fbtusr.h"
// Dispatch routine for CreateHandle
-NTSTATUS FreeBT_DispatchCreate(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
+NTSTATUS NTAPI 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();
}
- 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;
}
// Dispatch routine for CloseHandle
-NTSTATUS FreeBT_DispatchClose(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
+NTSTATUS NTAPI FreeBT_DispatchClose(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
{
NTSTATUS ntStatus;
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"));
}
// Called when a HCI Send on the control pipe completes
-NTSTATUS FreeBT_HCISendCompletion(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PVOID Context)
+NTSTATUS NTAPI 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;
// Called the DeviceIOControl handler to send an HCI command received from the user
// 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)
+NTSTATUS NTAPI 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"));
+ FreeBT_DbgPrint(1, ("FBTUSB: FreeBT_SendHCICommand: Finished sleeping\n"));
- }*/
+ }*/
- // Create the URB
+ // 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;
+ 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);
+ 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);
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);
+ Irp->IoStatus.Status = ntStatus;
+ Irp->IoStatus.Information = 0;
+ IoCompleteRequest(Irp, IO_NO_INCREMENT);
- return ntStatus;
+ return ntStatus;
}
}
// Called when a HCI Get on the event pipe completes
-NTSTATUS FreeBT_HCIEventCompletion(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PVOID Context)
+NTSTATUS NTAPI 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;
}
// 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)
+NTSTATUS NTAPI 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"));
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);
{
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.
}
// DeviceIOControl dispatch
-NTSTATUS FreeBT_DispatchDevCtrl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
+NTSTATUS NTAPI FreeBT_DispatchDevCtrl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
{
ULONG code;
PVOID ioBuffer;
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,
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;
+ 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;
+ 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;
+ 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;
+ 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;
+ 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);
}
// Submit URB_FUNCTION_RESET_PIPE
-NTSTATUS FreeBT_ResetPipe(IN PDEVICE_OBJECT DeviceObject, IN USBD_PIPE_HANDLE PipeHandle)
+NTSTATUS NTAPI FreeBT_ResetPipe(IN PDEVICE_OBJECT DeviceObject, IN USBD_PIPE_HANDLE PipeHandle)
{
PURB urb;
NTSTATUS ntStatus;
}
// Call FreeBT_ResetParentPort to reset the device
-NTSTATUS FreeBT_ResetDevice(IN PDEVICE_OBJECT DeviceObject)
+NTSTATUS NTAPI FreeBT_ResetDevice(IN PDEVICE_OBJECT DeviceObject)
{
NTSTATUS ntStatus;
ULONG portStatus;
}
// Read port status from the lower driver (USB class driver)
-NTSTATUS FreeBT_GetPortStatus(IN PDEVICE_OBJECT DeviceObject, IN OUT PULONG PortStatus)
+NTSTATUS NTAPI FreeBT_GetPortStatus(IN PDEVICE_OBJECT DeviceObject, IN OUT PULONG PortStatus)
{
NTSTATUS ntStatus;
KEVENT event;
}
// Sends an IOCTL_INTERNAL_USB_RESET_PORT via the lower driver
-NTSTATUS FreeBT_ResetParentPort(IN PDEVICE_OBJECT DeviceObject)
+NTSTATUS NTAPI FreeBT_ResetParentPort(IN PDEVICE_OBJECT DeviceObject)
{
NTSTATUS ntStatus;
KEVENT event;
}
// Send an idle request to the lower driver
-NTSTATUS SubmitIdleRequestIrp(IN PDEVICE_EXTENSION DeviceExtension)
+NTSTATUS NTAPI SubmitIdleRequestIrp(IN PDEVICE_EXTENSION DeviceExtension)
{
PIRP irp;
NTSTATUS ntStatus;
}
-VOID IdleNotificationCallback(IN PDEVICE_EXTENSION DeviceExtension)
+VOID NTAPI IdleNotificationCallback(IN PDEVICE_EXTENSION DeviceExtension)
{
NTSTATUS ntStatus;
POWER_STATE powerState;
}
-NTSTATUS IdleNotificationRequestComplete(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PDEVICE_EXTENSION DeviceExtension)
+NTSTATUS NTAPI IdleNotificationRequestComplete(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PDEVICE_EXTENSION DeviceExtension)
{
NTSTATUS ntStatus;
POWER_STATE powerState;
}
-VOID CancelSelectSuspend(IN PDEVICE_EXTENSION DeviceExtension)
+VOID NTAPI CancelSelectSuspend(IN PDEVICE_EXTENSION DeviceExtension)
{
PIRP irp;
KIRQL oldIrql;
{
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
}
-VOID PoIrpCompletionFunc(IN PDEVICE_OBJECT DeviceObject, IN UCHAR MinorFunction, IN POWER_STATE PowerState, IN PVOID Context, IN PIO_STATUS_BLOCK IoStatus)
+VOID NTAPI PoIrpCompletionFunc(IN PDEVICE_OBJECT DeviceObject, IN UCHAR MinorFunction, IN POWER_STATE PowerState, IN PVOID Context, IN PIO_STATUS_BLOCK IoStatus)
{
PIRP_COMPLETION_CONTEXT irpContext;
irpContext = NULL;
if(irpContext)
{
KeSetEvent(irpContext->Event, 0, FALSE);
- FreeBT_IoDecrement(irpContext->DeviceExtension);
+ FreeBT_IoDecrement(irpContext->DeviceExtension);
ExFreePool(irpContext);
}
}
-VOID PoIrpAsyncCompletionFunc(IN PDEVICE_OBJECT DeviceObject, IN UCHAR MinorFunction, IN POWER_STATE PowerState, IN PVOID Context, IN PIO_STATUS_BLOCK IoStatus)
+VOID NTAPI PoIrpAsyncCompletionFunc(IN PDEVICE_OBJECT DeviceObject, IN UCHAR MinorFunction, IN POWER_STATE PowerState, IN PVOID Context, IN PIO_STATUS_BLOCK IoStatus)
{
PDEVICE_EXTENSION DeviceExtension = (PDEVICE_EXTENSION) Context;
FreeBT_DbgPrint(3, ("PoIrpAsyncCompletionFunc::"));
}
-VOID WWIrpCompletionFunc(IN PDEVICE_OBJECT DeviceObject, IN UCHAR MinorFunction, IN POWER_STATE PowerState, IN PVOID Context, IN PIO_STATUS_BLOCK IoStatus)
+VOID NTAPI WWIrpCompletionFunc(IN PDEVICE_OBJECT DeviceObject, IN UCHAR MinorFunction, IN POWER_STATE PowerState, IN PVOID Context, IN PIO_STATUS_BLOCK IoStatus)
{
PDEVICE_EXTENSION DeviceExtension = (PDEVICE_EXTENSION) Context;