extern "C" NTSTATUS DriverEntry( IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPathName ) /*++ Routine Description: Installable driver initialization entry point. This entry point is called directly by the I/O system. All audio adapter drivers can use this code without change. Arguments: DriverObject - pointer to the driver object RegistryPath - pointer to a unicode string representing the path, to driver-specific key in the registry. Return Value: STATUS_SUCCESS if successful, STATUS_UNSUCCESSFUL otherwise. --*/ { NTSTATUS ntStatus; DPF(D_TERSE, ("[DriverEntry]")); // Tell the class driver to initialize the driver. ntStatus = PcInitializeAdapterDriver(DriverObject, RegistryPathName, (PDRIVER_ADD_DEVICE)AddDevice); return ntStatus; } // DriverEntry
NTSTATUS DriverEntry ( IN PVOID Context1, // Context for the class driver. IN PVOID Context2 // Context for the class driver. ) { PAGED_CODE(); _DbgPrintF(DEBUGLVL_VERBOSE, ("DriverEntry")); // // Tell the class driver to initialize the driver. // return PcInitializeAdapterDriver((PDRIVER_OBJECT)Context1, (PUNICODE_STRING)Context2, (PDRIVER_ADD_DEVICE)AddDevice); }
NTSTATUS DriverEntry ( IN PVOID Context1, // Context for the class driver. IN PVOID Context2 // Context for the class driver. ) { _DbgPrintF(DEBUGLVL_VERBOSE, ("DriverEntry")); // _DbgPrintF(DEBUGLVL_ERROR, ("Starting breakpoint for debugging")); // // Tell the class driver to initialize the driver. // return PcInitializeAdapterDriver((PDRIVER_OBJECT)Context1, (PUNICODE_STRING)Context2, (PDRIVER_ADD_DEVICE)AddDevice); }
extern "C" NTSTATUS DriverEntry ( IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPathName ) { PAGED_CODE (); DOUT (DBG_PRINT, ("[DriverEntry]")); // // Tell the class driver to initialize the driver. // NTSTATUS RetValue = PcInitializeAdapterDriver (DriverObject, RegistryPathName, (PDRIVER_ADD_DEVICE)AddDevice); return RetValue; }
extern "C" NTSTATUS DriverEntry ( _In_ PDRIVER_OBJECT DriverObject, _In_ PUNICODE_STRING RegistryPathName ) { /*++ Routine Description: Installable driver initialization entry point. This entry point is called directly by the I/O system. All audio adapter drivers can use this code without change. Arguments: DriverObject - pointer to the driver object RegistryPath - pointer to a unicode string representing the path, to driver-specific key in the registry. Return Value: STATUS_SUCCESS if successful, STATUS_UNSUCCESSFUL otherwise. --*/ NTSTATUS ntStatus; WDF_DRIVER_CONFIG config; DPF(D_TERSE, ("[DriverEntry]")); // // Get registry configuration. // ntStatus = GetRegistrySettings(RegistryPathName); IF_FAILED_ACTION_JUMP( ntStatus, DPF(D_ERROR, ("Registry Configuration error 0x%x", ntStatus)), Done); WDF_DRIVER_CONFIG_INIT(&config, WDF_NO_EVENT_CALLBACK); // // Set WdfDriverInitNoDispatchOverride flag to tell the framework // not to provide dispatch routines for the driver. In other words, // the framework must not intercept IRPs that the I/O manager has // directed to the driver. In this case, they will be handled by Audio // port driver. // config.DriverInitFlags |= WdfDriverInitNoDispatchOverride; config.DriverPoolTag = MINADAPTER_POOLTAG; ntStatus = WdfDriverCreate(DriverObject, RegistryPathName, WDF_NO_OBJECT_ATTRIBUTES, &config, WDF_NO_HANDLE); IF_FAILED_ACTION_JUMP( ntStatus, DPF(D_ERROR, ("WdfDriverCreate failed, 0x%x", ntStatus)), Done); // // Tell the class driver to initialize the driver. // ntStatus = PcInitializeAdapterDriver(DriverObject, RegistryPathName, (PDRIVER_ADD_DEVICE)AddDevice); IF_FAILED_ACTION_JUMP( ntStatus, DPF(D_ERROR, ("PcInitializeAdapterDriver failed, 0x%x", ntStatus)), Done); // // To intercept stop/remove/surprise-remove. // DriverObject->MajorFunction[IRP_MJ_PNP] = PnpHandler; // // Hook the port class unload function // gPCDriverUnloadRoutine = DriverObject->DriverUnload; DriverObject->DriverUnload = DriverUnload; // // All done. // ntStatus = STATUS_SUCCESS; Done: if (!NT_SUCCESS(ntStatus)) { if (WdfGetDriver() != NULL) { WdfDriverMiniportUnload(WdfGetDriver()); } } return ntStatus; } // DriverEntry