UcmTcpciPortControllerStart function (ucmtcpciportcontroller.h)

Indicates to the UcmTcpciCx class extension that the client driver is now ready to service hardware requests for the port controller.

Syntax

NTSTATUS UcmTcpciPortControllerStart(
  UCMTCPCIPORTCONTROLLER PortControllerObject
);

Parameters

PortControllerObject

Handle to the port controller object that the client driver received in the previous call to UcmTcpciPortControllerCreate.

Return value

(NTSTATUS) The method returns STATUS_SUCCESS if the operation succeeds. Otherwise, this method may return an appropriate NTSTATUS error code.

Return code Description
STATUS_INVALID_DEVICE_REQUEST
The port controller is already in Start state.
STATUS_INVALID_HANDLE
Hardware request queue has not been set by calling UcmTcpciPortControllerSetHardwareRequestQueue.

Remarks

After the client driver has received the UCMPORTCONTROLLER handle for the port controller object, the driver calls this method to notify the class extension that the driver can start receiving hardware requests. This method call allows the client driver to perform initialization of its framework context space on the port controller object, before the class extension can invoke the driver's callback functions or requests for the port controller object. The driver cannot call UcmTcpciPortControllerAlert or UcmTcpciPortControllerStop until the port controller has been started.

The client driver calls this method right after calling UcmTcpciPortControllerCreate and initializing its context structure, if it was specified in the WDF_OBJECT_ATTRIBUTES structure as the Attributes parameter value. The driver must assume that the class extension may submit requests even before UcmTcpciPortControllerStart returns, i.e., from within this DDI call. If the driver is holding a lock while calling UcmTcpciPortControllerStart and also attempts to acquire a lock while handling a hardware request (in its hardware request queue callback), it might result in a deadlock.

A call to UcmTcpciPortControllerStart to start a port controller object already in Start state, results in an error.

On boot, if the BIOS had already negotiated a PD contract, UcmTcpciCx starts from an unattached state.

Requirements

Requirement Value
Minimum supported client Windows 10
Minimum supported server Windows Server 2016
Target Platform Windows
Header ucmtcpciportcontroller.h
Library Ucmtcpcicxstub.lib
IRQL PASSIVE_LEVEL

See also

UcmTcpciPortControllerStop