terminal/src/server/IWaitRoutine.h

57 lines
1.3 KiB
C++

/*++
Copyright (c) Microsoft Corporation
Licensed under the MIT license.
Module Name:
- IWaitRoutine.h
Abstract:
- This file specifies the interface that must be defined by a host application when queuing an API call to be serviced later.
Specifically, this defines which method will be called back "later" to service the request.
Author:
- Michael Niksa (miniksa) 01-Mar-2017
Revision History:
- Adapted from original items in srvinit.cpp, getset.cpp, directio.cpp, stream.cpp
--*/
#pragma once
#include "WaitTerminationReason.h"
enum class ReplyDataType
{
Write = 1,
Read = 2,
};
class IWaitRoutine
{
public:
IWaitRoutine(ReplyDataType type) :
_ReplyType(type)
{
}
virtual ~IWaitRoutine()
{
}
virtual bool Notify(const WaitTerminationReason TerminationReason,
const bool fIsUnicode,
_Out_ NTSTATUS* const pReplyStatus,
_Out_ size_t* const pNumBytes,
_Out_ DWORD* const pControlKeyState,
_Out_ void* const pOutputData) = 0;
ReplyDataType GetReplyType() const
{
return _ReplyType;
}
private:
ReplyDataType const _ReplyType;
};