192{
198 struct
199 {
200 WCHAR DirectoryName[
sizeof "\\ObjectTypes\\" - 1];
207
209
211 {
216
218 ObTypeInitializer[
i].Length =
sizeof ObTypeInitializer[
i];
220 ObTypeInitializer[
i].MaintainHandleCount =
TRUE;
222
223
224
225
227 {
230 }
231
232 using OPEN_PROCEDURE =
decltype(ObTypeInitializer[
i].OpenProcedure);
233 ObTypeInitializer[
i].CloseProcedure =
CloseProc;
235 ObTypeInitializer[
i].DumpProcedure =
DumpProc;
236 ObTypeInitializer[
i].OpenProcedure = UseNT6Callbacks ? (OPEN_PROCEDURE)
OpenProc_NT6 : (OPEN_PROCEDURE)
OpenProc;
237 ObTypeInitializer[
i].ParseProcedure =
ParseProc;
240
241
244 {
245
246
251 ok(ObjectTypeHandle !=
NULL,
"ObjectTypeHandle = NULL\n");
253 {
257 {
258 using OPEN_PROCEDURE =
decltype(ObTypes[
i]->TypeInfo.OpenProcedure);
259 ObTypes[
i]->TypeInfo.CloseProcedure =
CloseProc;
261 ObTypes[
i]->TypeInfo.DumpProcedure =
DumpProc;
262 ObTypes[
i]->TypeInfo.OpenProcedure = UseNT6Callbacks ? (OPEN_PROCEDURE)
OpenProc_NT6 : (OPEN_PROCEDURE)
OpenProc;
263 ObTypes[
i]->TypeInfo.ParseProcedure =
ParseProc;
266 }
268 }
269 }
270
272 ok(ObTypes[
i] !=
NULL,
"ObType = NULL\n");
273 }
274
276}
static VOID NTAPI CloseProc(IN PEPROCESS Process, IN PVOID Object, IN ACCESS_MASK GrantedAccess, IN ULONG ProcessHandleCount, IN ULONG SystemHandleCount)
static NTSTATUS NTAPI ParseProc(IN PVOID ParseObject, IN PVOID ObjectType, IN OUT PACCESS_STATE AccessState, IN KPROCESSOR_MODE AccessMode, IN ULONG Attributes, IN OUT PUNICODE_STRING CompleteName, IN OUT PUNICODE_STRING RemainingName, IN OUT PVOID Context OPTIONAL, IN PSECURITY_QUALITY_OF_SERVICE SecurityQos OPTIONAL, OUT PVOID *Object)
static NTSTATUS NTAPI OpenProc_NT6(_In_ OB_OPEN_REASON OpenReason, _In_ KPROCESSOR_MODE AccessMode, _In_opt_ PEPROCESS Process, _In_ PVOID Object, _In_ PACCESS_MASK GrantedAccess, _In_ ULONG HandleCount)
static NTSTATUS NTAPI QueryNameProc(IN PVOID Object, IN BOOLEAN HasObjectName, OUT POBJECT_NAME_INFORMATION ObjectNameInfo, IN ULONG Length, OUT PULONG ReturnLength, IN KPROCESSOR_MODE AccessMode)
static UNICODE_STRING ObTypeName[NUM_OBTYPES]
static NTSTATUS NTAPI OpenProc(IN OB_OPEN_REASON OpenReason, IN PEPROCESS Process, IN PVOID Object, IN ACCESS_MASK GrantedAccess, IN ULONG HandleCount)
static VOID NTAPI DeleteProc(IN PVOID Object)
static VOID NTAPI DumpProc(IN PVOID Object, IN POB_DUMP_CONTROL DumpControl)
static BOOLEAN NTAPI OkayToCloseProc(IN PEPROCESS Process OPTIONAL, IN PVOID Object, IN HANDLE Handle, IN KPROCESSOR_MODE AccessMode)
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
#define NT_SUCCESS(StatCode)
#define OBJECT_TYPE_ALL_ACCESS
NTSTATUS NTAPI ObOpenObjectByName(IN POBJECT_ATTRIBUTES ObjectAttributes, IN POBJECT_TYPE ObjectType, IN KPROCESSOR_MODE AccessMode, IN PACCESS_STATE PassedAccessState, IN ACCESS_MASK DesiredAccess, IN OUT PVOID ParseContext, OUT PHANDLE Handle)
NTSTATUS NTAPI ObCreateObjectType(IN PUNICODE_STRING TypeName, IN POBJECT_TYPE_INITIALIZER ObjectTypeInitializer, IN PVOID Reserved, OUT POBJECT_TYPE *ObjectType)
NTSTATUS NTAPI ObReferenceObjectByHandle(IN HANDLE Handle, IN ACCESS_MASK DesiredAccess, IN POBJECT_TYPE ObjectType, IN KPROCESSOR_MODE AccessMode, OUT PVOID *Object, OUT POBJECT_HANDLE_INFORMATION HandleInformation OPTIONAL)
#define _WIN32_WINNT_VISTA
#define RtlCopyMemory(Destination, Source, Length)
#define RtlZeroMemory(Destination, Length)
#define STATUS_INVALID_PARAMETER
#define STATUS_OBJECT_NAME_COLLISION