VOID AhciBusChangeCallback( _In_ PVOID AdapterExtension, _In_opt_ PVOID Context, _In_ SHORT AddressType, _In_ PVOID Address, _In_ ULONG Status ) { PAHCI_ADAPTER_EXTENSION adapterExtension = (PAHCI_ADAPTER_EXTENSION)AdapterExtension; PSTOR_ADDR_BTL8 storAddrBtl8 = (PSTOR_ADDR_BTL8)Address; UNREFERENCED_PARAMETER(Context); UNREFERENCED_PARAMETER(AddressType); NT_ASSERT(AddressType == STOR_ADDRESS_TYPE_BTL8); if (Status == STOR_STATUS_SUCCESS) { // targeted rescan completed successfully return; } // Previous targeted rescan failed, retry it. if (IsPortValid(adapterExtension, storAddrBtl8->Path)) { StorPortStateChangeDetected(AdapterExtension, STATE_CHANGE_TARGET, (PSTOR_ADDRESS)&adapterExtension->PortExtension[storAddrBtl8->Path]->DeviceExtension[0].DeviceAddress, 0, AhciBusChangeCallback, NULL); } return; }
std::future<error_code> WorldServer::Connect( const uint32_t port, const time_duration timeout) { if (!IsPortValid(port)) { return GetInvalidPortResult(port); } _port = port; _timeout = timeout; auto result = _world_server.Connect(_port, _timeout); ExecuteProtocol(Protocol(_timeout)); return result; }