DrvRemoveDriver

LRESULT
DrvRemoveDriver(
PREG_ACCESS
RegAccess
);

The DrvRemoveDriver function unloads the kernel-mode driver and marks the kernel-mode driver service for deletion.

Parameters

RegAccess

Pointer to a globally-defined structure of type REG_ACCESS.

Return Value

Returns one of the following values.

Value Definition
DRVCNF_OK Kernel-mode driver service has been marked for deletion. Driver was not loaded prior to call.
DRVCNF_RESTART Kernel-mode driver service has been marked for deletion. Driver was loaded prior to call.
DRVCNF_CANCEL Attempt to mark kernel-mode driver service for deletion failed.

See the Comments section below.

Comments

The structure pointed to by RegAccess must be a single, globally-defined REG_ACCESS structure that the driver uses with all calls to drvlib.lib functions requiring a RegAccess parameter.

The DrvRemoveDriver function first checks to see if the kernel-mode driver is loaded and, if it is, calls DrvUnloadKernelDriver. Then it calls DrvDeleteServicesNode.

Typically, a user-mode driver calls DrvRemoveDriver from its DriverProc function, when processing a DRV_REMOVE command. The return values provided by DrvRemoveDriver match those specified for DRV_REMOVE.

The driver must call DrvCreateServicesNode before calling DrvRemoveDriver. After DrvRemoveDriver returns, the driver should call DrvCloseServiceManager.

For additional information, see Installing and Configuring your Driver, Using drvlib.lib.