#endif
#if !defined(__cplusplus) || _MSC_VER < 1100
+
#define STATIC_IID_IKoInitializeParentDeviceObject 0x21B36996, 0x8DE3, 0x11D1, 0x8A, 0xE0, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
DEFINE_GUIDEX(IID_IKoInitializeParentDeviceObject);
+
#else
+
interface __declspec(uuid("21B36996-8DE3-11D1-8AE0-00A0C9223196")) IKoInitializeParentDeviceObject;
+
#endif
#ifndef COMDDKMETHOD
typedef
NTSTATUS
-(*KoCreateObjectHandler)( IN REFCLSID ClassId,
- IN IUnknown* UnkOuter OPTIONAL,
- IN REFIID InterfaceId,
- OUT PVOID* Interface);
+(*KoCreateObjectHandler)(
+ IN REFCLSID ClassId,
+ IN IUnknown* UnkOuter OPTIONAL,
+ IN REFIID InterfaceId,
+ OUT PVOID* Interface);
#undef INTERFACE
#define INTERFACE INonDelegatedUnknown
-DECLARE_INTERFACE(INonDelegatedUnknown)
-{
- STDMETHOD(NonDelegatedQueryInterface)
- (
+DECLARE_INTERFACE(INonDelegatedUnknown) {
+ STDMETHOD(NonDelegatedQueryInterface)(
THIS_
IN REFIID InterfaceId,
OUT PVOID* Interface
) PURE;
- STDMETHOD_(ULONG,NonDelegatedAddRef)
- (
+ STDMETHOD_(ULONG,NonDelegatedAddRef)(
THIS
) PURE;
- STDMETHOD_(ULONG,NonDelegatedRelease)
- (
+ STDMETHOD_(ULONG,NonDelegatedRelease)(
THIS
) PURE;
};
#undef INTERFACE
#define INTERFACE IIndirectedUnknown
-DECLARE_INTERFACE(IIndirectedUnknown)
-{
- STDMETHOD(IndirectedQueryInterface)
- (
+DECLARE_INTERFACE(IIndirectedUnknown) {
+ STDMETHOD(IndirectedQueryInterface)(
THIS_
IN REFIID InterfaceId,
OUT PVOID* Interface
) PURE;
- STDMETHOD_(ULONG,IndirectedAddRef)
- (
+ STDMETHOD_(ULONG,IndirectedAddRef)(
THIS
) PURE;
- STDMETHOD_(ULONG,IndirectedRelease)
- (
+ STDMETHOD_(ULONG,IndirectedRelease)(
THIS
) PURE;
};
-
#undef INTERFACE
#define INTERFACE IKoInitializeParentDeviceObject
-DECLARE_INTERFACE_(IKoInitializeParentDeviceObject, IUnknown)
-{
- STDMETHOD(SetParentDeviceObject)
- (
+DECLARE_INTERFACE_(IKoInitializeParentDeviceObject, IUnknown) {
+ STDMETHOD(SetParentDeviceObject)(
THIS_
IN PDEVICE_OBJECT ParentDeviceObject
) PURE;
};
-
-
#if defined(__cplusplus)
-
-class CBaseUnknown : public INonDelegatedUnknown, public IIndirectedUnknown
-{
- protected:
- LONG m_RefCount;
- private:
- BOOLEAN m_UsingClassId;
- CLSID m_ClassId;
- protected:
- IUnknown* m_UnknownOuter;
- public:
- COMDDKMETHOD CBaseUnknown (IN REFCLSID ClassId, IN IUnknown* UnknownOuter OPTIONAL = NULL);
- COMDDKMETHOD CBaseUnknown(IN IUnknown* UnknownOuter OPTIONAL = NULL);
- COMDDKMETHOD virtual ~CBaseUnknown();
- COMDDKMETHOD STDMETHODIMP_(ULONG) NonDelegatedAddRef();
- COMDDKMETHOD STDMETHODIMP_(ULONG) NonDelegatedRelease();
- COMDDKMETHOD STDMETHODIMP NonDelegatedQueryInterface(IN REFIID InterfaceId,OUT PVOID* Interface);
- COMDDKMETHOD STDMETHODIMP_(ULONG) IndirectedAddRef();
- COMDDKMETHOD STDMETHODIMP_(ULONG) IndirectedRelease();
- COMDDKMETHOD STDMETHODIMP IndirectedQueryInterface(IN REFIID InterfaceId, OUT PVOID* Interface);
+class CBaseUnknown : public INonDelegatedUnknown, public IIndirectedUnknown {
+ protected:
+ LONG m_RefCount;
+ private:
+ BOOLEAN m_UsingClassId;
+ CLSID m_ClassId;
+ protected:
+ IUnknown* m_UnknownOuter;
+ public:
+ COMDDKMETHOD CBaseUnknown (IN REFCLSID ClassId, IN IUnknown* UnknownOuter OPTIONAL = NULL);
+ COMDDKMETHOD CBaseUnknown(IN IUnknown* UnknownOuter OPTIONAL = NULL);
+ COMDDKMETHOD virtual ~CBaseUnknown();
+ COMDDKMETHOD STDMETHODIMP_(ULONG) NonDelegatedAddRef();
+ COMDDKMETHOD STDMETHODIMP_(ULONG) NonDelegatedRelease();
+ COMDDKMETHOD STDMETHODIMP NonDelegatedQueryInterface(IN REFIID InterfaceId,OUT PVOID* Interface);
+ COMDDKMETHOD STDMETHODIMP_(ULONG) IndirectedAddRef();
+ COMDDKMETHOD STDMETHODIMP_(ULONG) IndirectedRelease();
+ COMDDKMETHOD STDMETHODIMP IndirectedQueryInterface(IN REFIID InterfaceId, OUT PVOID* Interface);
};
-
#if !defined(DEFINE_ABSTRACT_UNKNOWN)
-
#define DEFINE_ABSTRACT_UNKNOWN() \
STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId, PVOID* Interface) PURE; \
STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
STDMETHOD_(ULONG,Release)(THIS) PURE;
-
#endif
#define DEFINE_STD_UNKNOWN() \
STDMETHODIMP_(ULONG) Release();
#define IMPLEMENT_STD_UNKNOWN(Class) \
- STDMETHODIMP Class::QueryInterface( REFIID InterfaceId, PVOID* Interface) \
- { \
+ STDMETHODIMP Class::QueryInterface( REFIID InterfaceId, PVOID* Interface) { \
return m_UnknownOuter->QueryInterface(InterfaceId, Interface);\
} \
- STDMETHODIMP_(ULONG) Class::AddRef() \
- { \
+ STDMETHODIMP_(ULONG) Class::AddRef() { \
return m_UnknownOuter->AddRef(); \
} \
- STDMETHODIMP_(ULONG) Class::Release() \
- { \
+ STDMETHODIMP_(ULONG) Class::Release() { \
return m_UnknownOuter->Release(); \
}
+
#else
COMDDKAPI
void
NTAPI
-KoRelease( IN REFCLSID ClassId);
-#endif // !__cplusplus
+KoRelease(
+ IN REFCLSID ClassId);
+
+#endif /* !__cplusplus */
COMDDKAPI
NTSTATUS
NTAPI
-KoCreateInstance( IN REFCLSID ClassId,
- IN IUnknown* UnkOuter OPTIONAL,
- IN ULONG ClsContext,
- IN REFIID InterfaceId,
- OUT PVOID* Interface);
+KoCreateInstance(
+ IN REFCLSID ClassId,
+ IN IUnknown* UnkOuter OPTIONAL,
+ IN ULONG ClsContext,
+ IN REFIID InterfaceId,
+ OUT PVOID* Interface);
COMDDKAPI
NTSTATUS
NTAPI
-KoDeviceInitialize( IN PDEVICE_OBJECT DeviceObject);
+KoDeviceInitialize(
+ IN PDEVICE_OBJECT DeviceObject);
COMDDKAPI
NTSTATUS
NTAPI
-KoDriverInitialize( IN PDRIVER_OBJECT DriverObject,
- IN PUNICODE_STRING RegistryPathName,
- IN KoCreateObjectHandler CreateObjectHandler);
+KoDriverInitialize(
+ IN PDRIVER_OBJECT DriverObject,
+ IN PUNICODE_STRING RegistryPathName,
+ IN KoCreateObjectHandler CreateObjectHandler);
#if defined(__cplusplus)
#ifndef _NEW_DELETE_OPERATORS_
#define _NEW_DELETE_OPERATORS_
-inline PVOID operator new
-(
+inline PVOID operator new(
size_t iSize,
- POOL_TYPE poolType
-)
+ POOL_TYPE poolType)
{
PVOID result = ExAllocatePoolWithTag(poolType,iSize,'wNCK');
- if (result)
- {
+ if (result) {
RtlZeroMemory(result,iSize);
}
return result;
}
-inline PVOID operator new
-(
- size_t iSize,
- POOL_TYPE poolType,
- ULONG tag
-)
+inline PVOID operator new(
+ size_t iSize,
+ POOL_TYPE poolType,
+ ULONG tag)
{
PVOID result = ExAllocatePoolWithTag(poolType,iSize,tag);
- if (result)
- {
+ if (result) {
RtlZeroMemory(result,iSize);
}
return result;
}
-inline void __cdecl operator delete
-(
- PVOID pVoid
-)
+inline void __cdecl operator delete(
+ PVOID pVoid)
{
- ExFreePool(pVoid);
+ if (pVoid) ExFreePool(pVoid);
}
-#endif
+#endif /* _NEW_DELETE_OPERATORS_ */
#if defined(_SYS_GUID_OPERATOR_EQ_)
#define _GUID_OPERATORS_
#ifndef _GUID_OPERATORS_
#define _GUID_OPERATORS_
-__inline BOOL operator==(const GUID& guidOne, const GUID& guidOther)
-{
+__inline BOOL operator==(const GUID& guidOne, const GUID& guidOther) {
return IsEqualGUIDAligned(guidOne,guidOther);
}
-__inline BOOL operator!=(const GUID& guidOne, const GUID& guidOther)
-{
+
+__inline BOOL operator!=(const GUID& guidOne, const GUID& guidOther) {
return !(guidOne == guidOther);
}
-#endif
-
-#endif
+#endif /* _GUID_OPERATORS_ */
-#endif
+#endif /* __cplusplus */
+#endif /* _KCOM_ */