public void Dhcpv6RequestParamsTest() { using var pparam = new SafeCoTaskMemStruct <DHCPV6CAPI_PARAMS>(new DHCPV6CAPI_PARAMS { OptionId = DHCPV6_OPTION_ID.DHCPV6_OPTION_CLIENTID }); var recdParams = new DHCPV6CAPI_PARAMS_ARRAY { nParams = 1, Params = pparam }; uint sz = 1000; using var mem = new SafeCoTaskMemHandle(sz); Assert.That(Dhcpv6RequestParams(false, default, DhcpTests.adp.Id, IntPtr.Zero, recdParams, mem, ref sz), ResultIs.Successful);
public void DhcpRequestParamsTest() { var sendParams = default(DHCPCAPI_PARAMS_ARRAY); using var pparam = new SafeCoTaskMemStruct <DHCPAPI_PARAMS>(new DHCPAPI_PARAMS { OptionId = DHCP_OPTION_ID.OPTION_SUBNET_MASK }); //using var pparam = new SafeCoTaskMemStruct<DHCPAPI_PARAMS>(new DHCPAPI_PARAMS { OptionId = DHCP_OPTION_ID.OPTION_HOST_NAME }); var reqParams = new DHCPCAPI_PARAMS_ARRAY { nParams = 1, Params = pparam }; uint sz = 1000; using var mem = new SafeCoTaskMemHandle(sz); Assert.That(DhcpRequestParams(DHCPCAPI_REQUEST.DHCPCAPI_REQUEST_SYNCHRONOUS, default, adp.Id, IntPtr.Zero, sendParams, reqParams, mem, ref sz, null), ResultIs.Successful);
public void GetStorageDependencyInformationTest() { try { using var handle = Kernel32.CreateFile(@"\\.\PhysicalDrive2", Kernel32.FileAccess.GENERIC_READ, System.IO.FileShare.ReadWrite, default, System.IO.FileMode.Open, FileFlagsAndAttributes.FILE_ATTRIBUTE_NORMAL | FileFlagsAndAttributes.FILE_FLAG_BACKUP_SEMANTICS); Assert.That(handle, ResultIs.ValidHandle); using var mem = new SafeCoTaskMemStruct <STORAGE_DEPENDENCY_INFO>(new STORAGE_DEPENDENCY_INFO { Version = STORAGE_DEPENDENCY_INFO_VERSION.STORAGE_DEPENDENCY_INFO_VERSION_2 }); var flags = GET_STORAGE_DEPENDENCY_FLAG.GET_STORAGE_DEPENDENCY_FLAG_HOST_VOLUMES | GET_STORAGE_DEPENDENCY_FLAG.GET_STORAGE_DEPENDENCY_FLAG_DISK_HANDLE; var err = GetStorageDependencyInformation(handle.DangerousGetHandle(), flags, mem.Size, mem, out var sz); if (err == Win32Error.ERROR_INSUFFICIENT_BUFFER) { mem.Size = sz; err = GetStorageDependencyInformation(handle.DangerousGetHandle(), flags, mem.Size, mem, out sz); } err.ThrowIfFailed(); mem.AsRef().Entries.WriteValues(); } finally { //System.IO.File.Delete(tmpfn); } }
//******************************************************************************************** // Function: DrtEventCallback // // Description: Callback to handle general DRT Events. // These include registration state changes, leafset changes, and status changes. // //******************************************************************************************** private static void DrtEventCallback(IntPtr Param, bool TimedOut) { HRESULT hr; var Drt = GetCtx(Param); hr = DrtGetEventDataSize(Drt.hDrt, out var ulDrtEventDataLen); if (hr.Failed) { if (hr != HRESULT.DRT_E_NO_MORE) { Console.Write(" DrtGetEventDataSize failed: {0}\n", hr); } goto Cleanup; } using (var pEventData = new SafeCoTaskMemStruct <DRT_EVENT_DATA>(ulDrtEventDataLen)) { if (pEventData.IsInvalid) { Console.Write(" Out of memory\n"); goto Cleanup; } hr = DrtGetEventData(Drt.hDrt, ulDrtEventDataLen, pEventData); if (hr.Failed) { if (hr != HRESULT.DRT_E_NO_MORE) { Console.Write(" DrtGetEventData failed: {0}\n", hr); } goto Cleanup; } switch (pEventData.Value.type) { case DRT_EVENT_TYPE.DRT_EVENT_STATUS_CHANGED: switch (pEventData.Value.union.statusChange.status) { case DRT_STATUS.DRT_ACTIVE: SetConsoleTitle("DrtSdkSample Current Drt Status: Active"); if (g_DisplayEvents) { Console.Write(" DRT Status Changed to Active\n"); } break; case DRT_STATUS.DRT_ALONE: SetConsoleTitle("DrtSdkSample Current Drt Status: Alone"); if (g_DisplayEvents) { Console.Write(" DRT Status Changed to Alone\n"); } break; case DRT_STATUS.DRT_NO_NETWORK: SetConsoleTitle("DrtSdkSample Current Drt Status: No Network"); if (g_DisplayEvents) { Console.Write(" DRT Status Changed to No Network\n"); } break; case DRT_STATUS.DRT_FAULTED: SetConsoleTitle("DrtSdkSample Current Drt Status: Faulted"); if (g_DisplayEvents) { Console.Write(" DRT Status Changed to Faulted\n"); } break; } break; case DRT_EVENT_TYPE.DRT_EVENT_LEAFSET_KEY_CHANGED: if (g_DisplayEvents) { switch (pEventData.Value.union.leafsetKeyChange.change) { case DRT_LEAFSET_KEY_CHANGE_TYPE.DRT_LEAFSET_KEY_ADDED: Console.Write(" Leafset Key Added Event: {0}\n", pEventData.Value.hr); break; case DRT_LEAFSET_KEY_CHANGE_TYPE.DRT_LEAFSET_KEY_DELETED: Console.Write(" Leafset Key Deleted Event: {0}\n", pEventData.Value.hr); break; } } break; case DRT_EVENT_TYPE.DRT_EVENT_REGISTRATION_STATE_CHANGED: if (g_DisplayEvents) { Console.Write(" Registration State Changed Event: [hr: 0x%x, registration state: %i]\n", pEventData.Value.hr, pEventData.Value.union.registrationStateChange.state); } break; } } Cleanup: return; }
private static void InitDefaultLF(out SafeCoTaskMemStruct <LOGFONT> plf) { using SafeHDC hdc = GetDC(default);