mirror of
https://github.com/reactos/reactos.git
synced 2024-12-28 10:04:49 +00:00
Added some more prototypes
svn path=/trunk/; revision=2641
This commit is contained in:
parent
e21b78b3e3
commit
14f393cb80
5 changed files with 159 additions and 50 deletions
|
@ -1,11 +1,53 @@
|
||||||
|
#ifndef _INCLUDE_DDK_OBFUNCS_H
|
||||||
|
#define _INCLUDE_DDK_OBFUNCS_H
|
||||||
/* OBJECT MANAGER ************************************************************/
|
/* OBJECT MANAGER ************************************************************/
|
||||||
|
|
||||||
NTSTATUS STDCALL
|
NTSTATUS STDCALL
|
||||||
ObCreateObject(PHANDLE Handle,
|
ObAssignSecurity(IN PACCESS_STATE AccessState,
|
||||||
ACCESS_MASK DesiredAccess,
|
IN PSECURITY_DESCRIPTOR SecurityDescriptor,
|
||||||
POBJECT_ATTRIBUTES ObjectAttributes,
|
IN PVOID Object,
|
||||||
POBJECT_TYPE Type,
|
IN POBJECT_TYPE Type);
|
||||||
PVOID *Object);
|
|
||||||
|
/*
|
||||||
|
BOOLEAN STDCALL
|
||||||
|
ObCheckCreateObjectAccess(IN PVOID Object,
|
||||||
|
IN ACCESS_MASK DesiredAccess,
|
||||||
|
ULONG Param3,
|
||||||
|
ULONG Param4,
|
||||||
|
ULONG Param5,
|
||||||
|
IN KPROCESSOR_MODE AccessMode,
|
||||||
|
OUT PNTSTATUS AccessStatus);
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
BOOLEAN STDCALL
|
||||||
|
ObCheckObjectAccess(IN PVOID Object,
|
||||||
|
ULONG Param2,
|
||||||
|
ULONG Param3,
|
||||||
|
IN KPROCESSOR_MODE AccessMode,
|
||||||
|
OUT PACCESS_MODE GrantedAccess);
|
||||||
|
*/
|
||||||
|
|
||||||
|
NTSTATUS STDCALL
|
||||||
|
ObCreateObject(OUT PHANDLE Handle,
|
||||||
|
IN ACCESS_MASK DesiredAccess,
|
||||||
|
IN POBJECT_ATTRIBUTES ObjectAttributes,
|
||||||
|
IN POBJECT_TYPE Type,
|
||||||
|
OUT PVOID *Object);
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
/* original implementation */
|
||||||
|
NTSTATUS STDCALL
|
||||||
|
ObCreateObject(IN KPROCESSOR_MODE ObjectAttributesAccessMode OPTIONAL,
|
||||||
|
IN POBJECT_TYPE Type,
|
||||||
|
IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
|
||||||
|
IN KPROCESSOR_MODE AccessMode,
|
||||||
|
IN OUT PVOID ParseContext OPTIONAL,
|
||||||
|
IN ULONG ObjectSize,
|
||||||
|
IN ULONG PagedPoolCharge OPTIONAL,
|
||||||
|
IN ULONG NonPagedPoolCharge OPTIONAL,
|
||||||
|
OUT PVOID *Object);
|
||||||
|
#endif
|
||||||
|
|
||||||
VOID FASTCALL
|
VOID FASTCALL
|
||||||
ObfDereferenceObject(IN PVOID Object);
|
ObfDereferenceObject(IN PVOID Object);
|
||||||
|
@ -19,16 +61,29 @@ ObfReferenceObject(IN PVOID Object);
|
||||||
#define ObReferenceObject(Object) \
|
#define ObReferenceObject(Object) \
|
||||||
ObfReferenceObject(Object)
|
ObfReferenceObject(Object)
|
||||||
|
|
||||||
|
/*
|
||||||
|
BOOLEAN STDCALL
|
||||||
|
ObFindHandleForObject(ULONG Param1,
|
||||||
|
ULONG Param2,
|
||||||
|
ULONG Param3,
|
||||||
|
ULONG Param4);
|
||||||
|
*/
|
||||||
|
|
||||||
ULONG STDCALL
|
ULONG STDCALL
|
||||||
ObGetObjectPointerCount(IN PVOID Object);
|
ObGetObjectPointerCount(IN PVOID Object);
|
||||||
|
|
||||||
NTSTATUS STDCALL
|
NTSTATUS STDCALL
|
||||||
ObInsertObject(PVOID Object,
|
ObGetObjectSecurity(IN PVOID Object,
|
||||||
PACCESS_STATE PassedAccessState,
|
OUT PSECURITY_DESCRIPTOR *SecurityDescriptor,
|
||||||
ACCESS_MASK DesiredAccess,
|
OUT PBOOLEAN MemoryAllocated);
|
||||||
ULONG AdditionalReferences,
|
|
||||||
PVOID* ReferencedObject,
|
NTSTATUS STDCALL
|
||||||
PHANDLE Handle);
|
ObInsertObject(IN PVOID Object,
|
||||||
|
IN PACCESS_STATE PassedAccessState OPTIONAL,
|
||||||
|
IN ACCESS_MASK DesiredAccess,
|
||||||
|
IN ULONG AdditionalReferences,
|
||||||
|
OUT PVOID* ReferencedObject OPTIONAL,
|
||||||
|
OUT PHANDLE Handle);
|
||||||
|
|
||||||
VOID STDCALL
|
VOID STDCALL
|
||||||
ObMakeTemporaryObject(IN PVOID ObjectBody);
|
ObMakeTemporaryObject(IN PVOID ObjectBody);
|
||||||
|
@ -36,7 +91,7 @@ ObMakeTemporaryObject(IN PVOID ObjectBody);
|
||||||
NTSTATUS STDCALL
|
NTSTATUS STDCALL
|
||||||
ObOpenObjectByName(IN POBJECT_ATTRIBUTES ObjectAttributes,
|
ObOpenObjectByName(IN POBJECT_ATTRIBUTES ObjectAttributes,
|
||||||
IN POBJECT_TYPE ObjectType,
|
IN POBJECT_TYPE ObjectType,
|
||||||
IN PVOID ParseContext,
|
IN OUT PVOID ParseContext OPTIONAL,
|
||||||
IN KPROCESSOR_MODE AccessMode,
|
IN KPROCESSOR_MODE AccessMode,
|
||||||
IN ACCESS_MASK DesiredAccess,
|
IN ACCESS_MASK DesiredAccess,
|
||||||
IN PACCESS_STATE PassedAccessState,
|
IN PACCESS_STATE PassedAccessState,
|
||||||
|
@ -45,12 +100,22 @@ ObOpenObjectByName(IN POBJECT_ATTRIBUTES ObjectAttributes,
|
||||||
NTSTATUS STDCALL
|
NTSTATUS STDCALL
|
||||||
ObOpenObjectByPointer(IN PVOID Object,
|
ObOpenObjectByPointer(IN PVOID Object,
|
||||||
IN ULONG HandleAttributes,
|
IN ULONG HandleAttributes,
|
||||||
IN PACCESS_STATE PassedAccessState,
|
IN PACCESS_STATE PassedAccessState OPTIONAL,
|
||||||
IN ACCESS_MASK DesiredAccess,
|
IN ACCESS_MASK DesiredAccess OPTIONAL,
|
||||||
IN POBJECT_TYPE ObjectType,
|
IN POBJECT_TYPE ObjectType OPTIONAL,
|
||||||
IN KPROCESSOR_MODE AccessMode,
|
IN KPROCESSOR_MODE AccessMode,
|
||||||
OUT PHANDLE Handle);
|
OUT PHANDLE Handle);
|
||||||
|
|
||||||
|
NTSTATUS STDCALL
|
||||||
|
ObQueryNameString(IN PVOID Object,
|
||||||
|
OUT POBJECT_NAME_INFORMATION ObjectNameInfo,
|
||||||
|
IN ULONG Length,
|
||||||
|
OUT PULONG ReturnLength);
|
||||||
|
|
||||||
|
NTSTATUS STDCALL
|
||||||
|
ObQueryObjectAuditingByHandle(IN HANDLE Handle,
|
||||||
|
OUT PBOOLEAN GenerateOnClose);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* FUNCTION: Performs access validation on an object handle and if access
|
* FUNCTION: Performs access validation on an object handle and if access
|
||||||
* is granted returns a pointer to the object's body
|
* is granted returns a pointer to the object's body
|
||||||
|
@ -66,12 +131,12 @@ ObOpenObjectByPointer(IN PVOID Object,
|
||||||
* RETURNS: Status
|
* RETURNS: Status
|
||||||
*/
|
*/
|
||||||
NTSTATUS STDCALL
|
NTSTATUS STDCALL
|
||||||
ObReferenceObjectByHandle(HANDLE Handle,
|
ObReferenceObjectByHandle(IN HANDLE Handle,
|
||||||
ACCESS_MASK DesiredAccess,
|
IN ACCESS_MASK DesiredAccess,
|
||||||
POBJECT_TYPE ObjectType,
|
IN POBJECT_TYPE ObjectType OPTIONAL,
|
||||||
KPROCESSOR_MODE AccessMode,
|
IN KPROCESSOR_MODE AccessMode,
|
||||||
PVOID* Object,
|
OUT PVOID* Object,
|
||||||
POBJECT_HANDLE_INFORMATION HandleInfo);
|
OUT POBJECT_HANDLE_INFORMATION HandleInfo OPTIONAL);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* FUNCTION: Increments the reference count for a given object
|
* FUNCTION: Increments the reference count for a given object
|
||||||
|
@ -83,18 +148,33 @@ ObReferenceObjectByHandle(HANDLE Handle,
|
||||||
* RETURNS: Status
|
* RETURNS: Status
|
||||||
*/
|
*/
|
||||||
NTSTATUS STDCALL
|
NTSTATUS STDCALL
|
||||||
ObReferenceObjectByPointer(PVOID Object,
|
ObReferenceObjectByPointer(IN PVOID Object,
|
||||||
ACCESS_MASK DesiredAccess,
|
IN ACCESS_MASK DesiredAccess,
|
||||||
POBJECT_TYPE ObjectType,
|
IN POBJECT_TYPE ObjectType,
|
||||||
KPROCESSOR_MODE AccessMode);
|
IN KPROCESSOR_MODE AccessMode);
|
||||||
|
|
||||||
NTSTATUS STDCALL
|
NTSTATUS STDCALL
|
||||||
ObReferenceObjectByName(PUNICODE_STRING ObjectPath,
|
ObReferenceObjectByName(IN PUNICODE_STRING ObjectPath,
|
||||||
ULONG Attributes,
|
IN ULONG Attributes,
|
||||||
PACCESS_STATE PassedAccessState,
|
IN PACCESS_STATE PassedAccessState OPTIONAL,
|
||||||
ACCESS_MASK DesiredAccess,
|
IN ACCESS_MASK DesiredAccess OPTIONAL,
|
||||||
POBJECT_TYPE ObjectType,
|
IN POBJECT_TYPE ObjectType,
|
||||||
KPROCESSOR_MODE AccessMode,
|
IN KPROCESSOR_MODE AccessMode,
|
||||||
PVOID ParseContext,
|
IN OUT PVOID ParseContext OPTIONAL,
|
||||||
PVOID* ObjectPtr);
|
OUT PVOID* ObjectPtr);
|
||||||
|
|
||||||
|
VOID STDCALL
|
||||||
|
ObReleaseObjectSecurity(IN PSECURITY_DESCRIPTOR SecurityDescriptor,
|
||||||
|
IN BOOLEAN MemoryAllocated);
|
||||||
|
|
||||||
|
/*
|
||||||
|
NTSTATUS STDCALL
|
||||||
|
ObSetSecurityDescriptorInfo(IN PVOID Object,
|
||||||
|
IN PSECURITY_INFORMATION SecurityInformation,
|
||||||
|
IN PSECURITY_DESCRIPTOR SecurityDescriptor,
|
||||||
|
ULONG Param4,
|
||||||
|
IN POOL_TYPE PoolType,
|
||||||
|
IN PGENERIC_MAPPING GenericMapping);
|
||||||
|
*/
|
||||||
|
|
||||||
|
#endif /* ndef _INCLUDE_DDK_OBFUNCS_H */
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#ifndef _INCLUDE_DDK_SEFUNCS_H
|
#ifndef _INCLUDE_DDK_SEFUNCS_H
|
||||||
#define _INCLUDE_DDK_SEFUNCS_H
|
#define _INCLUDE_DDK_SEFUNCS_H
|
||||||
/* $Id: sefuncs.h,v 1.16 2002/02/22 13:34:36 ekohl Exp $ */
|
/* $Id: sefuncs.h,v 1.17 2002/02/22 17:57:17 ekohl Exp $ */
|
||||||
|
|
||||||
BOOLEAN STDCALL
|
BOOLEAN STDCALL
|
||||||
SeAccessCheck(IN PSECURITY_DESCRIPTOR SecurityDescriptor,
|
SeAccessCheck(IN PSECURITY_DESCRIPTOR SecurityDescriptor,
|
||||||
|
@ -54,6 +54,9 @@ SeCreateClientSecurity(IN struct _ETHREAD *Thread,
|
||||||
NTSTATUS STDCALL
|
NTSTATUS STDCALL
|
||||||
SeDeassignSecurity(IN OUT PSECURITY_DESCRIPTOR* SecurityDescriptor);
|
SeDeassignSecurity(IN OUT PSECURITY_DESCRIPTOR* SecurityDescriptor);
|
||||||
|
|
||||||
|
VOID STDCALL
|
||||||
|
SeDeleteAccessState(IN PACCESS_STATE AccessState);
|
||||||
|
|
||||||
VOID STDCALL
|
VOID STDCALL
|
||||||
SeDeleteObjectAuditAlarm(IN PVOID Object,
|
SeDeleteObjectAuditAlarm(IN PVOID Object,
|
||||||
IN HANDLE Handle);
|
IN HANDLE Handle);
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
; $Id: ntoskrnl.def,v 1.128 2002/02/20 20:16:49 ekohl Exp $
|
; $Id: ntoskrnl.def,v 1.129 2002/02/22 17:57:57 ekohl Exp $
|
||||||
;
|
;
|
||||||
; reactos/ntoskrnl/ntoskrnl.def
|
; reactos/ntoskrnl/ntoskrnl.def
|
||||||
;
|
;
|
||||||
|
@ -554,14 +554,14 @@ NtVdmControl@8
|
||||||
NtW32Call@20
|
NtW32Call@20
|
||||||
NtWaitForSingleObject@12
|
NtWaitForSingleObject@12
|
||||||
NtWriteFile@36
|
NtWriteFile@36
|
||||||
;ObAssignSecurity@16
|
ObAssignSecurity@16
|
||||||
;ObCheckCreateObjectAccess@28
|
;ObCheckCreateObjectAccess@28
|
||||||
;ObCheckObjectAccess@20
|
;ObCheckObjectAccess@20
|
||||||
;ObCreateObject@36
|
;ObCreateObject@36
|
||||||
ObCreateObject@20
|
ObCreateObject@20
|
||||||
;ObFindHandleForObject@20
|
;ObFindHandleForObject@20
|
||||||
;ObGetObjectPointerCount@4
|
ObGetObjectPointerCount@4
|
||||||
;ObGetObjectSecurity@12
|
ObGetObjectSecurity@12
|
||||||
;ObInsertObject@24
|
;ObInsertObject@24
|
||||||
ObMakeTemporaryObject@4
|
ObMakeTemporaryObject@4
|
||||||
ObOpenObjectByName@28
|
ObOpenObjectByName@28
|
||||||
|
@ -573,7 +573,7 @@ ObOpenObjectByPointer@28
|
||||||
ObReferenceObjectByHandle@24
|
ObReferenceObjectByHandle@24
|
||||||
ObReferenceObjectByName@32
|
ObReferenceObjectByName@32
|
||||||
ObReferenceObjectByPointer@16
|
ObReferenceObjectByPointer@16
|
||||||
;ObReleaseObjectSecurity@8
|
ObReleaseObjectSecurity@8
|
||||||
;ObSetSecurityDescriptorInfo@24
|
;ObSetSecurityDescriptorInfo@24
|
||||||
;PfxFindPrefix
|
;PfxFindPrefix
|
||||||
;PfxInitialize
|
;PfxInitialize
|
||||||
|
@ -846,9 +846,9 @@ SePublicDefaultDacl DATA
|
||||||
SeReleaseSubjectContext@4
|
SeReleaseSubjectContext@4
|
||||||
;SeSetAccessStateGenericMapping@8
|
;SeSetAccessStateGenericMapping@8
|
||||||
;SeSetSecurityDescriptorInfo@24
|
;SeSetSecurityDescriptorInfo@24
|
||||||
;SeSinglePrivilegeCheck@12
|
SeSinglePrivilegeCheck@12
|
||||||
SeSystemDefaultDacl DATA
|
SeSystemDefaultDacl DATA
|
||||||
;SeTokenImpersonationLevel@4
|
SeTokenImpersonationLevel@4
|
||||||
SeTokenType@4
|
SeTokenType@4
|
||||||
;SeUnlockSubjectContext@4
|
;SeUnlockSubjectContext@4
|
||||||
;SeUnregisterLogonSessionTerminatedRoutine@4
|
;SeUnregisterLogonSessionTerminatedRoutine@4
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
; $Id: ntoskrnl.edf,v 1.114 2002/02/20 20:16:49 ekohl Exp $
|
; $Id: ntoskrnl.edf,v 1.115 2002/02/22 17:57:57 ekohl Exp $
|
||||||
;
|
;
|
||||||
; reactos/ntoskrnl/ntoskrnl.def
|
; reactos/ntoskrnl/ntoskrnl.def
|
||||||
;
|
;
|
||||||
|
@ -554,14 +554,14 @@ NtVdmControl=NtVdmControl@8
|
||||||
NtW32Call=NtW32Call@20
|
NtW32Call=NtW32Call@20
|
||||||
NtWaitForSingleObject=NtWaitForSingleObject@12
|
NtWaitForSingleObject=NtWaitForSingleObject@12
|
||||||
NtWriteFile=NtWriteFile@36
|
NtWriteFile=NtWriteFile@36
|
||||||
;ObAssignSecurity=ObAssignSecurity@16
|
ObAssignSecurity=ObAssignSecurity@16
|
||||||
;ObCheckCreateObjectAccess=ObCheckCreateObjectAccess@28
|
;ObCheckCreateObjectAccess=ObCheckCreateObjectAccess@28
|
||||||
;ObCheckObjectAccess=ObCheckObjectAccess@20
|
;ObCheckObjectAccess=ObCheckObjectAccess@20
|
||||||
;ObCreateObject=ObCreateObject@36
|
;ObCreateObject=ObCreateObject@36
|
||||||
ObCreateObject=ObCreateObject@20
|
ObCreateObject=ObCreateObject@20
|
||||||
;ObFindHandleForObject=ObFindHandleForObject@20
|
;ObFindHandleForObject=ObFindHandleForObject@20
|
||||||
;ObGetObjectPointerCount=ObGetObjectPointerCount@4
|
ObGetObjectPointerCount=ObGetObjectPointerCount@4
|
||||||
;ObGetObjectSecurity=ObGetObjectSecurity@12
|
ObGetObjectSecurity=ObGetObjectSecurity@12
|
||||||
;ObInsertObject=ObInsertObject@24
|
;ObInsertObject=ObInsertObject@24
|
||||||
ObMakeTemporaryObject=ObMakeTemporaryObject@4
|
ObMakeTemporaryObject=ObMakeTemporaryObject@4
|
||||||
ObOpenObjectByName=ObOpenObjectByName@28
|
ObOpenObjectByName=ObOpenObjectByName@28
|
||||||
|
@ -573,7 +573,7 @@ ObfReferenceObject=@ObfReferenceObject@4
|
||||||
ObReferenceObjectByHandle=ObReferenceObjectByHandle@24
|
ObReferenceObjectByHandle=ObReferenceObjectByHandle@24
|
||||||
ObReferenceObjectByName=ObReferenceObjectByName@32
|
ObReferenceObjectByName=ObReferenceObjectByName@32
|
||||||
ObReferenceObjectByPointer=ObReferenceObjectByPointer@16
|
ObReferenceObjectByPointer=ObReferenceObjectByPointer@16
|
||||||
;ObReleaseObjectSecurity=ObReleaseObjectSecurity@8
|
ObReleaseObjectSecurity=ObReleaseObjectSecurity@8
|
||||||
;ObSetSecurityDescriptorInfo=ObSetSecurityDescriptorInfo@24
|
;ObSetSecurityDescriptorInfo=ObSetSecurityDescriptorInfo@24
|
||||||
;PfxFindPrefix
|
;PfxFindPrefix
|
||||||
;PfxInitialize
|
;PfxInitialize
|
||||||
|
@ -845,9 +845,9 @@ SePublicDefaultDacl DATA
|
||||||
SeReleaseSubjectContext=SeReleaseSubjectContext@4
|
SeReleaseSubjectContext=SeReleaseSubjectContext@4
|
||||||
;SeSetAccessStateGenericMapping=SeSetAccessStateGenericMapping@8
|
;SeSetAccessStateGenericMapping=SeSetAccessStateGenericMapping@8
|
||||||
;SeSetSecurityDescriptorInfo=SeSetSecurityDescriptorInfo@24
|
;SeSetSecurityDescriptorInfo=SeSetSecurityDescriptorInfo@24
|
||||||
;SeSinglePrivilegeCheck=SeSinglePrivilegeCheck@12
|
SeSinglePrivilegeCheck=SeSinglePrivilegeCheck@12
|
||||||
SeSystemDefaultDacl DATA
|
SeSystemDefaultDacl DATA
|
||||||
;SeTokenImpersonationLevel=SeTokenImpersonationLevel@4
|
SeTokenImpersonationLevel=SeTokenImpersonationLevel@4
|
||||||
SeTokenType=SeTokenType@4
|
SeTokenType=SeTokenType@4
|
||||||
;SeUnlockSubjectContext=SeUnlockSubjectContext@4
|
;SeUnlockSubjectContext=SeUnlockSubjectContext@4
|
||||||
;SeUnregisterLogonSessionTerminatedRoutine=SeUnregisterLogonSessionTerminatedRoutine@4
|
;SeUnregisterLogonSessionTerminatedRoutine=SeUnregisterLogonSessionTerminatedRoutine@4
|
||||||
|
|
|
@ -17,6 +17,33 @@
|
||||||
|
|
||||||
/* FUNCTIONS ***************************************************************/
|
/* FUNCTIONS ***************************************************************/
|
||||||
|
|
||||||
|
NTSTATUS STDCALL
|
||||||
|
ObAssignSecurity(IN PACCESS_STATE AccessState,
|
||||||
|
IN PSECURITY_DESCRIPTOR SecurityDescriptor,
|
||||||
|
IN PVOID Object,
|
||||||
|
IN POBJECT_TYPE Type)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
NTSTATUS STDCALL
|
||||||
|
ObGetObjectSecurity(IN PVOID Object,
|
||||||
|
OUT PSECURITY_DESCRIPTOR *SecurityDescriptor,
|
||||||
|
OUT PBOOLEAN MemoryAllocated)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
VOID STDCALL
|
||||||
|
ObReleaseObjectSecurity(IN PSECURITY_DESCRIPTOR SecurityDescriptor,
|
||||||
|
IN BOOLEAN MemoryAllocated)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
NTSTATUS STDCALL
|
NTSTATUS STDCALL
|
||||||
NtQuerySecurityObject(IN HANDLE ObjectHandle,
|
NtQuerySecurityObject(IN HANDLE ObjectHandle,
|
||||||
IN CINT SecurityObjectInformationClass,
|
IN CINT SecurityObjectInformationClass,
|
||||||
|
@ -67,5 +94,4 @@ NtSetSecurityObject(IN HANDLE Handle,
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* EOF */
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue