116 WCHAR wszDeviceName[255]={0};
118 LONG instanceNumber=0;
124 swprintf(wszDeviceName,
L"\\Device\\FbtUsb%02d", instanceNumber);
127 while (instanceNumber<99 && !
NT_SUCCESS(ntStatus))
129 swprintf(wszDeviceName,
L"\\Device\\FbtUsb%02d", instanceNumber);
131 FreeBT_DbgPrint(1, (
"FBTUSB: Attempting to create device %ws\n", wszDeviceName));
156 deviceExtension->FunctionalDeviceObject = deviceObject;
160 swprintf(deviceExtension->wszDosDeviceName,
L"\\DosDevices\\FbtUsb%02d", instanceNumber);
165 FreeBT_DbgPrint(1, (
"FBTUSB: Failed to create symbolic link %ws to %ws, status=0x%08x\n", deviceExtension->wszDosDeviceName, wszDeviceName, ntStatus));
171 FreeBT_DbgPrint(1, (
"FBTUSB: Created symbolic link %ws\n", deviceExtension->wszDosDeviceName));
177 deviceExtension->OpenHandleCount = 0;
181 deviceExtension->IdleReqPend = 0;
182 deviceExtension->PendingIdleIrp =
NULL;
201 deviceExtension->OutStandingIO = 1;
209 FreeBT_DbgPrint(1, (
"FBTUSB: FreeBT_WmiRegistration failed with %X\n", ntStatus));
239 if (
NULL == deviceExtension->TopOfStackDeviceObject)
252 &GUID_CLASS_FREEBT_USB,
254 &deviceExtension->InterfaceName);
291 deviceExtension->SSRegistryEnable = 0;
292 deviceExtension->SSEnable = 0;
300 (
PULONG)(&deviceExtension->SSRegistryEnable));
301 if (deviceExtension->SSRegistryEnable)
#define DO_DEVICE_INITIALIZING
NTSTATUS NTAPI FreeBT_WmiRegistration(IN OUT PDEVICE_EXTENSION DeviceExtension)
#define STATUS_OBJECT_NAME_COLLISION
VOID NTAPI DpcRoutine(IN PKDPC Dpc, IN PVOID DeferredContext, IN PVOID SystemArgument1, IN PVOID SystemArgument2)
NTSTATUS NTAPI IoDeleteSymbolicLink(IN PUNICODE_STRING SymbolicLinkName)
#define FREEBT_REGISTRY_PARAMETERS_PATH
VOID NTAPI IoDetachDevice(IN PDEVICE_OBJECT TargetDevice)
PDEVICE_OBJECT PhysicalDeviceObject
NTSTATUS NTAPI FreeBT_GetRegistryDword(IN PWCHAR RegPath, IN PWCHAR ValueName, IN OUT PULONG Value)
PDEVICE_OBJECT NTAPI IoAttachDeviceToDeviceStack(IN PDEVICE_OBJECT SourceDevice, IN PDEVICE_OBJECT TargetDevice)
FORCEINLINE VOID KeInitializeSpinLock(_Out_ PKSPIN_LOCK SpinLock)
#define FreeBT_DbgPrint(level, _x_)
static PDRIVER_OBJECT DriverObject
NTSTATUS NTAPI FreeBT_WmiDeRegistration(IN OUT PDEVICE_EXTENSION DeviceExtension)
NTSTATUS NTAPI IoCreateSymbolicLink(IN PUNICODE_STRING SymbolicLinkName, IN PUNICODE_STRING DeviceName)
#define NT_SUCCESS(StatCode)
#define STATUS_NO_SUCH_DEVICE
#define swprintf(buf, format,...)
VOID NTAPI IoDeleteDevice(IN PDEVICE_OBJECT DeviceObject)
NTSTATUS NTAPI IoRegisterDeviceInterface(IN PDEVICE_OBJECT PhysicalDeviceObject, IN CONST GUID *InterfaceClassGuid, IN PUNICODE_STRING ReferenceString OPTIONAL, OUT PUNICODE_STRING SymbolicLinkName)
#define KeInitializeEvent(pEvt, foo, foo2)
#define InterlockedIncrement
#define InitializeListHead(ListHead)
#define FILE_DEVICE_UNKNOWN
#define INITIALIZE_PNP_STATE(_Data_)
NTSTATUS NTAPI IoCreateDevice(IN PDRIVER_OBJECT DriverObject, IN ULONG DeviceExtensionSize, IN PUNICODE_STRING DeviceName, IN DEVICE_TYPE DeviceType, IN ULONG DeviceCharacteristics, IN BOOLEAN Exclusive, OUT PDEVICE_OBJECT *DeviceObject)
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
POWER_STATE NTAPI PoSetPowerState(IN PDEVICE_OBJECT DeviceObject, IN POWER_STATE_TYPE Type, IN POWER_STATE State)
VOID NTAPI KeInitializeDpc(IN PKDPC Dpc, IN PKDEFERRED_ROUTINE DeferredRoutine, IN PVOID DeferredContext)
struct _BEEP_DEVICE_EXTENSION * PDEVICE_EXTENSION
size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
VOID NTAPI KeInitializeTimerEx(OUT PKTIMER Timer, IN TIMER_TYPE Type)
BOOLEAN NTAPI IoIsWdmVersionAvailable(IN UCHAR MajorVersion, IN UCHAR MinorVersion)