306{
308
310
311 DPRINT(
"ArbiterLibInitializeInstance: '%S'\n", ArbiterName);
312
320
322 Arbiter->BusDeviceObject = BusDeviceObject;
323 Arbiter->Name = ArbiterName;
324 Arbiter->ResourceType = ResourceType;
325 Arbiter->TransactionInProgress =
FALSE;
326#if (NTDDI_VERSION >= NTDDI_VISTA)
327 Arbiter->OrderingName = OrderName;
328#endif
329
330
332 if (!Arbiter->MutexEvent)
333 {
335 goto Failure;
336 }
338
339#if (NTDDI_VERSION >= NTDDI_VISTA)
340
342 if (!Arbiter->TransactionEvent)
343 {
345 goto Failure;
346 }
348#endif
349
351 if (!Arbiter->AllocationStack)
352 {
354 goto Failure;
355 }
356 Arbiter->AllocationStackMaxSize =
PAGE_SIZE;
358 if (!Arbiter->Allocation)
359 {
361 goto Failure;
362 }
364
366 if (!Arbiter->PossibleAllocation)
367 {
369 goto Failure;
370 }
372
373 if (!Arbiter->TestAllocation)
375 if (!Arbiter->RetestAllocation)
377 if (!Arbiter->CommitAllocation)
379 if (!Arbiter->RollbackAllocation)
381 if (!Arbiter->BootAllocation)
383 if (!Arbiter->AddReserved)
385 if (!Arbiter->QueryConflict)
387 if (!Arbiter->StartArbiter)
389 if (!Arbiter->PreprocessEntry)
391 if (!Arbiter->AllocateEntry)
393 if (!Arbiter->GetNextAllocationRange)
395 if (!Arbiter->FindSuitableRange)
397 if (!Arbiter->AddAllocation)
399 if (!Arbiter->BacktrackAllocation)
401 if (!Arbiter->OverrideConflict)
403#if (NTDDI_VERSION >= NTDDI_VISTA)
404 if (!Arbiter->InitializeRangeList)
406#endif
407
410 {
411 DPRINT1(
"ArbiterLibInitializeInstance: ArbiterLibDefaultAssignmentOrdering failed, Status %X\n",
Status);
412 goto Failure;
413 }
414
416
417Failure:
418 DPRINT1(
"ArbiterLibInitializeInstance: '%S' failed, Status %X\n", ArbiterName,
Status);
421}
NTSTATUS NTAPI ArbiterLibBootAllocation(_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_BOOT_ALLOCATION_PARAMETERS Parameters)
NTSTATUS NTAPI ArbiterLibInitializeRangeList(_In_ PARBITER_INSTANCE Arbiter, _In_ ULONG ResourceCount, _In_ PCM_PARTIAL_RESOURCE_DESCRIPTOR Resources, _Inout_ PRTL_RANGE_LIST RangeList)
NTSTATUS NTAPI ArbiterLibAllocateEntry(_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_ALLOCATION_STATE ArbState)
NTSTATUS NTAPI ArbiterLibRetestAllocation(_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_RETEST_ALLOCATION_PARAMETERS Parameters)
NTSTATUS NTAPI ArbiterLibTestAllocation(_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_TEST_ALLOCATION_PARAMETERS Parameters)
NTSTATUS NTAPI ArbiterLibAddReserved(_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_ADD_RESERVED_PARAMETERS Parameters)
NTSTATUS NTAPI ArbiterLibCommitAllocation(_In_ PARBITER_INSTANCE Arbiter)
VOID NTAPI ArbiterLibDeleteInstance(_In_ PARBITER_INSTANCE Arbiter)
NTSTATUS NTAPI ArbiterLibRollbackAllocation(_In_ PARBITER_INSTANCE Arbiter)
NTSTATUS NTAPI ArbiterLibPreprocessEntry(_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_ALLOCATION_STATE ArbState)
NTSTATUS NTAPI ArbiterLibStartArbiter(_In_ PARBITER_INSTANCE Arbiter, _In_ PCM_RESOURCE_LIST StartResources)
BOOLEAN NTAPI ArbiterLibOverrideConflict(_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_ALLOCATION_STATE ArbState)
NTSTATUS NTAPI ArbiterLibQueryConflict(_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_QUERY_CONFLICT_PARAMETERS Parameters)
BOOLEAN NTAPI ArbiterLibGetNextAllocationRange(_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_ALLOCATION_STATE ArbState)
Moves the working window to the next candidate range, walking the entry's alternatives in priority or...
VOID NTAPI ArbiterLibBacktrackAllocation(_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_ALLOCATION_STATE ArbState)
Undoes the last AddAllocation performed for this entry.
BOOLEAN NTAPI ArbiterLibFindSuitableRange(_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_ALLOCATION_STATE ArbState)
Finds a free range of the current candidate window in the arbiter's tentative allocation list.
NTSTATUS NTAPI ArbiterLibDefaultAssignmentOrdering(_Inout_ PARBITER_INSTANCE Arbiter, _In_ PCWSTR AllocationOrderName, _In_ PCWSTR ReservedResourcesName, _In_opt_ PARB_TRANSLATE_ORDERING TranslateOrderingFunction)
VOID NTAPI ArbiterLibAddAllocation(_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_ALLOCATION_STATE ArbState)
Records the chosen placement in the arbiter's tentative allocation list, owned by the requesting devi...
#define KeInitializeEvent(pEvt, foo, foo2)
NTSYSAPI VOID NTAPI RtlInitializeRangeList(_Out_ PRTL_RANGE_LIST RangeList)