/*++ 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; };