IoCompleteRequest( p_irp, IO_NO_INCREMENT );\r
}\r
\r
+ if( p_reg->p_dereg_irp )\r
+ {\r
+ p_reg->p_dereg_irp->IoStatus.Status = STATUS_SUCCESS;\r
+ p_reg->p_dereg_irp->IoStatus.Information = 0;\r
+ IoCompleteRequest( p_reg->p_dereg_irp, IO_NO_INCREMENT );\r
+ p_reg->p_dereg_irp = NULL;\r
+ }\r
+\r
/* Dereference the PnP manager. */\r
deref_al_obj( &gp_pnp->obj );\r
\r
}\r
\r
\r
-static void\r
-__proxy_dereg_pnp_cb(\r
- IN void *context )\r
-{\r
- IRP *p_irp;\r
-\r
- AL_ENTER( AL_DBG_DEV | AL_DBG_PNP );\r
-\r
- p_irp = context;\r
-\r
- p_irp->IoStatus.Status = STATUS_SUCCESS;\r
- p_irp->IoStatus.Information = 0;\r
- IoCompleteRequest( p_irp, IO_NO_INCREMENT );\r
-\r
- AL_EXIT( AL_DBG_DEV | AL_DBG_PNP );\r
-}\r
-\r
-\r
/*\r
* Process the ioctl UAL_DEREG_PNP:\r
*/\r
return CL_INVALID_PARAMETER;\r
}\r
\r
- h_pnp->obj.context = h_ioctl;\r
+ h_pnp->p_dereg_irp = h_ioctl;\r
\r
IoMarkIrpPending( h_ioctl );\r
\r
- h_pnp->obj.pfn_destroy( &h_pnp->obj, __proxy_dereg_pnp_cb );\r
+ h_pnp->obj.pfn_destroy( &h_pnp->obj, NULL );\r
\r
AL_EXIT( AL_DBG_DEV | AL_DBG_PNP );\r
return CL_PENDING;\r