// parallel.h
PNEGOTIATE_IEEE_MODE PnegotiateIeeeMode;
NTSTATUS PnegotiateIeeeMode(
[in] PVOID Extension,
[in] UCHAR Extensibility
)
{...}
View the official Windows Driver Kit DDI reference// parallel.h
PNEGOTIATE_IEEE_MODE PnegotiateIeeeMode;
NTSTATUS PnegotiateIeeeMode(
[in] PVOID Context,
[in] USHORT ModeMaskFwd,
[in] USHORT ModeMaskRev,
[in] PARALLEL_SAFETY ModeSafety,
[in] BOOLEAN IsForward
)
{...}
View the official Windows Driver Kit DDI referenceNo description available.
The old version of the PNEGOTIATE_IEEE_MODE callback function. For the latest version, see the PNEGOTIATE_IEEE_MODE (new) callback function.
Extension [in]Pointer to the device extension of the parallel port device.
Extensibility [in]Specifies the IEEE 1284 extensibility mode to negotiate. This is a UCHAR value that indicates the specific parallel port communication mode to establish.
Returns an NTSTATUS value. Possible return values include:
| Return code | Description |
|---|---|
| STATUS_SUCCESS | The IEEE mode was successfully negotiated. |
| STATUS_UNSUCCESSFUL | The mode negotiation failed. |
| STATUS_INVALID_PARAMETER | An invalid extensibility mode was specified. |
| STATUS_DEVICE_NOT_READY | The parallel port device is not ready for mode negotiation. |
The PNEGOTIATE_IEEE_MODE-typed callback routine selects the fastest forward and reverse protocols that the system-supplied bus driver for parallel ports supports from among those specified by the caller. The system-supplied bus driver for parallel ports supplies this routine.
Context [in]Pointer to the device extension of a parallel device's physical device object (PDO).
ModeMaskFwd [in]Specifies the forward protocols. ModeMaskFwd is a bitwise OR of the constants that represent the protocols that the parallel port bus driver supports. For the forward and reverse protocol values, see the protocol constants defined in ntddpar.h (from NONE to ECP_ANY).
ModeMaskRev [in]Specifies the reverse protocols. ModeMaskRev is a bitwise OR of the constants that represent the protocols that the parallel port bus driver supports.
ModeSafety [in]Specifies the safety mode. Must be set to the SAFE_MODE enumeration value of the PARALLEL_SAFETY enumeration type:
typedef enum {
SAFE_MODE,
UNSAFE_MODE
} PARALLEL_SAFETY;
IsForward [in]Specifies whether to connect the forward or the reverse protocol that the routine negotiates. If IsForward is TRUE, the forward protocol is connected. Otherwise, the reverse protocol is connected.
| Return code | Description |
|---|---|
| STATUS_SUCCESSFUL | The IEEE mode was successfully negotiated. |
| STATUS_DEVICE_PROTOCOL_ERROR | An IEEE mode is already set on the device. |
| STATUS_Xxx | An internal operation resulted in an NTSTATUS error. |
To obtain a pointer to the system-supplied PNEGOTIATE_IEEE_MODE callback, a kernel-mode driver uses an IOCTL_INTERNAL_PARCLASS_CONNECT request, which returns a PARCLASS_INFORMATION structure. The NegotiateIeeeMode member of the PARCLASS_INFORMATION structure is a pointer to this callback.
The PNEGOTIATE_IEEE_MODE callback runs in the caller's thread at the IRQL of the caller.