125 lines
2.1 KiB
C
125 lines
2.1 KiB
C
|
/*++
|
|||
|
|
|||
|
Copyright (c) 1989 Microsoft Corporation
|
|||
|
|
|||
|
Module Name:
|
|||
|
|
|||
|
rxpnp.c
|
|||
|
|
|||
|
Abstract:
|
|||
|
|
|||
|
This module implements the PNP notification handling routines for RDBSS
|
|||
|
|
|||
|
Revision History:
|
|||
|
|
|||
|
Balan Sethu Raman [SethuR] 10-Apr-1996
|
|||
|
|
|||
|
Notes:
|
|||
|
|
|||
|
--*/
|
|||
|
|
|||
|
#include "precomp.h"
|
|||
|
#pragma hdrstop
|
|||
|
|
|||
|
#include "tdikrnl.h"
|
|||
|
|
|||
|
HANDLE RxTdiNotificationHandle;
|
|||
|
|
|||
|
VOID
|
|||
|
RxTdiBindTransportCallback(
|
|||
|
IN PUNICODE_STRING DeviceName
|
|||
|
)
|
|||
|
/*++
|
|||
|
|
|||
|
Routine Description:
|
|||
|
|
|||
|
TDI calls this routine whenever a transport creates a new device object.
|
|||
|
|
|||
|
Arguments:
|
|||
|
|
|||
|
DeviceName - the name of the newly created device object
|
|||
|
|
|||
|
--*/
|
|||
|
{
|
|||
|
RX_BINDING_CONTEXT BindingContext;
|
|||
|
|
|||
|
BindingContext.pTransportName = DeviceName;
|
|||
|
BindingContext.QualityOfService = 65534;
|
|||
|
|
|||
|
//DbgPrint("$$$$$ Bind for transport %ws\n",DeviceName->Buffer);
|
|||
|
RxCeBindToTransport(&BindingContext);
|
|||
|
}
|
|||
|
|
|||
|
VOID
|
|||
|
RxTdiUnbindTransportCallback(
|
|||
|
IN PUNICODE_STRING DeviceName
|
|||
|
)
|
|||
|
/*++
|
|||
|
|
|||
|
Routine Description:
|
|||
|
|
|||
|
TDI calls this routine whenever a transport deletes a device object
|
|||
|
|
|||
|
Arguments:
|
|||
|
|
|||
|
DeviceName = the name of the deleted device object
|
|||
|
|
|||
|
--*/
|
|||
|
{
|
|||
|
RX_BINDING_CONTEXT BindingContext;
|
|||
|
|
|||
|
BindingContext.pTransportName = DeviceName;
|
|||
|
|
|||
|
RxCeUnbindFromTransport(&BindingContext);
|
|||
|
}
|
|||
|
|
|||
|
NTSTATUS
|
|||
|
RxRegisterForPnpNotifications()
|
|||
|
/*++
|
|||
|
|
|||
|
Routine Description:
|
|||
|
|
|||
|
This routine registers with TDI for receiving transport notifications
|
|||
|
|
|||
|
--*/
|
|||
|
{
|
|||
|
NTSTATUS status = STATUS_SUCCESS;
|
|||
|
|
|||
|
if( RxTdiNotificationHandle == NULL ) {
|
|||
|
|
|||
|
status = TdiRegisterNotificationHandler (
|
|||
|
RxTdiBindTransportCallback,
|
|||
|
RxTdiUnbindTransportCallback,
|
|||
|
&RxTdiNotificationHandle );
|
|||
|
}
|
|||
|
|
|||
|
return status;
|
|||
|
}
|
|||
|
|
|||
|
NTSTATUS
|
|||
|
RxDeregisterForPnpNotifications()
|
|||
|
/*++
|
|||
|
|
|||
|
Routine Description:
|
|||
|
|
|||
|
This routine deregisters the TDI notification mechanism
|
|||
|
|
|||
|
Notes:
|
|||
|
|
|||
|
|
|||
|
|
|||
|
--*/
|
|||
|
{
|
|||
|
NTSTATUS Status = STATUS_SUCCESS;
|
|||
|
|
|||
|
if( RxTdiNotificationHandle != NULL ) {
|
|||
|
Status = TdiDeregisterNotificationHandler( RxTdiNotificationHandle );
|
|||
|
if( NT_SUCCESS( Status ) ) {
|
|||
|
RxTdiNotificationHandle = NULL;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
return Status;
|
|||
|
}
|
|||
|
|
|||
|
|