407{
409
411
412 DPRINT(
"ArbInitializeArbiterInstance: '%S'\n", ArbiterName);
413
421
423 Arbiter->BusDeviceObject = BusDeviceObject;
424 Arbiter->Name = ArbiterName;
425 Arbiter->ResourceType = ResourceType;
426 Arbiter->TransactionInProgress =
FALSE;
427#if (NTDDI_VERSION >= NTDDI_VISTA)
428 Arbiter->OrderingName = OrderName;
429#endif
430
431
433 if (!Arbiter->MutexEvent)
434 {
436 goto Failure;
437 }
439
440#if (NTDDI_VERSION >= NTDDI_VISTA)
441
443 if (!Arbiter->TransactionEvent)
444 {
446 goto Failure;
447 }
449#endif
450
452 if (!Arbiter->AllocationStack)
453 {
455 goto Failure;
456 }
457 Arbiter->AllocationStackMaxSize =
PAGE_SIZE;
459 if (!Arbiter->Allocation)
460 {
462 goto Failure;
463 }
465
467 if (!Arbiter->PossibleAllocation)
468 {
470 goto Failure;
471 }
473
474 if (!Arbiter->TestAllocation)
476 if (!Arbiter->RetestAllocation)
478 if (!Arbiter->CommitAllocation)
480 if (!Arbiter->RollbackAllocation)
482 if (!Arbiter->BootAllocation)
484 if (!Arbiter->AddReserved)
486 if (!Arbiter->QueryConflict)
488 if (!Arbiter->StartArbiter)
490 if (!Arbiter->PreprocessEntry)
492 if (!Arbiter->AllocateEntry)
494 if (!Arbiter->GetNextAllocationRange)
496 if (!Arbiter->FindSuitableRange)
498 if (!Arbiter->AddAllocation)
500 if (!Arbiter->BacktrackAllocation)
502 if (!Arbiter->OverrideConflict)
504#if (NTDDI_VERSION >= NTDDI_VISTA)
505 if (!Arbiter->InitializeRangeList)
507#endif
508
511 {
512 DPRINT1(
"ArbInitializeArbiterInstance: ArbBuildAssignmentOrdering failed, Status %X\n",
Status);
513 goto Failure;
514 }
515
517
518Failure:
519 DPRINT1(
"ArbInitializeArbiterInstance: '%S' failed, Status %X\n", ArbiterName,
Status);
522}
BOOLEAN NTAPI ArbGetNextAllocationRange(_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_ALLOCATION_STATE ArbState)
VOID NTAPI ArbAddAllocation(_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_ALLOCATION_STATE ArbState)
NTSTATUS NTAPI ArbInitializeRangeList(_In_ PARBITER_INSTANCE Arbiter, _In_ ULONG ResourceCount, _In_ PCM_PARTIAL_RESOURCE_DESCRIPTOR Resources, _Inout_ PRTL_RANGE_LIST RangeList)
VOID NTAPI ArbDeleteArbiterInstance(_In_ PARBITER_INSTANCE Arbiter)
BOOLEAN NTAPI ArbFindSuitableRange(_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_ALLOCATION_STATE ArbState)
NTSTATUS NTAPI ArbQueryConflict(_In_ PARBITER_INSTANCE Arbiter, _In_ PDEVICE_OBJECT PhysicalDeviceObject, _In_ PIO_RESOURCE_DESCRIPTOR ConflictingResource, _Out_ PULONG ConflictCount, _Out_ PARBITER_CONFLICT_INFO *Conflicts)
NTSTATUS NTAPI ArbCommitAllocation(_In_ PARBITER_INSTANCE Arbiter)
BOOLEAN NTAPI ArbOverrideConflict(_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_ALLOCATION_STATE ArbState)
NTSTATUS NTAPI ArbPreprocessEntry(_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_ALLOCATION_STATE ArbState)
NTSTATUS NTAPI ArbTestAllocation(_In_ PARBITER_INSTANCE Arbiter, _Inout_ PLIST_ENTRY ArbitrationList)
NTSTATUS NTAPI ArbStartArbiter(_In_ PARBITER_INSTANCE Arbiter, _In_ PCM_RESOURCE_LIST StartResources)
NTSTATUS NTAPI ArbAddReserved(_In_ PARBITER_INSTANCE Arbiter, _In_opt_ PIO_RESOURCE_DESCRIPTOR Requirement, _In_opt_ PCM_PARTIAL_RESOURCE_DESCRIPTOR Resource)
VOID NTAPI ArbBacktrackAllocation(_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_ALLOCATION_STATE ArbState)
NTSTATUS NTAPI ArbBootAllocation(_In_ PARBITER_INSTANCE Arbiter, _Inout_ PLIST_ENTRY ArbitrationList)
NTSTATUS NTAPI ArbAllocateEntry(_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_ALLOCATION_STATE ArbState)
NTSTATUS NTAPI ArbRetestAllocation(_In_ PARBITER_INSTANCE Arbiter, _Inout_ PLIST_ENTRY ArbitrationList)
NTSTATUS NTAPI ArbBuildAssignmentOrdering(_Inout_ PARBITER_INSTANCE Arbiter, _In_ PCWSTR AllocationOrderName, _In_ PCWSTR ReservedResourcesName, _In_opt_ PARB_TRANSLATE_ORDERING TranslateOrderingFunction)
NTSTATUS NTAPI ArbRollbackAllocation(_In_ PARBITER_INSTANCE Arbiter)
#define NT_SUCCESS(StatCode)
#define ExAllocatePoolWithTag(hernya, size, tag)
#define KeInitializeEvent(pEvt, foo, foo2)
NTSYSAPI VOID NTAPI RtlInitializeRangeList(_Out_ PRTL_RANGE_LIST RangeList)
#define STATUS_INSUFFICIENT_RESOURCES