Pinvoke
  • Bienvenida
  • desktopfunctions
    • advapi32
      • CREATE_PROCESS_FLAGS
      • ControlService
      • ConvertSecurityDescriptorToStringSecurityDescriptor
      • ConvertSidToStringSid
      • ConvertStringSidToSid
      • CopySid
      • CreateProcessAsUser
      • CreateProcessAsUserW
      • CreateProcessWithLogonW
      • CreateService
      • CreateWellKnownSid
      • CredRead
      • CredWrite
      • CryptGetDefaultProvider
      • DefaultPassword
      • DeleteService
      • DuplicateTokenEx
      • EncryptFile
      • BM_CLICK
      • ImpersonateLoggedOnUser
      • ImpersonateNamedPipeClient
      • InitiateSystemShutdown
      • InitiateSystemShutdownEx
      • IsTextUnicode
      • LOGON_TYPE
      • LSARetrievePrivateData
      • LogonUser
      • LookupAccountName
      • LookupAccountSid
      • LookupPrivilegeValue
      • LsaClose
      • LsaEnumerateAccountsWithUserRight
      • LsaLookupSids
      • LsaOpenPolicy
      • LsaStorePrivateData
      • PROV_ENUMALGS_EX
      • PrivilegeNames
      • QueryServiceConfig
      • QueryServiceConfig2
      • QueryServiceStatus
      • ReadEventLog
      • RegConnectRegistry
      • RegEnumKeyEx
      • RegOpenKey
      • RegUnLoadKey
      • RegistryChangeMonitor
      • ReportEvent
      • RevertToSelf
      • SIDs
      • SetNamedSecurityInfo
      • TreeSetNamedSecurityInfo
      • CERT_VERIFY_REV_CHAIN_FLAG
      • C# Signature:
      • COLOR_
      • changeserviceconfig
      • DAT_ASS
      • regopenkeyex
    • avifil32
      • EMR_
      • HomePage
      • IOCTL_USB_GET_NODE_CONNECTION_INFORMATION
    • cards
      • CardsWrapper
      • IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX
      • IOCTL_USB_GET_NODE_CONNECTION_NAME
      • IOCTL_USB_GET_NODE_INFORMATION
    • cfgmgr32
      • CM_Enumerate_Classes
      • UInteger
      • WM
      • HomePage
    • comctl32
      • CreatePropertySheetPage
      • ImageList_AddIcon
      • TaskDialog
      • _ContentBaseDefinition
    • comdlg32
      • CopyProgressResult
      • GetSaveFileName
      • CredUIReturnCodes
      • CryptProtectFlags
    • credui
      • CredPackAuthenticationBuffer
      • CredUIConfirmCredentials
      • CredUIParseUserName
      • CredUIPromptForCredentials
      • CredUIPromptForCredentialsW
      • CredUnPackAuthenticationBuffer
      • DISP_CHANGE
      • HRESULT
      • HomePage
    • crypt32
      • C# Signature:
      • CryptProtectData
      • CryptQueryObject
      • CryptUnprotectData
      • HookType
      • PFXImportCertStore
      • PROPID
    • dbghelp
      • MiniDumpWriteDump
    • dhcpsapi
      • DHCP_SEARCH_INFO
      • DhcpAddSubnetElementV5
      • DhcpDeleteClientInfo
      • DhcpEnumSubnetClients
      • DhcpEnumSubnetElementsV5
      • DhcpEnumSubnets
      • DhcpRemoveSubnetElementV5
      • RasError
      • RegType
    • dmcl40
      • C# Signature:
      • ResourceType
    • dnsapi
      • DNSQueryEx
      • DnsQuery
      • TCP_TABLE_CLASS
    • dtl
      • ThemeSize
    • dwmapi
      • DwmDefWindowProc
      • DwmEnableComposition
      • DwmGetColorizationColor
      • DwmGetColorizationParameters
      • DwmGetWindowAttribute
      • DwmIsCompositionEnabled
      • DwmSetColorizationParameters
      • DwmpSetColorization
      • _ContentBaseDefinition
      • VistaBridgeDemoApp
    • faultrep
      • tagREADYSTATE
    • gdi32
      • HomePage
      • C# Signature:
      • AlphaBlend
      • ArcTo
      • BitBlt
      • Chord
      • CombineRgn
      • CreateBitmap
      • C# Signature:
      • CreateCompatibleBitmap
      • IAuthenticate
      • CreateDC
      • CreateDIBSection
      • CreateEllipticRgn
      • C# Signature:
      • CreateFontIndirect
      • C# Signature:
      • C# Signature:
      • CreatePolygonRgn
      • CreateRectRgn
      • C# Signature:
      • CreateRoundRectRgn
      • CreateSolidBrush
      • C# Signature:
      • DeleteDC
      • DeleteObject
      • DeviceContext
      • EnumFontFamilies
      • EnumFontFamiliesEx
      • ExtEscape
      • ExtTextOut
      • FillRgn
      • FloodFill
      • GdipLoadImage
      • C# Signature:
      • GetCharABCWidthsFloat
      • Sample Code:
      • GetCharacterPlacement
      • GetCurrentObject
      • C# Signature:
      • GetDC
      • C# Signature:
      • C# Signature:
      • GetDeviceCaps
      • GetDeviceGammaRamp
      • GetFontData
      • GetFontUnicodeRanges
      • C# Signature:
      • GetOutlineTextMetrics
      • C# Signature:
      • GetRegionData
      • C# Signature:
      • C# Signature:
      • C# Signature:
      • GetTextExtentPoint
      • GetTextExtentPoint32
      • C# Signature:
      • GetTextMetrics
      • C# Signature:
      • C# Signature:
      • C# Signature:
      • GradientFill
      • HBitmap
      • IAutoComplete2
      • C# Signature:
      • LineTo
      • MapModes
      • MaskBlt
      • MoveToEx
      • OffsetRgn
      • C# Signature:
      • C# Signature:
      • C# Signature:
      • C# Signature:
      • C# Signature:
      • C# Signature:
      • C# Signature:
      • C# Signature:
      • C# Signature:
      • Polygon
      • C# Signature:
      • C# Signature:
      • PostScript
      • C# Signature:
      • RoundRect
      • IEnumIDList
      • C# Signature:
      • C# Signature:
      • SetDeviceGammaRamp
      • SetMapMode
      • SetPixel
      • SetStretchBltMode
      • C# Signature:
      • C# Signature:
      • C# Signature:
      • StretchBlt
      • C# Signature:
      • TextOut
      • WmfPlaceableFileHeader
      • C# Definition
      • IEnumSTATSTG
      • IOleClientSite
      • IOleObject
      • createfont
      • IOleWindow
      • getglyphoutline
      • getpixel
      • gluErrorString
      • IPersistFile
    • gdiplus
      • GdipBitmapSetPixel
      • GdipBitmapSetResolution
      • GdipBitmapUnlockBits
      • GdipCloneBitmapArea
      • GdipCreateBitmapFromFile
      • GdipCreateBitmapFromFileICM
      • GdipCreateBitmapFromGdiDib
      • GdipCreateBitmapFromGraphics
      • GdipCreateBitmapFromHBITMAP
      • GdipCreateBitmapFromHICON
      • GdiplusStartup
      • IServiceProvider
      • IShellIconOverlayIdentifier
      • IShellIten
    • getuname
      • GetUName
      • IShellView
    • glu32
      • IShellView3
      • IStream
      • _ContentBaseDefinition
    • glut32
      • ayy
    • gsapi
      • BROWSEINFO
      • gsapi_delete_instance
    • hhctrl
      • HtmlHelp
      • CAPTUREPARMS
      • CMINVOKECOMMANDINFOEX
    • hid
      • HidD_FlushQueue
      • HidD_FreePreparsedData
      • HidD_GetAttributes
      • HidD_GetFeature
      • HidD_GetIndexedString
      • HidD_GetInputReport
      • HidD_GetManufacturerString
      • HidD_GetNumInputBuffers
      • HidD_GetPhysicalDescriptor
      • HidD_GetPreparsedData
      • HidD_SetNumInputBuffers
    • hlink
      • CREDUI_INFO
      • CRYPTPROTECT_PROMPTSTRUCT
    • httpapi
      • HttpSetServiceConfiguration
      • DATA_BLOB
    • icmp
      • IcmpCloseHandle
      • IcmpCreateFile
      • IcmpSendEcho
      • EXIT_THREAD_DEBUG_INFO
      • GLOBAL_POWER_POLICY
    • imm32
      • GLOBAL_USER_POWER_POLICY
      • ImmGetConversionList
      • HomePage
      • IMAGE_SECTION_HEADER
    • iphlpapi
      • EnableRouter
      • GetAdaptersAddresses
      • GetAdaptersInfo
      • GetBestInterface
      • GetExtendedTcpTable
      • GetInterfaceInfo
      • GetIpAddrTable
      • GetIpNetTable
      • GetNetworkParams
      • MAX_HOSTNAME_LEN
      • INPUT_RECORD
      • PfBindInterfaceToIPAddress
      • PfCreateInterface
      • SendARP
      • UnenableRouter
      • KBDLLHOOKSTRUCT
    • iprop
      • MIXERLINECONTROLS
      • MixerCaps
      • MixerLineComponentType
    • irprops
      • BluetoothEnableDiscovery
      • BluetoothFindFirstDevice
      • BluetoothFindFirstRadio
      • BluetoothFindNextDevice
      • BluetoothFindRadioClose
      • BluetoothGetRadioInfo
      • BluetoothIsConnectable
      • BluetoothIsDiscoverable
      • PRINTER_DEFAULTS
      • PROCESS_INFORMATION
    • kernel32
      • RAS_STATS
      • APIGetVersionEx
      • AttachConsole
      • Beep
      • COORD
      • CTL_CODE
      • CheckRemoteDebuggerPresent
      • CloseHandle
      • CompareFileTime
      • ConnectNamedPipe
      • CopyFileEx
      • CreateDirectoryEx
      • CreateEvent
      • CreateFile
      • CreateFileMapping
      • CreateMemoryResourceNotification
      • CreateNamedPipe
      • CreatePipe
      • CreateProcessW
      • CreateRemoteThread
      • CreateSymbolicLink
      • CreateThread
      • CreateToolhelp32Snapshot
      • RECT
      • DebugActiveProcess
      • DebugActiveProcessStop
      • DefineDosDevice
      • DeleteCriticalSection
      • DeleteFile
      • DeviceIoControl
      • DriveLetter
      • DuplicateHandle
      • EnterCriticalSection
      • EnumResourceNames
      • EnumResourceTypes
      • FileStream
      • FileTimeToLocalFileTime
      • FileTimeToSystemTime
      • FindClose
      • C# Signature:
      • FindFirstChangeNotification
      • FindFirstFile
      • FindFirstFileEx
      • FindNextChangeNotification
      • FindNextFile
      • SHARE_INFO_503
      • FlsAlloc
      • C# Signature:
      • C# Signature:
      • FormatMessage
      • FormatMessageA
      • FreeLibrary
      • GetApplicationUserModelId
      • GetCPInfo
      • GetCPInfoEx
      • SHChangeNotifyEntry
      • GetCommModemStatus
      • GetConsoleFontSize
      • GetConsoleHistoryInfo
      • GetConsoleScreenBufferInfo
      • GetConsoleScreenBufferInfoEx
      • GetConsoleSelectionInfo
      • GetConsoleWindow
      • GetCurrencyFormat
      • GetCurrentConsoleFont
      • GetCurrentConsoleFontEx
      • GetCurrentProcess
      • GetCurrentProcessId
      • GetDriveType
      • GetExitCodeThread
      • GetFileInformationByHandle
      • GetFileInformationByHandleEx
      • GetFileSizeEx
      • GetFileTime
      • GetLastError
      • GetLocalTime
      • GetLogicalDriveStrings
      • GetModuleHandle
      • C# Signature:
      • GetNativeSystemInfo
      • GetOverlappedResult
      • GetPrivateProfileSection
      • GetPrivateProfileString
      • GetProcAddress
      • GetProcessId
      • GetProcessIdOfThread
      • GetProcessIoCounters
      • GetProcessTimes
      • GetSystemPowerStatus
      • GetSystemTime
      • C# Signature:
      • GetSystemTimes
      • GetTempFileName
      • GetTempPath
      • SOCKET_ADDRESS
      • GetThreadSelectorEntry
      • GetThreadTimes
      • GetTimeFormat
      • GetTimeZoneInformation
      • GetUserPreferredUILanguages
      • GetVersionEx
      • GetVolumeInformation
      • GetWindowsDirectory
      • GlobalAlloc
      • GlobalDeleteAtom
      • GlobalFree
      • GlobalLock
      • GlobalMemoryStatusEx
      • C# Signature:
      • SP_DEVICE_INTERFACE_DETAIL_DATA
      • IO_COUNTERS
      • InitializeCriticalSection
      • InitializeProcThreadAttributeList
      • IsProcessInJob
      • JOBOBJECT_BASIC_LIMIT_INFORMATION
      • LCMapStringEx
      • LeaveCriticalSection
      • ScsiPassThroughWithBuffers
      • LocalAlloc
      • C# Signature:
      • C# Signature:
      • C# Signature:
      • C# Signature:
      • C# Signature:
      • C# Signature:
      • MoveFile
      • MoveFileEx
      • MoveFileWithProgress
      • MoveMemory
      • MultiByteToWideChar
      • NetBIOS
      • OpenFile
      • OpenFileMapping
      • WIN32_FILE_ATTRIBUTE_DATA
      • OpenThread
      • Process32First
      • Process32Next
      • ProcessMemoryChunk
      • QueryDosDevice
      • QueryPerformanceCounter
      • QueryPerformanceFrequency
      • QueueUserAPC
      • ReadConsoleInput
      • ReadDirectoryChangesW
      • ReadFile
      • C# Signature:
      • ReadProcessMemory
      • WLAN_CONNECTION_PARAMETERS
      • C# Signature:
      • ResumeThread
      • SafeFileHandle
      • SearchPath
      • SetCommBreak
      • SetConsoleFont
      • SetConsoleMode
      • SetConsoleScreenBufferInfoEx
      • SetConsoleWindowInfo
      • C# Signature:
      • SetDllDirectory
      • SetFileInformationByHandle
      • SetFilePointer
      • SetFilePointerEx
      • SetFileTime
      • SetHandleInformation
      • SetLastError
      • SetLocalTime
      • SetNamedPipeHandleState
      • SetProcessWorkingSetSize
      • SetSystemTime
      • C# Signature:
      • SetThreadExecutionState
      • SetTimeZoneInformation
      • SetWaitableTimer
      • C# Signature:
      • coredll.CreateFile
      • coredll.CreateProcess
      • SuspendThread
      • SystemTimeToFileTime
      • TEST
      • UnmapViewOfFile
      • UpdateProcThreadAttribute
      • coredll.DeviceIoControl
      • C# Signature:
      • VirtualAlloc
      • VirtualAllocEx
      • javascript
      • VirtualProtectEx
      • VirtualQuery
      • kernel32.CreateFile
      • WOW64
      • kernel32.CreateProcess
      • C# Signature:
      • C# Signature:
      • C# Signature:
      • WaitForSingleObject
      • WinExec
      • Wow64DisableWow64FsRedirection
      • C# Signature:
      • WriteConsoleInput
      • C# Signature:
      • kernel32.DeviceIoControl
      • WriteFileEx
      • WriteFileGather
      • WritePrivateProfileSection
      • WritePrivateProfileString
      • sockaddr_in6_old
      • as
      • HomePage
      • Tyde
      • createmutex
      • getcomputername
      • getprivateprofilesectionnames
      • heapwalk
      • WriteProcessMemory
      • iswow64process
      • _ContentBaseDefinition
      • lstrcpy
      • lstrcpyn
      • delete
      • HomePage
      • _ContentBaseDefinition
      • javascript
    • mapi32
      • HomePage
      • MAPIAddress
      • MAPIDeleteMail
      • MAPIDetails
      • MAPIFindNext
      • MAPIFreeBuffer
      • MAPILogoff
      • MAPILogon
      • MAPIReadMail
      • MAPIResolveName
      • MAPISaveMail
      • MAPISendDocuments
      • MAPISendMail
      • _ContentBaseDefinition
      • javascript
    • mpr
      • DllImport
      • _ContentBaseDefinition
      • WNetAddConnection2
      • WNetAddConnection3
      • WNetEnumResource
      • WNetGetConnection
      • cfgmgr32
      • javascript
    • mqrt
      • MQGetQueueSecurity
      • MQSetQueueSecurity
    • mscorsn
      • _ContentBaseDefinition
      • GetOpenFileName
    • msdrm
      • HomePage
      • javascript
      • HomePage
    • msi
      • _ContentBaseDefinition
      • MsiGetFileSignatureInformation
      • MsiGetProductInfo
      • MsiQueryProductState
      • javascript
      • HomePage
    • msports
      • SerialDisplayAdvancedSettings
    • msvcrt
      • javascript
      • C# Signature:
      • _stat
      • memcmp
      • memcpy
      • memmove
      • sprintf
    • netapi32
      • DsAddressToSiteNames
      • DsGetDcName
      • DsGetDcNext
      • DsGetDcOpen
      • _ContentBaseDefinition
      • LsaQueryInformationPolicy
      • NetApiBufferFree
      • NetGetDCName
      • NetGetJoinInformation
      • NetJoinDomain
      • NetLocalGroupAddMembers
      • NetLocalGroupEnum
      • NetLocalGroupGetMembers
      • NetRemoteTOD
      • NetRenameMachineInDomain
      • NetSessionEnum
      • C# Signature:
      • NetShareEnum
      • NetShareSetInfo
      • NetUserAdd
      • NetUserGetInfo
      • NetUserGetLocalGroups
      • NetWkstaGetInfo
      • javascript
      • javascript
      • netservergetinfo
      • netsharegetinfo
      • netuseadd
    • ntdll
      • InitializeObjectAttributes
      • NtCreateFile
      • NtCreateSection
      • NtGetContextThread
      • NtMapViewOfSection
      • NtOpenDirectoryObject
      • C# Signature:
      • NtQueryInformationFile
      • NtQueryInformationProcess
      • NtQueryObject
      • NtQuerySymbolicLinkObject
      • NtQuerySystemInformation
      • NtQuerySystemTime
      • NtQueryVirtualMemory
      • NtRaiseHandError
      • NtResumeProcess
      • Boo Signature:
      • Boo Signature:
      • NtSuspendProcess
      • NtTerminateProcess
      • Boo Signature:
      • PROCESSINFOCLASS
      • RtlAdjustPrivilege
      • RtlCreateProcessParametersEx
      • RtlGetVersion
      • RtlInitializeSid
      • RtlMoveMemory
      • SYSTEM_INFORMATION_CLASS
      • _ContentBaseDefinition
    • ntdsapi
      • DsCrackNames
      • DsGetDomainControllerInfo
      • _ContentBaseDefinition
      • HomePage
      • javascript
    • odbc32
      • AddFontMemResourceEx
      • SQLAllocEnv
      • SQLAllocHandle
      • SQLBindCol
      • SQLDataSources
      • SQLFreeHandle
      • SQLSetEnvAttr
      • CreateCompatibleDC
      • HomePage
    • odbccp32
      • SQLConfigDataSource
      • SQLGetPrivateProfileString
      • SQLInstallerError
      • SQLSetConfigMode
      • SetBitmapBits
    • ole32
      • CLIPFORMAT
      • CoCreateGuid
      • CoCreateInstance
      • CoCreateInstanceEx
      • C# Signature:
      • CoGetClassObject
      • C# Signature:
      • CoInitializeEx
      • _ContentBaseDefinition
      • C# Signature:
      • C# Signature:
      • component-specs
      • C# Signature:
      • CreateILockBytesOnHGlobal
      • coredll
      • FmtIdToPropStgName
      • C# Signature:
      • GetHGlobalFromILockBytes
      • gdi32
      • C# Signature:
      • C# Signature:
      • C# Signature:
      • C# Signature:
      • C# Signature:
      • C# Signature:
      • C# Signature:
      • C# Signature:
      • C# Signature:
      • C# Signature:
      • C# Signature:
      • C# Signature:
      • C# Signature:
      • C# Signature:
      • C# Signature:
      • OleSave
      • OleSaveToStream
      • C# Signature:
      • C# Signature:
      • STGM
      • C# Signature:
      • C# Signature:
      • C# Signature:
      • C# Signature:
      • C# Signature:
      • C# Signature:
      • C# Signature:
      • StgOpenStorage
      • javascript
      • C# Signature:
      • C# Signature:
      • HomePage
      • Win2K
      • C# Signature:
      • C# Signature:
      • _ContentBaseDefinition
      • coregistermessagefilter
      • javascript
      • _ContentBaseDefinition
      • oledraw
    • oleacc
      • AccessibleChildren
      • AccessibleObjectFromPoint
      • AccessibleObjectFromWindow
      • HomePage
      • IAccessible
      • ObjectFromLresult
      • SystemAccessibleObject
      • WindowFromAccessibleObject
      • _ContentBaseDefinition
      • javascript
    • oleaut32
      • GetActiveObject
      • javascript
      • SysFreeString
      • UnRegisterTypeLib
      • HomePage
      • _ContentBaseDefinition
    • opengl32
      • WinXP
      • javascript
      • _ContentBaseDefinition
      • wglUseFontOutlines
    • powrprof
      • GetCurrentPowerPolicies
      • javascript
      • PowerReadACDefaultIndex
      • PowerReadACValueIndex
      • PowerReadDCDefaultIndex
      • PowerReadDCValue
      • PowerReadDCValueIndex
      • PowerReadDescription
      • PowerReadPossibleDescription
      • PowerReadPossibleFriendlyName
      • PowerReadPossibleValue
      • PowerReadSettingAttributes
      • PowerReadValueIncrement
      • PowerReadValueMax
      • PowerReadValueMin
      • PowerReadValueUnitsSpecifier
      • SetSuspendState
      • _ContentBaseDefinition
      • _ContentBaseDefinition
    • printui
      • javascript
    • propsys
      • HomePage
    • psapi
      • EnumProcesses
      • GetPerformanceInfo
      • GetProcessImageFileName
      • _ContentBaseDefinition
      • javascript
    • pstorec
      • NetworkInformation
      • javascript
    • query
      • LoadIFilter
    • quickusb
      • HomePage
      • _ContentBaseDefinition
    • rasapi32
      • javascript
      • RasDial
      • RasEnumConnections
      • RasEnumDevices
      • RasEnumEntries
      • RasGetConnectionStatistics
      • RasGetEntryDialParams
      • RasHangUp
      • _ContentBaseDefinition
    • rpcrt4
      • javascript
      • 0
      • DLLs
      • UuidCreate
      • UuidCreateSequential
      • FindWindow
      • GetClipboardData
    • secur32
      • GetThreadContext
      • InitializeSecurityContext
      • LsaCallAuthenticationPackage
      • LsaEnumerateLogonSessions
      • LsaLogonUser
      • HomePage
      • LoadLibrary
    • setupapi
      • CM_Get_Device_ID
      • CM_Get_Device_IDA
      • CM_Get_Parent
      • DeviceHandle
      • SetupCopyOEMInf
      • SetupDiCallClassInstaller
      • SetupDiClassGuidsFromName
      • SetupDiClassNameFromGuid
      • SetupDiDestroyDeviceInfoList
      • SetupDiEnumDeviceInfo
      • SetupDiEnumDeviceInterfaces
      • SetupDiGetClassDevs
      • SetupDiGetDeviceInstallParams
      • SetupDiGetDeviceInstanceId
      • SetupDiGetDeviceInterfaceDetail
      • SetupDiGetDeviceRegistryProperty
      • SetupDiOpenClassRegKeyEx
      • SetupDiSetClassInstallParams
      • SetupFindFirstLine
      • SetupFindNextMatchLine
      • SetupUninstallOEMInf
      • OpenProcess
      • ReadProcessMemory
      • StopWatch
      • StringBuilder
    • shell32
      • API
      • APPBARDATA
      • CSIDL
      • VB6
      • CommandLineToArgvW
      • DLLGETVERSIONINFO
      • VirtualProtect
      • VirtualQueryEx
      • ExtractAssociatedIcon
      • ExtractIcon
      • ExtractIconEx
      • FileSystemWatcher
      • HChangeNotifyEventID
      • HChangeNotifyFlags
      • WR5SmA
      • ITaskbarList
      • ITaskbarList2
      • ITaskbarList3
      • C# Signature:
      • User-Defined Types:
      • PickIconDlg
      • SHAddToRecentDocs
      • SHAppBarMessage
      • SHBindToParent
      • SHBrowseForFolder
      • SHCNRF
      • SHChangeNotify
      • SHChangeNotifyRegister
      • SHCreateDirectoryEx
      • SHCreateItemFromIDList
      • SHCreateItemFromParsingName
      • SHCreateItemWithParent
      • WriteFile
      • SHEmptyRecycleBin
      • SHFileOperation
      • SHFormatDrive
      • C# Signature:
      • SHGetDesktopFolder
      • SHGetFileInfo
      • SHGetFolderPath
      • SHGetImageList
      • SHGetKnownFolderPath
      • SHGetNameFromIDList
      • SHGetRealIDL
      • SHGetSpecialFolderLocation
      • SHGetStockIconInfo
      • C# Signature:
      • SHParseDisplayName
      • SHQueryRecycleBin
      • SHSetKnownFolderPath
      • SHSetUnreadMailCount
      • ShellExecute
      • ShellExecuteEx
      • Shell_NotifyIcon
      • THUMBBUTTON
      • WriteProcessMemory
      • begerw4224sda3r
      • coredll
      • kernel32
    • shlwapi
      • AssocQueryString
      • obfuscate-pinvoke-150x300
      • IsOS
      • PathCanonicalize
      • PathCombine
      • PathCompactPath
      • PathCompactPathEx
      • SHAutoComplete
      • SHMessageBoxCheck
      • UrlCreateFromPath
      • swd
      • user32
    • twain_32
      • yArra
    • unicows
      • HomePage
    • urlmon
      • CoInternetSetFeatureEnabled
      • CopyMemory
      • FindMimeFromData
      • Structures
      • URLDownloadToFile
      • UrlMkGetSessionOption
      • javascript
      • HomePage
      • javascript
    • user32
      • 123
      • ActivateKeyboardLayout
      • AdjustWindowRect
      • AlphaWindow
      • AnimateWindow
      • AppendMenu
      • AttachThreadInput
      • BeginDeferWindowPos
      • BeginPaint
      • obfuscate-pinvoke-150x300
      • BringWindowToTop
      • C# Signature:
      • C# Signature:
      • _ContentBaseDefinition
      • ChangeDisplaySettings
      • ChangeDisplaySettingsEx
      • ChangeDisplaySettingsFlags
      • ClientRectangle
      • ClientToScreen
      • ClipCursor
      • CloseHandle
      • C# Signature:
      • CopyIcon
      • C# Signature:
      • CreateCaret
      • CreateDesktop
      • CreateIcon
      • CreateIconFromResourceEx
      • CreateIconIndirect
      • CreatePopupMenu
      • C# Signature:
      • javascript
      • Curseur
      • DefWindowProc
      • DeferWindowPos
      • DestroyWindow
      • DrawAnimatedRects
      • HomePage
      • C# Signature:
      • C# Signature:
      • EmptyClipboard
      • EnumChildWindows
      • _ContentBaseDefinition
      • EnumDesktops
      • EnumDisplayDevices
      • EnumDisplayMonitors
      • EnumDisplaySettings
      • EnumDisplaySettingsEx
      • EnumProc
      • EnumReport
      • javascript
      • ExitWindowsEx
      • FillRect
      • FindWindowA
      • FindWindowEx
      • Flags
      • FlashTest
      • FlashWindow
      • FlashWindowEx
      • GetActiveWindow
      • GetAltTabInfo
      • GetAsyncKeyState
      • GetClassInfo
      • GetClassInfoEx
      • GetClassName
      • GetClientRect
      • GetComboBoxInfo
      • GetCurrentThread
      • GetCursor
      • GetCursorPos
      • GetDC
      • GetDesktopWindow
      • GetForegroundwindow
      • GetKeyState
      • GetKeyboardLayoutList
      • GetLastInputInfo
      • GetMenu
      • GetMenuItemInfo
      • GetMenuString
      • GetMessage
      • GetMessageExtraInfo
      • HomePage
      • GetMonitorInfo
      • GetMouseMovePointsEx
      • _ContentBaseDefinition
      • GetRawInputData
      • GetRawInputDeviceInfo
      • GetRawInputDeviceList
      • GetScrollBarInfo
      • GetScrollPos
      • GetSystemMenu
      • GetSystemMetrics
      • GetWindow
      • javascript
      • GetWindowDC
      • GetWindowInfo
      • GetWindowLong
      • GetWindowLongPtr
      • GetWindowModuleFileName
      • GetWindowPlacement
      • GetWindowPos
      • GetWindowRgn
      • GetWindowTex
      • _ContentBaseDefinition
      • GetWindowThreadProcessId
      • HandleRef
      • HomePage
      • HelloWin
      • HideCaret
      • _ContentBaseDefinition
      • IntPtr
      • InvalidateRect
      • IsCharAlpha
      • IsCharLower
      • IsIconic
      • IsWindowEnabled
      • KeyboardKey
      • KeyboardProc
      • LoadCursor
      • LoadCursorFromFile
      • LoadIcon
      • LoadImage
      • LockWorkStation
      • C# Definition:
      • MapVirtualKeyEx
      • MessageBeep
      • MessageBox
      • C# Signature:
      • C# Signature:
      • MessageBoxTimeout
      • C# Definition:
      • MoveWindow
      • NativeMethods
      • OpenIcon
      • a&gt
      • OpenWindowStation
      • PeekMessage
      • PostMessage
      • C# Signature:
      • PresentationFramework
      • PrintWindow
      • PropSheet
      • ReadProcessMemory
      • RealGetWindowClass
      • RegisterClass
      • C# Signature:
      • RegisterDeviceNotification
      • RegisterHotKey
      • javascript
      • RegisterPowerSettingNotification
      • RegisterRawInputDevices
      • RegisterTouchWindow
      • ReleaseDC
      • RemoveClipboardFormatListener
      • HomePage
      • SB_GETTEXT
      • SendDlgItemMessage
      • SendInput
      • SendMessage
      • C# Signature:
      • SendMessageTimeout
      • SetActivewindow
      • C# Signature:
      • SetCursor
      • SetCursorPos
      • SetFocus
      • SetForegroundWindow
      • SetKeyboardState
      • _ContentBaseDefinition
      • SetProcessDPIAware
      • C# Signature:
      • SetWinEventHook
      • SetWindowDisplayAffinity
      • SetWindowLong
      • SetWindowLongPtr
      • SetWindowPlacement
      • SetWindowPos
      • SetWindowRgn
      • SetWindowsHookEx
      • ShellProc
      • ShowWindow
      • ShowWindowAsync
      • ShowWithoutActivation
      • SwapMouseButton
      • SwitchToThisWindow
      • SystemIcons
      • javascript
      • TCITEM
      • C# Signature:
      • TileWindows
      • TrackMouseEvent
      • TrackPopupMenuEx
      • TranslateMessage
      • HomePage
      • UIntPtr
      • UIntrPtr
      • UnhookWindowsHookEx
      • UnregisterClass
      • UpdateLayeredWindow
      • VkKeyScan
      • VkKeyScanEx
      • WaitForInputIdle
      • _ContentBaseDefinition
      • WindowFromPoint
      • WindowsAPI
      • WindowsApplication1
      • javascript
      • javascript
      • cards
      • CoLoadLibrary
      • Constants
      • Enums
      • HomePage
      • StgOpenStorageEx
      • enumwindows
      • Structures
      • findwindow
      • getkeyboardstate
      • getwindowrect
      • _ContentBaseDefinition
      • mouse_event
      • javascript
      • ole32
      • HomePage
      • saa
      • sdfasdfasdfa
      • setlayeredwindowattributes
      • _ContentBaseDefinition
      • javascript
      • HomePage
      • _ContentBaseDefinition
      • javascript
      • _ContentBaseDefinition
      • wow
      • C# Signature:
    • userenv
      • CreateEnvironmentBlock
      • CreateProfile
      • GetAppliedGPOList
      • GetProfilesDirectory
      • GetUserProfileDirectory
      • LoadUserProfile
      • C# Signature:
      • javascript
      • HomePage
    • uxtheme
      • CloseThemeData
      • DrawThemeText
      • GetThemeAppProperties
      • GetThemeFilename
      • GetThemeInt
      • GetThemePosition
      • GetThemePropertyOrigin
      • GetThemeSysBool
      • GetUserColorPreference
      • GetWindowTheme
      • HitTestThemeBackground
      • _ContentBaseDefinition
      • OpenThemeData
      • OpenThemeFile
      • SetSystemVisualStyle
      • SetUserColorPreference
      • javascript
      • _ContentBaseDefinition
    • wer
      • _ContentBaseDefinition
    • winfax
      • FaxEnableRoutingMethod
      • FaxSetJob
      • _ContentBaseDefinition
      • javascript
    • winhttp
      • WINHTTP_CURRENT_USER_IE_PROXY_CONFIG
      • WinHttpCloseHandle
      • WinHttpGetProxyForUrl
      • _ContentBaseDefinition
    • wininet
      • FtpCreateDirectory
      • FtpFindFirstFile
      • FtpGetFile
      • javascript
      • VB Signature:
      • INTERNET_FLAG_RELOAD
      • InternetCloseHandle
      • InternetConnect
      • InternetFindNextFile
      • C# Signature:
      • _ContentBaseDefinition
      • internetsetoption
      • javascript
    • winmm
      • HomePage
      • LD83
      • MIDIHDR
      • MMRESULT
      • MixerGetDevCaps
      • MixerGetID
      • MixerGetLineControls
      • C# Signature:
      • MixerSetControlDetails
      • _ContentBaseDefinition
      • WIMMessages
      • Constants
      • HomePage
      • mciSendString
      • midiInGetDevCaps
      • C# Signature:
      • midiOutGetDevCaps
      • midiOutLongMsg
      • midiOutOpen
      • midiStreamClose
      • midiStreamOut
      • mixerGetControlDetails
      • mixerGetLineInfo
      • mixerOpen
      • timeSetEvent
      • waveInReset
      • waveInUnprepareHeader
      • waveOutGetDevCaps
      • VB Signature:
      • waveOutOpen
      • waveOutPrepareHeader
    • winscard
      • Structures
      • SCardConnect
      • SCardDisconnect
      • SCardEstablishContext
      • SCardGetAttrib
      • SCardListReaders
      • SCardReleaseContext
      • WinSCard
      • _ContentBaseDefinition
      • javascript
      • scardtransmit
    • winspool
      • C# Signature:
      • DeleteMonitor
      • DocumentProperties
      • EnumJobs
      • EnumPorts
      • EnumPrintProcessorDatatypes
      • EnumPrinters
      • GetDefaultPrinter
      • C# Signature:
      • C# Signature:
      • C# Signature:
      • GetPrinterDriverDir
      • HomePage
      • ResetPrinter
      • SetDefaultPrinter
      • SetJob
      • StartDocPrinter
      • _ContentBaseDefinition
      • javascript
    • wintrust
      • IsCatalogFile
      • WinVerifyTrust
      • _ContentBaseDefinition
    • winusb
      • C# Signature:
      • WinUsb_QueryDeviceInformation
    • wlanapi
      • EapHostPeerInvokeConfigUI
      • coredll
      • WlanConnect
      • WlanDeleteProfile
      • WlanGetProfileList
      • WlanScan
      • WlanSetProfileList
      • javascript
    • ws2_32
      • INTERFACE_INFO
      • InetNtop
      • User-Defined Types:
      • WSAAddressToString
      • WSAGetLastError
      • WSAPROTOCOL_INFO
      • WSASocket
      • WSAStringToAddress
      • bind
      • connect
      • inet_pton
      • kernel32
      • recv
      • send
    • wtsapi32
      • CharSet
      • WTSEnumerateProcesses
      • WTSOpenServer
      • WTSSendMessage
      • WTS_PROCESS_INFO
      • ERazMA
      • ExtendedFileInfo
    • xolehlp
      • HomePage
  • directory
    • constants
      • SHCreateProcessAsUserW
      • CB_
      • _ContentBaseDefinition
      • coredll
      • javascript
      • user32
      • ERROR_ACCESS_DENIED
      • GUID_DEVINTERFACE
      • GUID_DEVINTERFACE_DISK
      • GUID_DEVINTERFACE_HUBCONTROLLER
      • GUIDs
      • HWND
      • VB Constants:
      • HomePage
      • IDC_
      • VB Constants:
      • VB Constants:
      • VB Constants:
      • VB Constants:
      • VB Constants:
      • VB Constants:
      • VB Constants:
      • IMAGE_
      • INVALID_HANDLE_VALUE
      • IOCTL_GET_HCD_DRIVERKEY_NAME
      • IOCTL_STORAGE_GET_DEVICE_NUMBER
      • IOCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION
      • IOCTL_USB_GET_NODE_CONNECTION_DRIVERKEY_NAME
      • _ContentBaseDefinition
      • javascript
      • HomePage
      • _ContentBaseDefinition
      • IOCTL_USB_GET_ROOT_HUB_NAME
      • LR_
      • MAPI
      • MAX_PATH
      • OPEN_EXISTING
      • PROPERTYKEY
      • RB
      • SECURITY_MANDATORY
      • C# Constants:
      • SW
      • ShellAPI
      • UInt32
      • HomePage
      • USB_NODE_CONNECTION_INFORMATION
      • Important Note about .NET and Win32 error-code reading:
      • VB6
      • Win32ErrorCodes
      • WinNT
    • delegates
      • BrowseCallbackProc
      • C# Definition:
      • EnumWindowsProc
      • _ContentBaseDefinition
      • HookProc
      • LowLevelKeyboardProc
      • LowLevelMouseProc
      • MsgBoxCallback
      • WndProc
      • javascript
    • enums
      • ACCESS_MASK
      • ACEs
      • ADDRESS_FAMILIES
      • AutoCompleteFlags
      • BrowseInfoFlags
      • CHUNKSTATE
      • CHUNK_BREAKTYPE
      • CLSCTX
      • C# Definition:
      • CREDUI_FLAGS
      • ClassStyles
      • C# Definition:
      • C# Definition:
      • Boshit
      • CREATE_GAY
      • CreateWindowStation
      • CryptProtectPromptFlags
      • DIB_Color_Mode
      • DrawCaption
      • C# Definition:
      • C# Definition:
      • C# Definition:
      • C# Definition:
      • DOCHOSTUITYPE
      • DWMWINDOWATTRIBUTE
      • DisplayDeviceStateFlags
      • DwmGetWindowAttribute
      • DwmSetWindowAttribute
      • FILEOP_FLAGS
      • FILE_INFO_BY_HANDLE_CLASS
      • FINDEX_INFO_LEVELS
      • FINDEX_SEARCH_OPS
      • FileFuncFlags
      • FileMapAccessType
      • GetClipboardDataFlags
      • GetObjectOptions
      • EnumDesktopWindows
      • EnumYoMama
      • GetModuleHandleW
      • IFILTER_FLAGS
      • IFILTER_INIT
      • IFilterReturnCodes
      • InternetGetConnectedStateFlags
      • Job_Control
      • KeyFlags
      • C# Definition:
      • LoadLibraryFlags
      • LocalMemoryFlags
      • MEDIA_TYPE
      • MIB_TCP_STATE
      • MessageBoxOptions
      • MessageBoxResult
      • MoveFileFlags
      • NET_API_STATUS
      • C# Definition:
      • OLECMDEXECOPT
      • OLECMDF
      • OLECMDID
      • OpenFile
      • OpenSaveFileDialgueFlags
      • PARTITION_TYPE
      • POWER_ACTION
      • C# Definition:
      • GetNextWindow
      • PageProtection
      • PrinterEnumFlags
      • ProcessAccess
      • GetWindowContextHelpId
      • GetWindowText
      • ResourceDisplaytype
      • ResourceScope
      • Hello
      • SC_ACTION_TYPE
      • SERVICE_ACCESS
      • SERVICE_TYPES
      • SFGAOF
      • SHCNE
      • SHCNF
      • SHGSI
      • SHSTOCKICONID
      • SIIGBF
      • SLR_FLAGS
      • SPI
      • SPIF
      • STARTF
      • STGM
      • SYMBOLIC_LINK_FLAG
      • SendMessageTimeoutFlags
      • SetWindowPosFlags
      • ShareType
      • ShowWindowCommand
      • ShowWindowCommands
      • SizingWindowSide
      • SnapshotFlags
      • StgmConstants
      • SystemMetric
      • HomePage
      • TOKEN_ELEVATION_TYPE
      • TOKEN_INFORMATION_CLASS
      • TOKEN_TYPE
      • TernaryRasterOperations
      • ThemeAppProperties
      • OpenProcess
      • USB_CONNECTION_STATUS
      • USB_DEVICE_SPEED
      • VARENUM
      • VK
      • VirtualKeys
      • WTSINFO
      • WaveHdrFlags
      • WinUser
      • WindowHitTestRegions
      • WindowLongFlags
      • WindowStyles
      • WindowStylesEx
      • WindowsMessages
      • RegisterHotKeyaspx
      • RsDsz
    • interfaces
      • ActiveX
      • DWebBrowserEvents2
      • SetParent
      • IAccessibleObject
      • IActiveDesktop
      • IAdviseSink
      • SystemParametersInfo
      • TransparencyKey
      • IBindStatusCallback
      • IBinding
      • ICatInformation
      • ICatRegister
      • IClassFactory
      • IClassFactory2
      • IContextMenu
      • IContextMenu2
      • IContextMenu3
      • C# Definition:
      • ICustomDoc
      • C# Definition:
      • IDeskBand
      • IDeskBand2
      • IDocHostShowUI
      • IDocHostUIHandler
      • IDocHostUIHandler2
      • IEnumCATEGORYINFO
      • C# Definition:
      • IEnumGUID
      • WinHelp
      • IEnumSTATPROPSTG
      • Yegor
      • IEnumUnknown
      • IEnumWIA_DEV_INFO
      • IExtractIcon
      • IExtractImage
      • IFilter
      • IGlobalInterfaceTable
      • C# Signature:
      • IInternetBindInfo
      • IInternetProtocol
      • IInternetProtocolRoot
      • IInternetProtocolSink
      • IInternetSecurityManager
      • IInternetZoneManager
      • ILockBytes
      • IMalloc
      • IObjectSafety
      • IObjectWithSite
      • _ContentBaseDefinition
      • IOleCommandTarget
      • IOleDocumentSite
      • cbcb
      • code
      • IPersist
      • coredll
      • IPersistStream
      • IPropertyBag
      • IPropertyNotifySink
      • C# Definition:
      • IPropertyStore
      • IProvideClassInfo
      • IQueryInfo
      • IRichEditOle
      • death
      • IShellBrowser
      • IShellExtInit
      • IShellFolder
      • dll
      • IShellItem
      • IShellItemArray
      • IShellItemImageFactory
      • eqPM4
      • IShellLinkA
      • IShellLinkW
      • kernel32
      • mypage
      • IStorage
      • obfuscate-pinvoke-150x300
      • IThumbnailProvider
      • ITravelLogEntry
      • ITravelLogStg
      • ITrayDeskband
      • IUnknown
      • IViewObject
      • IWebBrowser
      • IWebBrowser2
      • IWiaItem
      • IWiaPropertyStorage
      • JavaScript
      • Joe
      • SHDocVw
      • C# Definition:
      • WebBrowser
      • patrick
      • sounds
      • pageIShellLinkA_doc
    • structures
      • ACL_REVISION_INFORMATION
      • ACL_SIZE_INFORMATION
      • ADAPTER_STATUS
      • ANIMATIONINFO
      • AVISTREAMINFO
      • AudioLineStatus
      • C# Definition:
      • BITMAPFILEHEADER
      • BITMAPINFO
      • BITMAPINFOHEADER
      • BLENDFUNCTION
      • sucuni
      • BY_HANDLE_FILE_INFORMATION
      • Bluetooth_Find_Radio_Params.
      • Bluetooth_Find_Radio_Params
      • tree
      • CATEGORYINFO
      • CAUUID
      • CEOSVERSIONINFO
      • CERT_CONTEXT
      • CHANGEFILTERSTRUCT
      • CHARFORMAT2
      • CHARRANGE
      • CIDA
      • CMINVOKECOMMANDINFO
      • use32
      • COLORREF
      • COMDLG_FILTERSPEC
      • COMMPROP
      • CONDITION_VARIABLE
      • CREATESTRUCT
      • C# Definition:
      • C# Definition:
      • user32
      • why
      • CreateProcessWithTokenW
      • _ContentBaseDefinition
      • C# Definition:
      • DESKBANDINFO
      • DEVMODE
      • DFS_INFO_4
      • DHCP_CLIENT_INFO_ARRAY
      • DISK_GEOMETRY
      • DISPLAY_DEVICE
      • DOMAIN_CONTROLLER_INFO
      • DSROLE_PRIMARY_DOMAIN_INFO_BASIC
      • DS_DOMAIN_CONTROLLER_INFO_2
      • DWM_BLURBEHIND
      • C# Definition:
      • C# Definition:
      • javascript
      • FILEDESCRIPTOR
      • FILETIME
      • FILE_ID_BOTH_DIR_INFO
      • FILTERREGION
      • FORMATETC
      • FULLPROPSPEC
      • GLOBAL_MACHINE_POWER_POLICY
      • HomePage
      • _ContentBaseDefinition
      • GUID
      • GuidClass
      • HARDWAREINPUT
      • HitTestValues
      • javascript
      • ICMP_ECHO_REPLY
      • ICONINFO
      • IMAGEINFO
      • IMAGELISTDRAWPARAMS
      • IMAGE_DATA_DIRECTORY
      • IMAGE_DOS_HEADER
      • IMAGE_EXPORT_DIRECTORY
      • IMAGE_FILE_HEADER
      • IMAGE_NT_HEADERS
      • IMAGE_OPTIONAL_HEADER32
      • IMAGE_OPTIONAL_HEADER64
      • _ContentBaseDefinition
      • INPUT
      • _ContentBaseDefinition
      • INSTALLERINFO
      • INTLIST
      • IP_ADAPTER_INFO
      • IP_OPTION_INFORMATION
      • ITEMIDLIST
      • javascript
      • KERNINGPAIR
      • KEYBDINPUT
      • LANA_ENUM
      • LASTINPUTINFO
      • C# Definition:
      • LOGFONT
      • LUID
      • LUID_AND_ATTRIBUTES
      • LayoutKind
      • MAPI
      • MARGINS
      • MEMORY_BASIC_INFORMATION
      • MENUITEMINFO
      • MIB_TCP6ROW_OWNER_PID
      • MIB_TCP6TABLE_OWNER_PID
      • MIB_TCPROW_OWNER_PID
      • MIB_TCPTABLE_OWNER_PID
      • MIIM
      • MIXERLINE
      • javascript
      • MIXERLINETARGET
      • MOUSEINPUT
      • MOUSE_EVENT_RECORD
      • MSG
      • MSGBOXPARAMS
      • MSLLHOOKSTRUCT
      • C# Definition:
      • HomePage
      • _ContentBaseDefinition
      • NAME_BUFFER
      • NCB
      • C# Definition:
      • OBJECTDESCRIPTOR
      • OPENFILENAME
      • OSVERSIONINFO
      • OSVERSIONINFOEX
      • C# Definition:
      • PAINTSTRUCT
      • PARTITION_INFORMATION
      • PIXELFORMATDESCRIPTOR
      • POINT
      • javascript
      • PRINTER_INFO_2
      • PROCESS_BASIC_INFORMATION
      • PROCESS_EXTENDED_BASIC_INFORMATION
      • HomePage
      • RASDIALEXTENSIONS
      • RASDIALPARAMS
      • RASENTRY
      • RASENTRYNAME
      • PlaySound
      • _ContentBaseDefinition
      • REOBJECT
      • REPARSE_DATA_BUFFER
      • C# Definition:
      • SECURITY_ATTRIBUTES
      • SECURITY_DESCRIPTOR
      • SHARE_INFO_502
      • javascript
      • HomePage
      • SHFILEOPSTRUCT
      • SHSTOCKICONINFO
      • SID
      • SIZE
      • _ContentBaseDefinition
      • SOLE_AUTHENTICATION_SERVICE
      • SP_DEVICE_INTERFACE_DATA
      • javascript
      • SP_DEVINFO_DATA
      • STARTUPINFOEX
      • STATPROPSETSTG
      • STAT_CHUNK
      • C# Definitions:
      • STORAGE_DEVICE_NUMBER
      • STRRET
      • SYSTEMTIME
      • SYSTEM_INFO
      • ScsiPassThrough
      • HomePage
      • SetServiceStatus
      • SetupApi
      • SetupDiEnumDeviceInterfaces
      • SockAddr
      • StartupInfo
      • TBBUTTON
      • TCP_TABLE_CLASS
      • TEXTMETRIC
      • TOKEN_PRIVILEGES
      • TableClass
      • TrackMouseEvent
      • C# Definition:
      • USB_DESCRIPTOR_REQUEST
      • USB_DEVICE_DESCRIPTOR
      • USB_HCD_DRIVERKEY_NAME
      • USB_HUB_DESCRIPTOR
      • USB_HUB_INFORMATION
      • USB_NODE_CONNECTION_DRIVERKEY_NAME
      • USB_NODE_CONNECTION_INFORMATION_EX
      • USB_NODE_CONNECTION_NAME
      • USB_NODE_INFORMATION
      • USB_ROOT_HUB_NAME
      • USB_STRING_DESCRIPTOR
      • VirtualQuery
      • WAVEFORMATEX
      • WAVEHDR
      • _ContentBaseDefinition
      • WIN32_FIND_DATA
      • WINDOWINFO
      • WINDOWPLACEMENT
      • kernel32
      • WLAN_INTERFACE_INFO
      • WLAN_PROFILE_INFO_LIST
      • WNDCLASS
      • WNDCLASSEX
      • addrinfo
      • _ContentBaseDefinition
      • HomePage
      • _ContentBaseDefinition
      • in6_addr
      • javascript
      • HomePage
      • _ContentBaseDefinition
      • javascript
      • sockaddr_gen
      • sockaddr_in
      • sockaddr_in6
      • javascript
Con tecnología de GitBook
En esta página
  • C# Signature:
  • User-Defined Types:
  • User-Defined Types:
  • User-Defined Types:
  • Helper Functions:
  • Sample Code:
  1. desktopfunctions
  2. dnsapi

DnsQuery

C# Signature:

/// <summary>
    /// Provides a DNS query resolution interface
    /// See http://msdn.microsoft.com/en-us/library/windows/desktop/ms682016(v=vs.85).aspx
    /// </summary>
    /// <param name="lpstrName">A pointer to a string that represents the DNS name to query</param>
    /// <param name="wType">A value that represents the Resource Record DNS Record Type that is queried</param>
    /// <param name="Options">A value that contains a bitmap of the DNS Query Options to use in the DNS query</param>
    /// <param name="pExtra">Reserved for future use and must be set to NULL</param>
    /// <param name="ppQueryResultsSet">A pointer to a pointer that points to the list of RRs that comprise the response</param>
    /// <param name="pReserved">Reserved for future use and must be set to NULL</param>
    /// <returns>Success (0), or the DNS-specific error defined in Winerror.h</returns>
    [DllImport("dnsapi", EntryPoint = "DnsQuery_W", CharSet = CharSet.Unicode, SetLastError = true, ExactSpelling = true)]
    public static extern int DnsQuery([MarshalAs(UnmanagedType.VBByRefStr)] ref string lpstrName, DnsRecordTypes wType, DnsQueryOptions Options, IntPtr pExtra, ref IntPtr ppQueryResultsSet, IntPtr pReserved);

    /// <summary>
    /// Frees memory allocated for DNS records obtained by using the DnsQuery function
    /// See http://msdn.microsoft.com/en-us/library/windows/desktop/ms682021(v=vs.85).aspx
    /// </summary>
    /// <param name="pRecordList">A pointer to the DNS_RECORD structure that contains the list of DNS records to be freed</param>
    /// <param name="FreeType">A specifier of how the record list should be freed</param>
    [DllImport("dnsapi", CharSet = CharSet.Auto, SetLastError = true)]
    public static extern void DnsRecordListFree(IntPtr pRecordList, DNS_FREE_TYPE FreeType);

User-Defined Types:

/// <summary>
    /// See http://msdn.microsoft.com/en-us/library/windows/desktop/cc982162(v=vs.85).aspx
    /// </summary>
    [Flags]
    public enum DnsQueryOptions
    {
        DNS_QUERY_STANDARD = 0x0,
        DNS_QUERY_ACCEPT_TRUNCATED_RESPONSE = 0x1,
        DNS_QUERY_USE_TCP_ONLY = 0x2,
        DNS_QUERY_NO_RECURSION = 0x4,
        DNS_QUERY_BYPASS_CACHE = 0x8,
        DNS_QUERY_NO_WIRE_QUERY = 0x10,
        DNS_QUERY_NO_LOCAL_NAME = 0x20,
        DNS_QUERY_NO_HOSTS_FILE = 0x40,
        DNS_QUERY_NO_NETBT = 0x80,
        DNS_QUERY_WIRE_ONLY = 0x100,
        DNS_QUERY_RETURN_MESSAGE = 0x200,
        DNS_QUERY_MULTICAST_ONLY = 0x400,
        DNS_QUERY_NO_MULTICAST = 0x800,
        DNS_QUERY_TREAT_AS_FQDN = 0x1000,
        DNS_QUERY_ADDRCONFIG = 0x2000,
        DNS_QUERY_DUAL_ADDR = 0x4000,
        DNS_QUERY_MULTICAST_WAIT = 0x20000,
        DNS_QUERY_MULTICAST_VERIFY = 0x40000,
        DNS_QUERY_DONT_RESET_TTL_VALUES = 0x100000,
        DNS_QUERY_DISABLE_IDN_ENCODING = 0x200000,
        DNS_QUERY_APPEND_MULTILABEL = 0x800000,
        DNS_QUERY_RESERVED = unchecked((int)0xF0000000)
    }

    /// <summary>
    /// See http://msdn.microsoft.com/en-us/library/windows/desktop/cc982162(v=vs.85).aspx
    /// Also see http://www.iana.org/assignments/dns-parameters/dns-parameters.xhtml
    /// </summary>
    public enum DnsRecordTypes
    {
        DNS_TYPE_A = 0x1,
        DNS_TYPE_NS = 0x2,
        DNS_TYPE_MD = 0x3,
        DNS_TYPE_MF = 0x4,
        DNS_TYPE_CNAME = 0x5,
        DNS_TYPE_SOA = 0x6,
        DNS_TYPE_MB = 0x7,
        DNS_TYPE_MG = 0x8,
        DNS_TYPE_MR = 0x9,
        DNS_TYPE_NULL = 0xA,
        DNS_TYPE_WKS = 0xB,
        DNS_TYPE_PTR = 0xC,
        DNS_TYPE_HINFO = 0xD,
        DNS_TYPE_MINFO = 0xE,
        DNS_TYPE_MX = 0xF,
        DNS_TYPE_TEXT = 0x10,       // This is how it's specified on MSDN
        DNS_TYPE_TXT = DNS_TYPE_TEXT,
        DNS_TYPE_RP = 0x11,
        DNS_TYPE_AFSDB = 0x12,
        DNS_TYPE_X25 = 0x13,
        DNS_TYPE_ISDN = 0x14,
        DNS_TYPE_RT = 0x15,
        DNS_TYPE_NSAP = 0x16,
        DNS_TYPE_NSAPPTR = 0x17,
        DNS_TYPE_SIG = 0x18,
        DNS_TYPE_KEY = 0x19,
        DNS_TYPE_PX = 0x1A,
        DNS_TYPE_GPOS = 0x1B,
        DNS_TYPE_AAAA = 0x1C,
        DNS_TYPE_LOC = 0x1D,
        DNS_TYPE_NXT = 0x1E,
        DNS_TYPE_EID = 0x1F,
        DNS_TYPE_NIMLOC = 0x20,
        DNS_TYPE_SRV = 0x21,
        DNS_TYPE_ATMA = 0x22,
        DNS_TYPE_NAPTR = 0x23,
        DNS_TYPE_KX = 0x24,
        DNS_TYPE_CERT = 0x25,
        DNS_TYPE_A6 = 0x26,
        DNS_TYPE_DNAME = 0x27,
        DNS_TYPE_SINK = 0x28,
        DNS_TYPE_OPT = 0x29,
        DNS_TYPE_DS = 0x2B,
        DNS_TYPE_RRSIG = 0x2E,
        DNS_TYPE_NSEC = 0x2F,
        DNS_TYPE_DNSKEY = 0x30,
        DNS_TYPE_DHCID = 0x31,
        DNS_TYPE_UINFO = 0x64,
        DNS_TYPE_UID = 0x65,
        DNS_TYPE_GID = 0x66,
        DNS_TYPE_UNSPEC = 0x67,
        DNS_TYPE_ADDRS = 0xF8,
        DNS_TYPE_TKEY = 0xF9,
        DNS_TYPE_TSIG = 0xFA,
        DNS_TYPE_IXFR = 0xFB,
        DNS_TYPE_AFXR = 0xFC,
        DNS_TYPE_MAILB = 0xFD,
        DNS_TYPE_MAILA = 0xFE,
        DNS_TYPE_ALL = 0xFF,
        DNS_TYPE_ANY = 0xFF,
        DNS_TYPE_WINS = 0xFF01,
        DNS_TYPE_WINSR = 0xFF02,
        DNS_TYPE_NBSTAT = DNS_TYPE_WINSR
    }

    /// <summary>
    /// See http://msdn.microsoft.com/en-us/library/windows/desktop/ms682056(v=vs.85).aspx
    /// </summary>
    public enum DNS_FREE_TYPE
    {
        DnsFreeFlat = 0,
        DnsFreeRecordList = 1,
        DnsFreeParsedMessageFields = 2
    }

    /// <summary>
    /// See http://msdn.microsoft.com/en-us/library/windows/desktop/ms682082(v=vs.85).aspx
    /// These field offsets could be different depending on endianness and bitness
    /// </summary>

User-Defined Types:

public struct DNS_RECORD
    {
    public IntPtr pNext;    // DNS_RECORD*
    public IntPtr pName;    // string
    public ushort wType;
    public ushort wDataLength;
    public FlagsUnion Flags;
    public uint dwTtl;
    public uint dwReserved;
    public DataUnion Data;
    }
    /* Below does not work in 64-bit Windows. Above works both in 32-bit and 64-bit Windows.

    [StructLayout(LayoutKind.Explicit)]
    public struct DNS_RECORD
    {
        [FieldOffset(0)]
        public IntPtr pNext;    // DNS_RECORD*
        [FieldOffset(4)]
        public IntPtr pName;    // string
        [FieldOffset(8)]
        public ushort wType;
        [FieldOffset(10)]
        public ushort wDataLength;
        [FieldOffset(12)]
        public FlagsUnion Flags;
        [FieldOffset(16)]
        public uint dwTtl;
        [FieldOffset(20)]
        public uint dwReserved;
        [FieldOffset(24)]
        public DataUnion Data;
    }

User-Defined Types:

[StructLayout(LayoutKind.Explicit)]
    public struct FlagsUnion
    {
        [FieldOffset(0)]
        public uint DW;
        [FieldOffset(0)]
        public DNS_RECORD_FLAGS S;
    }

    /// <summary>
    /// See http://msdn.microsoft.com/en-us/library/windows/desktop/ms682084(v=vs.85).aspx
    /// </summary>
    [StructLayout(LayoutKind.Sequential)]
    public struct DNS_RECORD_FLAGS
    {
        internal uint data;

        // DWORD Section :2;
        public uint Section
        {
        get { return data & 0x3u; }
        set { data = (data & ~0x3u) | (value & 0x3u); }
        }

        // DWORD Delete :1;
        public uint Delete
        {
        get { return (data >> 2) & 0x1u; }
        set { data = (data & ~(0x1u << 2)) | (value & 0x1u) << 2; }
        }

        // DWORD CharSet :2;
        public uint CharSet
        {
        get { return (data >> 3) & 0x3u; }
        set { data = (data & ~(0x3u << 3)) | (value & 0x3u) << 3; }
        }

        // DWORD Unused :3;
        public uint Unused
        {
        get { return (data >> 5) & 0x7u; }
        set { data = (data & ~(0x7u << 5)) | (value & 0x7u) << 5; }
        }

        // DWORD Reserved :24;
        public uint Reserved
        {
        get { return (data >> 8) & 0xFFFFFFu; }
        set { data = (data & ~(0xFFFFFFu << 8)) | (value & 0xFFFFFFu) << 8; }
        }
    }

    [StructLayout(LayoutKind.Explicit)]
    public struct DataUnion
    {
        [FieldOffset(0)]
        public DNS_A_DATA A;
        [FieldOffset(0)]
        public DNS_SOA_DATA SOA, Soa;
        [FieldOffset(0)]
        public DNS_PTR_DATA PTR, Ptr, NS, Ns, CNAME, Cname, DNAME, Dname, MB, Mb, MD, Md, MF, Mf, MG, Mg, MR, Mr;
        [FieldOffset(0)]
        public DNS_MINFO_DATA MINFO, Minfo, RP, Rp;
        [FieldOffset(0)]
        public DNS_MX_DATA MX, Mx, AFSDB, Afsdb, RT, Rt;
        [FieldOffset(0)]
        public DNS_TXT_DATA HINFO, Hinfo, ISDN, Isdn, TXT, Txt, X25;
        [FieldOffset(0)]
        public DNS_NULL_DATA Null;
        [FieldOffset(0)]
        public DNS_WKS_DATA WKS, Wks;
        [FieldOffset(0)]
        public DNS_AAAA_DATA AAAA;
        [FieldOffset(0)]
        public DNS_KEY_DATA KEY, Key;
        [FieldOffset(0)]
        public DNS_SIG_DATA SIG, Sig;
        [FieldOffset(0)]
        public DNS_ATMA_DATA ATMA, Atma;
        [FieldOffset(0)]
        public DNS_NXT_DATA NXT, Nxt;
        [FieldOffset(0)]
        public DNS_SRV_DATA SRV, Srv;
        [FieldOffset(0)]
        public DNS_NAPTR_DATA NAPTR, Naptr;
        [FieldOffset(0)]
        public DNS_OPT_DATA OPT, Opt;
        [FieldOffset(0)]
        public DNS_DS_DATA DS, Ds;
        [FieldOffset(0)]
        public DNS_RRSIG_DATA RRSIG, Rrsig;
        [FieldOffset(0)]
        public DNS_NSEC_DATA NSEC, Nsec;
        [FieldOffset(0)]
        public DNS_DNSKEY_DATA DNSKEY, Dnskey;
        [FieldOffset(0)]
        public DNS_TKEY_DATA TKEY, Tkey;
        [FieldOffset(0)]
        public DNS_TSIG_DATA TSIG, Tsig;
        [FieldOffset(0)]
        public DNS_WINS_DATA WINS, Wins;
        [FieldOffset(0)]
        public DNS_WINSR_DATA WINSR, WinsR, NBSTAT, Nbstat;
        [FieldOffset(0)]
        public DNS_DHCID_DATA DHCID;
    }

    /// <summary>
    /// See http://msdn.microsoft.com/en-us/library/windows/desktop/ms682044(v=vs.85).aspx
    /// </summary>
    [StructLayout(LayoutKind.Sequential)]
    public struct DNS_A_DATA
    {
        public uint IpAddress;      // IP4_ADDRESS IpAddress;
        public System.Net.IPAddress IPAddressObject { get { return new IPAddress((long)IpAddress); } }
    }

    /// <summary>
    /// See http://msdn.microsoft.com/en-us/library/windows/desktop/ms682096(v=vs.85).aspx
    /// </summary>
    [StructLayout(LayoutKind.Sequential)]
    public struct DNS_SOA_DATA
    {
        public IntPtr pNamePrimaryServer;       // string
        public IntPtr pNameAdministrator;       // string
        public uint dwSerialNo;
        public uint dwRefresh;
        public uint dwRetry;
        public uint dwExpire;
        public uint dwDefaultTtl;
    }

    /// <summary>
    /// See http://msdn.microsoft.com/en-us/library/windows/desktop/ms682080(v=vs.85).aspx
    /// </summary>
    [StructLayout(LayoutKind.Sequential)]
    public struct DNS_PTR_DATA
    {
        public IntPtr pNameHost;    // string
    }

    /// <summary>
    /// See http://msdn.microsoft.com/en-us/library/windows/desktop/ms682067(v=vs.85).aspx
    /// </summary>
    [StructLayout(LayoutKind.Sequential)]
    public struct DNS_MINFO_DATA
    {
        public IntPtr pNameMailbox;     // string
        public IntPtr pNameErrorsMailbox;       // string
    }

    /// <summary>
    /// See http://msdn.microsoft.com/en-us/library/windows/desktop/ms682070(v=vs.85).aspx
    /// </summary>
    [StructLayout(LayoutKind.Sequential)]
    public struct DNS_MX_DATA
    {
        public IntPtr pNameExchange;        // string
        public ushort wPreference;
        public ushort Pad;
        public string NameExchange { get { return Marshal.PtrToStringAuto(pNameExchange); } }
    }

    /// <summary>
    /// See http://msdn.microsoft.com/en-us/library/windows/desktop/ms682109(v=vs.85).aspx
    /// </summary>
    [StructLayout(LayoutKind.Sequential)]
    public struct DNS_TXT_DATA
    {
        public uint dwStringCount;
        public IntPtr pStringArray;     // PWSTR pStringArray[1];

        public List<string> Strings
        {
        get
        {
            List<string> res = new List<string>((int)dwStringCount);
            for ( int i = 0; i < dwStringCount; ++i )
            {
            IntPtr ptr = IntPtr.Add(pStringArray, i);
            string s = Marshal.PtrToStringUni(ptr);
            res.Add(s);
            }

            return res;
        }
        }

    }

    /// <summary>
    /// See http://msdn.microsoft.com/en-us/library/windows/desktop/ms682074(v=vs.85).aspx
    /// </summary>
    [StructLayout(LayoutKind.Sequential)]
    public struct DNS_NULL_DATA
    {
        public uint dwByteCount;
        public IntPtr Data;           // BYTE  Data[1];
    }

    /// <summary>
    /// See http://msdn.microsoft.com/en-us/library/windows/desktop/ms682120(v=vs.85).aspx
    /// </summary>
    [StructLayout(LayoutKind.Sequential)]
    public struct DNS_WKS_DATA
    {
        public uint IpAddress;      // IP4_ADDRESS IpAddress;
        public byte chProtocol;     // UCHAR       chProtocol;
        public IntPtr BitMask;        // BYTE    BitMask[1];
    }

    /// <summary>
    /// See http://msdn.microsoft.com/en-us/library/windows/desktop/ms682035(v=vs.85).aspx
    /// </summary>
    [StructLayout(LayoutKind.Sequential)]
    public struct DNS_AAAA_DATA
    {
        // IP6_ADDRESS Ip6Address;
        // DWORD IP6Dword[4];
        // This isn't ideal, but it should work without using the fixed and unsafe keywords
        public uint Ip6Address0;
        public uint Ip6Address1;
        public uint Ip6Address2;
        public uint Ip6Address3;
    }

    /// <summary>
    /// See http://msdn.microsoft.com/en-us/library/windows/desktop/ms682061(v=vs.85).aspx
    /// </summary>
    [StructLayout(LayoutKind.Sequential)]
    public struct DNS_KEY_DATA
    {
        public ushort wFlags;
        public byte chProtocol;
        public byte chAlgorithm;
        public IntPtr Key;        // BYTE Key[1];
    }

    /// <summary>
    /// See http://msdn.microsoft.com/en-us/library/windows/desktop/ms682094(v=vs.85).aspx
    /// </summary>
    [StructLayout(LayoutKind.Sequential)]
    public struct DNS_SIG_DATA
    {
        public IntPtr pNameSigner;      // string
        public ushort wTypeCovered;
        public byte chAlgorithm;
        public byte chLabelCount;
        public uint dwOriginalTtl;
        public uint dwExpiration;
        public uint dwTimeSigned;
        public ushort wKeyTag;
        public ushort Pad;
        public IntPtr Signature;      // BYTE  Signature[1];
    }

    public const int DNS_ATMA_MAX_ADDR_LENGTH = 20;
    public const int DNS_ATMA_FORMAT_E164 = 1;
    public const int DNS_ATMA_FORMAT_AESA = 2;

    /// <summary>
    /// See http://msdn.microsoft.com/en-us/library/windows/desktop/ms682041(v=vs.85).aspx
    /// </summary>
    [StructLayout(LayoutKind.Sequential)]
    public struct DNS_ATMA_DATA
    {
        public byte AddressType;
        // BYTE Address[DNS_ATMA_MAX_ADDR_LENGTH];
        // This isn't ideal, but it should work without using the fixed and unsafe keywords
        public byte Address0;
        public byte Address1;
        public byte Address2;
        public byte Address3;
        public byte Address4;
        public byte Address5;
        public byte Address6;
        public byte Address7;
        public byte Address8;
        public byte Address9;
        public byte Address10;
        public byte Address11;
        public byte Address12;
        public byte Address13;
        public byte Address14;
        public byte Address15;
        public byte Address16;
        public byte Address17;
        public byte Address18;
        public byte Address19;
    }

    /// <summary>
    /// See http://msdn.microsoft.com/en-us/library/windows/desktop/ms682076(v=vs.85).aspx
    /// </summary>
    [StructLayout(LayoutKind.Sequential)]
    public struct DNS_NXT_DATA
    {
        public IntPtr pNameNext;    // string
        public ushort wNumTypes;
        public IntPtr wTypes;       // WORD  wTypes[1];
    }

    /// <summary>
    /// See http://msdn.microsoft.com/en-us/library/windows/desktop/ms682097(v=vs.85).aspx
    /// </summary>
    [StructLayout(LayoutKind.Sequential)]
    public struct DNS_SRV_DATA
    {
        public IntPtr pNameTarget;      // string
        public ushort uPriority;
        public ushort wWeight;
        public ushort wPort;
        public ushort Pad;
    }

    /// <summary>
    /// See http://msdn.microsoft.com/en-us/library/windows/desktop/cc982164(v=vs.85).aspx
    /// </summary>
    [StructLayout(LayoutKind.Sequential)]
    public struct DNS_NAPTR_DATA
    {
        public ushort wOrder;
        public ushort wPreference;
        public IntPtr pFlags;       // string
        public IntPtr pService;     // string
        public IntPtr pRegularExpression;       // string
        public IntPtr pReplacement;     // string
    }

    /// <summary>
    /// See http://msdn.microsoft.com/en-us/library/windows/desktop/dd392298(v=vs.85).aspx
    /// </summary>
    [StructLayout(LayoutKind.Sequential)]
    public struct DNS_OPT_DATA
    {
        public ushort wDataLength;
        public ushort wPad;
        public IntPtr Data;           // BYTE Data[1];
    }

    /// <summary>
    /// See http://msdn.microsoft.com/en-us/library/windows/desktop/dd392296(v=vs.85).aspx
    /// </summary>
    [StructLayout(LayoutKind.Sequential)]
    public struct DNS_DS_DATA
    {
        public ushort wKeyTag;
        public byte chAlgorithm;
        public byte chDigestType;
        public ushort wDigestLength;
        public ushort wPad;
        public IntPtr Digest;         // BYTE Digest[1];
    }

    /// <summary>
    /// See http://msdn.microsoft.com/en-us/library/windows/desktop/dd392301(v=vs.85).aspx
    /// </summary>
    [StructLayout(LayoutKind.Sequential)]
    public struct DNS_RRSIG_DATA
    {
        public IntPtr pNameSigner;      // string
        public ushort wTypeCovered;
        public byte chAlgorithm;
        public byte chLabelCount;
        public uint dwOriginalTtl;
        public uint dwExpiration;
        public uint dwTimeSigned;
        public ushort wKeyTag;
        public ushort Pad;
        public IntPtr Signature;      // BYTE  Signature[1];
    }

    /// <summary>
    /// See http://msdn.microsoft.com/en-us/library/windows/desktop/dd392297(v=vs.85).aspx
    /// </summary>
    [StructLayout(LayoutKind.Sequential)]
    public struct DNS_NSEC_DATA
    {
        public IntPtr pNextDomainName;    // string
        public ushort wTypeBitMapsLength;
        public ushort wPad;
        public IntPtr TypeBitMaps;    // BYTE  TypeBitMaps[1];
    }

    /// <summary>
    /// See http://msdn.microsoft.com/en-us/library/windows/desktop/dd392295(v=vs.85).aspx
    /// </summary>
    [StructLayout(LayoutKind.Sequential)]
    public struct DNS_DNSKEY_DATA
    {
        public ushort wFlags;
        public byte chProtocol;
        public byte chAlgorithm;
        public ushort wKeyLength;
        public ushort wPad;
        public IntPtr Key;        // BYTE Key[1];
    }

    /// <summary>
    /// See http://msdn.microsoft.com/en-us/library/windows/desktop/ms682104(v=vs.85).aspx
    /// </summary>
    [StructLayout(LayoutKind.Sequential)]
    public struct DNS_TKEY_DATA
    {
        public IntPtr pNameAlgorithm;   // string
        public IntPtr pAlgorithmPacket; // PBYTE (which is BYTE*)
        public IntPtr pKey;         // PBYTE (which is BYTE*)
        public IntPtr pOtherData;       // PBYTE (which is BYTE*)
        public uint dwCreateTime;
        public uint dwExpireTime;
        public ushort wMode;
        public ushort wError;
        public ushort wKeyLength;
        public ushort wOtherLength;
        public byte cAlgNameLength;     // UCHAR cAlgNameLength;
        public int bPacketPointers;     // BOOL  bPacketPointers;
    }

    /// <summary>
    /// See http://msdn.microsoft.com/en-us/library/windows/desktop/ms682106(v=vs.85).aspx
    /// </summary>
    [StructLayout(LayoutKind.Sequential)]
    public struct DNS_TSIG_DATA
    {
        public IntPtr pNameAlgorithm;   // string
        public IntPtr pAlgorithmPacket; // PBYTE (which is BYTE*)
        public IntPtr pSignature;       // PBYTE (which is BYTE*)
        public IntPtr pOtherData;       // PBYTE (which is BYTE*)
        public long i64CreateTime;
        public ushort wFudgeTime;
        public ushort wOriginalXid;
        public ushort wError;
        public ushort wSigLength;
        public ushort wOtherLength;
        public byte cAlgNameLength;     // UCHAR    cAlgNameLength;
        public int bPacketPointers;     // BOOL     bPacketPointers;
    }

    /// <summary>
    /// See http://msdn.microsoft.com/en-us/library/windows/desktop/ms682114(v=vs.85).aspx
    /// </summary>
    [StructLayout(LayoutKind.Sequential)]
    public struct DNS_WINS_DATA
    {
        public uint dwMappingFlag;
        public uint dwLookupTimeout;
        public uint dwCacheTimeout;
        public uint cWinsServerCount;
        public uint WinsServers;    // IP4_ADDRESS WinsServers[1];
    }

    /// <summary>
    /// See http://msdn.microsoft.com/en-us/library/windows/desktop/ms682113(v=vs.85).aspx
    /// </summary>
    [StructLayout(LayoutKind.Sequential)]
    public struct DNS_WINSR_DATA
    {
        public uint dwMappingFlag;
        public uint dwLookupTimeout;
        public uint dwCacheTimeout;
        public IntPtr pNameResultDomain;    // string
    }

    /// <summary>
    /// See http://msdn.microsoft.com/en-us/library/windows/desktop/dd392294(v=vs.85).aspx
    /// </summary>
    [StructLayout(LayoutKind.Sequential)]
    public struct DNS_DHCID_DATA
    {
        public uint dwByteCount;
        public IntPtr DHCID;          // BYTE  DHCID[1];
    }

Helper Functions:

/// <summary>
    /// Converts an unsigned int to an ip address object
    /// See http://msdn.microsoft.com/en-us/library/windows/desktop/cc982163(v=vs.85).aspx
    /// </summary>
    /// <param name="ipAddress">The unsigned int to convert to an ip address object</param>
    /// <returns>The converted ip address</returns>
    public static IPAddress ConvertUintToIpAddress(uint ipAddress)
    {
        // x86 is in little endian
        // Network byte order (what the IPAddress object requires) is big endian
        // Ex - 0x7F000001 is 127.0.0.1
        var addressBytes = new byte[4];
        addressBytes[0] = (byte)((ipAddress & 0xFF000000u) >> 24);
        addressBytes[1] = (byte)((ipAddress & 0x00FF0000u) >> 16);
        addressBytes[2] = (byte)((ipAddress & 0x0000FF00u) >> 8);
        addressBytes[3] = (byte)(ipAddress & 0x000000FFu);
        return new IPAddress(addressBytes);
    }

    /// <summary>
    /// Converts the data from the AAAA record into an ip address object
    /// See http://msdn.microsoft.com/en-us/library/windows/desktop/ms682140(v=vs.85).aspx
    /// </summary>
    /// <param name="data">The AAAA record to convert</param>
    /// <returns>The converted ip address</returns>
    public static IPAddress ConvertAAAAToIpAddress(DNS_AAAA_DATA data)
    {
        var addressBytes = new byte[16];
        addressBytes[0] = (byte)(data.Ip6Address0 & 0x000000FF);
        addressBytes[1] = (byte)((data.Ip6Address0 & 0x0000FF00) >> 8);
        addressBytes[2] = (byte)((data.Ip6Address0 & 0x00FF0000) >> 16);
        addressBytes[3] = (byte)((data.Ip6Address0 & 0xFF000000) >> 24);
        addressBytes[4] = (byte)(data.Ip6Address1 & 0x000000FF);
        addressBytes[5] = (byte)((data.Ip6Address1 & 0x0000FF00) >> 8);
        addressBytes[6] = (byte)((data.Ip6Address1 & 0x00FF0000) >> 16);
        addressBytes[7] = (byte)((data.Ip6Address1 & 0xFF000000) >> 24);
        addressBytes[8] = (byte)(data.Ip6Address2 & 0x000000FF);
        addressBytes[9] = (byte)((data.Ip6Address2 & 0x0000FF00) >> 8);
        addressBytes[10] = (byte)((data.Ip6Address2 & 0x00FF0000) >> 16);
        addressBytes[11] = (byte)((data.Ip6Address2 & 0xFF000000) >> 24);
        addressBytes[12] = (byte)(data.Ip6Address3 & 0x000000FF);
        addressBytes[13] = (byte)((data.Ip6Address3 & 0x0000FF00) >> 8);
        addressBytes[14] = (byte)((data.Ip6Address3 & 0x00FF0000) >> 16);
        addressBytes[15] = (byte)((data.Ip6Address3 & 0xFF000000) >> 24);

        return new IPAddress(addressBytes);
    }

Sample Code:

using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Net;
    using System.Runtime.InteropServices;

    namespace DnsTest
    {
    public class Dns
    {
        /// <summary>
        /// Returns a list of exchange server names from the MX records found from the given domain
        /// This function can be easily changed to return data from other DNS records
        /// </summary>
        /// <param name="domain">The domain to query for MX records</param>
        /// <returns>A list of exchange server names from the MX records found from the given domain</returns>
        public static List<string> GetMxRecords(string domain)
        {
        if (Environment.OSVersion.Platform != PlatformID.Win32NT)
        {
            throw new NotSupportedException();
        }

        var recordsArray = IntPtr.Zero;
        try
        {
            var result = DnsQuery(ref domain, DnsRecordTypes.DNS_TYPE_MX, DnsQueryOptions.DNS_QUERY_BYPASS_CACHE,
            IntPtr.Zero, ref recordsArray, IntPtr.Zero);
            if (result != 0)
            {
            throw new Win32Exception(result);
            }

            DNS_RECORD record;
            var recordList = new List<string>();
            for (var recordPtr = recordsArray; !recordPtr.Equals(IntPtr.Zero); recordPtr = record.pNext)
            {
            record = (DNS_RECORD)Marshal.PtrToStructure(recordPtr, typeof(DNS_RECORD));
            if (record.wType == (int)DnsRecordTypes.DNS_TYPE_MX)
            {
                recordList.Add(Marshal.PtrToStringAuto(record.Data.MX.pNameExchange));
            }
            }

            return recordList;
        }
        finally
        {
            if (recordsArray != IntPtr.Zero)
            {
            DnsRecordListFree(recordsArray, DNS_FREE_TYPE.DnsFreeFlat);
            }
        }
        }

        /// <summary>
        /// Provides a DNS query resolution interface
        /// See http://msdn.microsoft.com/en-us/library/windows/desktop/ms682016(v=vs.85).aspx
        /// </summary>
        /// <param name="lpstrName">A pointer to a string that represents the DNS name to query</param>
        /// <param name="wType">A value that represents the Resource Record DNS Record Type that is queried</param>
        /// <param name="Options">A value that contains a bitmap of the DNS Query Options to use in the DNS query</param>
        /// <param name="pExtra">Reserved for future use and must be set to NULL</param>
        /// <param name="ppQueryResultsSet">A pointer to a pointer that points to the list of RRs that comprise the response</param>
        /// <param name="pReserved">Reserved for future use and must be set to NULL</param>
        /// <returns>Success (0), or the DNS-specific error defined in Winerror.h</returns>
        [DllImport("dnsapi", EntryPoint = "DnsQuery_W", CharSet = CharSet.Unicode, SetLastError = true,
        ExactSpelling = true)]
        public static extern int DnsQuery([MarshalAs(UnmanagedType.VBByRefStr)] ref string lpstrName, DnsRecordTypes wType,
        DnsQueryOptions Options, IntPtr pExtra, ref IntPtr ppQueryResultsSet, IntPtr pReserved);

        /// <summary>
        /// Frees memory allocated for DNS records obtained by using the DnsQuery function
        /// See http://msdn.microsoft.com/en-us/library/windows/desktop/ms682021(v=vs.85).aspx
        /// </summary>
        /// <param name="pRecordList">A pointer to the DNS_RECORD structure that contains the list of DNS records to be freed</param>
        /// <param name="FreeType">A specifier of how the record list should be freed</param>
        [DllImport("dnsapi", CharSet = CharSet.Auto, SetLastError = true)]
        public static extern void DnsRecordListFree(IntPtr pRecordList, DNS_FREE_TYPE FreeType);

        /// <summary>
        /// See http://msdn.microsoft.com/en-us/library/windows/desktop/cc982162(v=vs.85).aspx
        /// </summary>
        [Flags]
        public enum DnsQueryOptions
        {
        DNS_QUERY_STANDARD = 0x0,
        DNS_QUERY_ACCEPT_TRUNCATED_RESPONSE = 0x1,
        DNS_QUERY_USE_TCP_ONLY = 0x2,
        DNS_QUERY_NO_RECURSION = 0x4,
        DNS_QUERY_BYPASS_CACHE = 0x8,
        DNS_QUERY_NO_WIRE_QUERY = 0x10,
        DNS_QUERY_NO_LOCAL_NAME = 0x20,
        DNS_QUERY_NO_HOSTS_FILE = 0x40,
        DNS_QUERY_NO_NETBT = 0x80,
        DNS_QUERY_WIRE_ONLY = 0x100,
        DNS_QUERY_RETURN_MESSAGE = 0x200,
        DNS_QUERY_MULTICAST_ONLY = 0x400,
        DNS_QUERY_NO_MULTICAST = 0x800,
        DNS_QUERY_TREAT_AS_FQDN = 0x1000,
        DNS_QUERY_ADDRCONFIG = 0x2000,
        DNS_QUERY_DUAL_ADDR = 0x4000,
        DNS_QUERY_MULTICAST_WAIT = 0x20000,
        DNS_QUERY_MULTICAST_VERIFY = 0x40000,
        DNS_QUERY_DONT_RESET_TTL_VALUES = 0x100000,
        DNS_QUERY_DISABLE_IDN_ENCODING = 0x200000,
        DNS_QUERY_APPEND_MULTILABEL = 0x800000,
        DNS_QUERY_RESERVED = unchecked((int)0xF0000000)
        }

        /// <summary>
        /// See http://msdn.microsoft.com/en-us/library/windows/desktop/cc982162(v=vs.85).aspx
        /// Also see http://www.iana.org/assignments/dns-parameters/dns-parameters.xhtml
        /// </summary>
        public enum DnsRecordTypes
        {
        DNS_TYPE_A = 0x1,
        DNS_TYPE_NS = 0x2,
        DNS_TYPE_MD = 0x3,
        DNS_TYPE_MF = 0x4,
        DNS_TYPE_CNAME = 0x5,
        DNS_TYPE_SOA = 0x6,
        DNS_TYPE_MB = 0x7,
        DNS_TYPE_MG = 0x8,
        DNS_TYPE_MR = 0x9,
        DNS_TYPE_NULL = 0xA,
        DNS_TYPE_WKS = 0xB,
        DNS_TYPE_PTR = 0xC,
        DNS_TYPE_HINFO = 0xD,
        DNS_TYPE_MINFO = 0xE,
        DNS_TYPE_MX = 0xF,
        DNS_TYPE_TEXT = 0x10,       // This is how it's specified on MSDN
        DNS_TYPE_TXT = DNS_TYPE_TEXT,
        DNS_TYPE_RP = 0x11,
        DNS_TYPE_AFSDB = 0x12,
        DNS_TYPE_X25 = 0x13,
        DNS_TYPE_ISDN = 0x14,
        DNS_TYPE_RT = 0x15,
        DNS_TYPE_NSAP = 0x16,
        DNS_TYPE_NSAPPTR = 0x17,
        DNS_TYPE_SIG = 0x18,
        DNS_TYPE_KEY = 0x19,
        DNS_TYPE_PX = 0x1A,
        DNS_TYPE_GPOS = 0x1B,
        DNS_TYPE_AAAA = 0x1C,
        DNS_TYPE_LOC = 0x1D,
        DNS_TYPE_NXT = 0x1E,
        DNS_TYPE_EID = 0x1F,
        DNS_TYPE_NIMLOC = 0x20,
        DNS_TYPE_SRV = 0x21,
        DNS_TYPE_ATMA = 0x22,
        DNS_TYPE_NAPTR = 0x23,
        DNS_TYPE_KX = 0x24,
        DNS_TYPE_CERT = 0x25,
        DNS_TYPE_A6 = 0x26,
        DNS_TYPE_DNAME = 0x27,
        DNS_TYPE_SINK = 0x28,
        DNS_TYPE_OPT = 0x29,
        DNS_TYPE_DS = 0x2B,
        DNS_TYPE_RRSIG = 0x2E,
        DNS_TYPE_NSEC = 0x2F,
        DNS_TYPE_DNSKEY = 0x30,
        DNS_TYPE_DHCID = 0x31,
        DNS_TYPE_UINFO = 0x64,
        DNS_TYPE_UID = 0x65,
        DNS_TYPE_GID = 0x66,
        DNS_TYPE_UNSPEC = 0x67,
        DNS_TYPE_ADDRS = 0xF8,
        DNS_TYPE_TKEY = 0xF9,
        DNS_TYPE_TSIG = 0xFA,
        DNS_TYPE_IXFR = 0xFB,
        DNS_TYPE_AFXR = 0xFC,
        DNS_TYPE_MAILB = 0xFD,
        DNS_TYPE_MAILA = 0xFE,
        DNS_TYPE_ALL = 0xFF,
        DNS_TYPE_ANY = 0xFF,
        DNS_TYPE_WINS = 0xFF01,
        DNS_TYPE_WINSR = 0xFF02,
        DNS_TYPE_NBSTAT = DNS_TYPE_WINSR
        }

        /// <summary>
        /// See http://msdn.microsoft.com/en-us/library/windows/desktop/ms682056(v=vs.85).aspx
        /// </summary>
        public enum DNS_FREE_TYPE
        {
        DnsFreeFlat = 0,
        DnsFreeRecordList = 1,
        DnsFreeParsedMessageFields = 2
        }

        /// <summary>
        /// See http://msdn.microsoft.com/en-us/library/windows/desktop/ms682082(v=vs.85).aspx
        /// These field offsets could be different depending on endianness and bitness
        /// </summary>
        [StructLayout(LayoutKind.Explicit)]
        public struct DNS_RECORD
        {
        [FieldOffset(0)]
        public IntPtr pNext;    // DNS_RECORD*
        [FieldOffset(4)]
        public IntPtr pName;    // string
        [FieldOffset(8)]
        public ushort wType;
        [FieldOffset(10)]
        public ushort wDataLength;
        [FieldOffset(12)]
        public FlagsUnion Flags;
        [FieldOffset(16)]
        public uint dwTtl;
        [FieldOffset(20)]
        public uint dwReserved;
        [FieldOffset(24)]
        public DataUnion Data;
        }

        [StructLayout(LayoutKind.Explicit)]
        public struct FlagsUnion
        {
        [FieldOffset(0)]
        public uint DW;
        [FieldOffset(0)]
        public DNS_RECORD_FLAGS S;
        }

        /// <summary>
        /// See http://msdn.microsoft.com/en-us/library/windows/desktop/ms682084(v=vs.85).aspx
        /// </summary>
        [StructLayout(LayoutKind.Sequential)]
        public struct DNS_RECORD_FLAGS
        {
        internal uint data;

        // DWORD Section :2;
        public uint Section
        {
            get { return data & 0x3u; }
            set { data = (data & ~0x3u) | (value & 0x3u); }
        }

        // DWORD Delete :1;
        public uint Delete
        {
            get { return (data >> 2) & 0x1u; }
            set { data = (data & ~(0x1u << 2)) | (value & 0x1u) << 2; }
        }

        // DWORD CharSet :2;
        public uint CharSet
        {
            get { return (data >> 3) & 0x3u; }
            set { data = (data & ~(0x3u << 3)) | (value & 0x3u) << 3; }
        }

        // DWORD Unused :3;
        public uint Unused
        {
            get { return (data >> 5) & 0x7u; }
            set { data = (data & ~(0x7u << 5)) | (value & 0x7u) << 5; }
        }

        // DWORD Reserved :24;
        public uint Reserved
        {
            get { return (data >> 8) & 0xFFFFFFu; }
            set { data = (data & ~(0xFFFFFFu << 8)) | (value & 0xFFFFFFu) << 8; }
        }
        }

        [StructLayout(LayoutKind.Explicit)]
        public struct DataUnion
        {
        [FieldOffset(0)]
        public DNS_A_DATA A;
        [FieldOffset(0)]
        public DNS_SOA_DATA SOA, Soa;
        [FieldOffset(0)]
        public DNS_PTR_DATA PTR, Ptr, NS, Ns, CNAME, Cname, DNAME, Dname, MB, Mb, MD, Md, MF, Mf, MG, Mg, MR, Mr;
        [FieldOffset(0)]
        public DNS_MINFO_DATA MINFO, Minfo, RP, Rp;
        [FieldOffset(0)]
        public DNS_MX_DATA MX, Mx, AFSDB, Afsdb, RT, Rt;
        [FieldOffset(0)]
        public DNS_TXT_DATA HINFO, Hinfo, ISDN, Isdn, TXT, Txt, X25;
        [FieldOffset(0)]
        public DNS_NULL_DATA Null;
        [FieldOffset(0)]
        public DNS_WKS_DATA WKS, Wks;
        [FieldOffset(0)]
        public DNS_AAAA_DATA AAAA;
        [FieldOffset(0)]
        public DNS_KEY_DATA KEY, Key;
        [FieldOffset(0)]
        public DNS_SIG_DATA SIG, Sig;
        [FieldOffset(0)]
        public DNS_ATMA_DATA ATMA, Atma;
        [FieldOffset(0)]
        public DNS_NXT_DATA NXT, Nxt;
        [FieldOffset(0)]
        public DNS_SRV_DATA SRV, Srv;
        [FieldOffset(0)]
        public DNS_NAPTR_DATA NAPTR, Naptr;
        [FieldOffset(0)]
        public DNS_OPT_DATA OPT, Opt;
        [FieldOffset(0)]
        public DNS_DS_DATA DS, Ds;
        [FieldOffset(0)]
        public DNS_RRSIG_DATA RRSIG, Rrsig;
        [FieldOffset(0)]
        public DNS_NSEC_DATA NSEC, Nsec;
        [FieldOffset(0)]
        public DNS_DNSKEY_DATA DNSKEY, Dnskey;
        [FieldOffset(0)]
        public DNS_TKEY_DATA TKEY, Tkey;
        [FieldOffset(0)]
        public DNS_TSIG_DATA TSIG, Tsig;
        [FieldOffset(0)]
        public DNS_WINS_DATA WINS, Wins;
        [FieldOffset(0)]
        public DNS_WINSR_DATA WINSR, WinsR, NBSTAT, Nbstat;
        [FieldOffset(0)]
        public DNS_DHCID_DATA DHCID;
        }

        /// <summary>
        /// See http://msdn.microsoft.com/en-us/library/windows/desktop/ms682044(v=vs.85).aspx
        /// </summary>
        [StructLayout(LayoutKind.Sequential)]
        public struct DNS_A_DATA
        {
        public uint IpAddress;      // IP4_ADDRESS IpAddress;
        }

        /// <summary>
        /// See http://msdn.microsoft.com/en-us/library/windows/desktop/ms682096(v=vs.85).aspx
        /// </summary>
        [StructLayout(LayoutKind.Sequential)]
        public struct DNS_SOA_DATA
        {
        public IntPtr pNamePrimaryServer;       // string
        public IntPtr pNameAdministrator;       // string
        public uint dwSerialNo;
        public uint dwRefresh;
        public uint dwRetry;
        public uint dwExpire;
        public uint dwDefaultTtl;
        }

        /// <summary>
        /// See http://msdn.microsoft.com/en-us/library/windows/desktop/ms682080(v=vs.85).aspx
        /// </summary>
        [StructLayout(LayoutKind.Sequential)]
        public struct DNS_PTR_DATA
        {
        public IntPtr pNameHost;    // string
        }

        /// <summary>
        /// See http://msdn.microsoft.com/en-us/library/windows/desktop/ms682067(v=vs.85).aspx
        /// </summary>
        [StructLayout(LayoutKind.Sequential)]
        public struct DNS_MINFO_DATA
        {
        public IntPtr pNameMailbox;     // string
        public IntPtr pNameErrorsMailbox;       // string
        }

        /// <summary>
        /// See http://msdn.microsoft.com/en-us/library/windows/desktop/ms682070(v=vs.85).aspx
        /// </summary>
        [StructLayout(LayoutKind.Sequential)]
        public struct DNS_MX_DATA
        {
        public IntPtr pNameExchange;        // string
        public ushort wPreference;
        public ushort Pad;
        }

        /// <summary>
        /// See http://msdn.microsoft.com/en-us/library/windows/desktop/ms682109(v=vs.85).aspx
        /// </summary>
        [StructLayout(LayoutKind.Sequential)]
        public struct DNS_TXT_DATA
        {
        public uint dwStringCount;
        public IntPtr pStringArray;     // PWSTR pStringArray[1];
        }

        /// <summary>
        /// See http://msdn.microsoft.com/en-us/library/windows/desktop/ms682074(v=vs.85).aspx
        /// </summary>
        [StructLayout(LayoutKind.Sequential)]
        public struct DNS_NULL_DATA
        {
        public uint dwByteCount;
        public IntPtr Data;           // BYTE  Data[1];
        }

        /// <summary>
        /// See http://msdn.microsoft.com/en-us/library/windows/desktop/ms682120(v=vs.85).aspx
        /// </summary>
        [StructLayout(LayoutKind.Sequential)]
        public struct DNS_WKS_DATA
        {
        public uint IpAddress;      // IP4_ADDRESS IpAddress;
        public byte chProtocol;     // UCHAR       chProtocol;
        public IntPtr BitMask;        // BYTE    BitMask[1];
        }

        /// <summary>
        /// See http://msdn.microsoft.com/en-us/library/windows/desktop/ms682035(v=vs.85).aspx
        /// </summary>
        [StructLayout(LayoutKind.Sequential)]
        public struct DNS_AAAA_DATA
        {
        // IP6_ADDRESS Ip6Address;
        // DWORD IP6Dword[4];
        // This isn't ideal, but it should work without using the fixed and unsafe keywords
        public uint Ip6Address0;
        public uint Ip6Address1;
        public uint Ip6Address2;
        public uint Ip6Address3;
        }

        /// <summary>
        /// See http://msdn.microsoft.com/en-us/library/windows/desktop/ms682061(v=vs.85).aspx
        /// </summary>
        [StructLayout(LayoutKind.Sequential)]
        public struct DNS_KEY_DATA
        {
        public ushort wFlags;
        public byte chProtocol;
        public byte chAlgorithm;
        public IntPtr Key;        // BYTE Key[1];
        }

        /// <summary>
        /// See http://msdn.microsoft.com/en-us/library/windows/desktop/ms682094(v=vs.85).aspx
        /// </summary>
        [StructLayout(LayoutKind.Sequential)]
        public struct DNS_SIG_DATA
        {
        public IntPtr pNameSigner;      // string
        public ushort wTypeCovered;
        public byte chAlgorithm;
        public byte chLabelCount;
        public uint dwOriginalTtl;
        public uint dwExpiration;
        public uint dwTimeSigned;
        public ushort wKeyTag;
        public ushort Pad;
        public IntPtr Signature;      // BYTE  Signature[1];
        }

        public const int DNS_ATMA_MAX_ADDR_LENGTH = 20;
        public const int DNS_ATMA_FORMAT_E164 = 1;
        public const int DNS_ATMA_FORMAT_AESA = 2;

        /// <summary>
        /// See http://msdn.microsoft.com/en-us/library/windows/desktop/ms682041(v=vs.85).aspx
        /// </summary>
        [StructLayout(LayoutKind.Sequential)]
        public struct DNS_ATMA_DATA
        {
        public byte AddressType;
        // BYTE Address[DNS_ATMA_MAX_ADDR_LENGTH];
        // This isn't ideal, but it should work without using the fixed and unsafe keywords
        public byte Address0;
        public byte Address1;
        public byte Address2;
        public byte Address3;
        public byte Address4;
        public byte Address5;
        public byte Address6;
        public byte Address7;
        public byte Address8;
        public byte Address9;
        public byte Address10;
        public byte Address11;
        public byte Address12;
        public byte Address13;
        public byte Address14;
        public byte Address15;
        public byte Address16;
        public byte Address17;
        public byte Address18;
        public byte Address19;
        }

        /// <summary>
        /// See http://msdn.microsoft.com/en-us/library/windows/desktop/ms682076(v=vs.85).aspx
        /// </summary>
        [StructLayout(LayoutKind.Sequential)]
        public struct DNS_NXT_DATA
        {
        public IntPtr pNameNext;    // string
        public ushort wNumTypes;
        public IntPtr wTypes;       // WORD  wTypes[1];
        }

        /// <summary>
        /// See http://msdn.microsoft.com/en-us/library/windows/desktop/ms682097(v=vs.85).aspx
        /// </summary>
        [StructLayout(LayoutKind.Sequential)]
        public struct DNS_SRV_DATA
        {
        public IntPtr pNameTarget;      // string
        public ushort uPriority;
        public ushort wWeight;
        public ushort wPort;
        public ushort Pad;
        }

        /// <summary>
        /// See http://msdn.microsoft.com/en-us/library/windows/desktop/cc982164(v=vs.85).aspx
        /// </summary>
        [StructLayout(LayoutKind.Sequential)]
        public struct DNS_NAPTR_DATA
        {
        public ushort wOrder;
        public ushort wPreference;
        public IntPtr pFlags;       // string
        public IntPtr pService;     // string
        public IntPtr pRegularExpression;       // string
        public IntPtr pReplacement;     // string
        }

        /// <summary>
        /// See http://msdn.microsoft.com/en-us/library/windows/desktop/dd392298(v=vs.85).aspx
        /// </summary>
        [StructLayout(LayoutKind.Sequential)]
        public struct DNS_OPT_DATA
        {
        public ushort wDataLength;
        public ushort wPad;
        public IntPtr Data;           // BYTE Data[1];
        }

        /// <summary>
        /// See http://msdn.microsoft.com/en-us/library/windows/desktop/dd392296(v=vs.85).aspx
        /// </summary>
        [StructLayout(LayoutKind.Sequential)]
        public struct DNS_DS_DATA
        {
        public ushort wKeyTag;
        public byte chAlgorithm;
        public byte chDigestType;
        public ushort wDigestLength;
        public ushort wPad;
        public IntPtr Digest;         // BYTE Digest[1];
        }

        /// <summary>
        /// See http://msdn.microsoft.com/en-us/library/windows/desktop/dd392301(v=vs.85).aspx
        /// </summary>
        [StructLayout(LayoutKind.Sequential)]
        public struct DNS_RRSIG_DATA
        {
        public IntPtr pNameSigner;      // string
        public ushort wTypeCovered;
        public byte chAlgorithm;
        public byte chLabelCount;
        public uint dwOriginalTtl;
        public uint dwExpiration;
        public uint dwTimeSigned;
        public ushort wKeyTag;
        public ushort Pad;
        public IntPtr Signature;      // BYTE  Signature[1];
        }

        /// <summary>
        /// See http://msdn.microsoft.com/en-us/library/windows/desktop/dd392297(v=vs.85).aspx
        /// </summary>
        [StructLayout(LayoutKind.Sequential)]
        public struct DNS_NSEC_DATA
        {
        public IntPtr pNextDomainName;    // string
        public ushort wTypeBitMapsLength;
        public ushort wPad;
        public IntPtr TypeBitMaps;    // BYTE  TypeBitMaps[1];
        }

        /// <summary>
        /// See http://msdn.microsoft.com/en-us/library/windows/desktop/dd392295(v=vs.85).aspx
        /// </summary>
        [StructLayout(LayoutKind.Sequential)]
        public struct DNS_DNSKEY_DATA
        {
        public ushort wFlags;
        public byte chProtocol;
        public byte chAlgorithm;
        public ushort wKeyLength;
        public ushort wPad;
        public IntPtr Key;        // BYTE Key[1];
        }

        /// <summary>
        /// See http://msdn.microsoft.com/en-us/library/windows/desktop/ms682104(v=vs.85).aspx
        /// </summary>
        [StructLayout(LayoutKind.Sequential)]
        public struct DNS_TKEY_DATA
        {
        public IntPtr pNameAlgorithm;   // string
        public IntPtr pAlgorithmPacket; // PBYTE (which is BYTE*)
        public IntPtr pKey;         // PBYTE (which is BYTE*)
        public IntPtr pOtherData;       // PBYTE (which is BYTE*)
        public uint dwCreateTime;
        public uint dwExpireTime;
        public ushort wMode;
        public ushort wError;
        public ushort wKeyLength;
        public ushort wOtherLength;
        public byte cAlgNameLength;     // UCHAR cAlgNameLength;
        public int bPacketPointers;     // BOOL  bPacketPointers;
        }

        /// <summary>
        /// See http://msdn.microsoft.com/en-us/library/windows/desktop/ms682106(v=vs.85).aspx
        /// </summary>
        [StructLayout(LayoutKind.Sequential)]
        public struct DNS_TSIG_DATA
        {
        public IntPtr pNameAlgorithm;   // string
        public IntPtr pAlgorithmPacket; // PBYTE (which is BYTE*)
        public IntPtr pSignature;       // PBYTE (which is BYTE*)
        public IntPtr pOtherData;       // PBYTE (which is BYTE*)
        public long i64CreateTime;
        public ushort wFudgeTime;
        public ushort wOriginalXid;
        public ushort wError;
        public ushort wSigLength;
        public ushort wOtherLength;
        public byte cAlgNameLength;     // UCHAR    cAlgNameLength;
        public int bPacketPointers;     // BOOL     bPacketPointers;
        }

        /// <summary>
        /// See http://msdn.microsoft.com/en-us/library/windows/desktop/ms682114(v=vs.85).aspx
        /// </summary>
        [StructLayout(LayoutKind.Sequential)]
        public struct DNS_WINS_DATA
        {
        public uint dwMappingFlag;
        public uint dwLookupTimeout;
        public uint dwCacheTimeout;
        public uint cWinsServerCount;
        public uint WinsServers;    // IP4_ADDRESS WinsServers[1];
        }

        /// <summary>
        /// See http://msdn.microsoft.com/en-us/library/windows/desktop/ms682113(v=vs.85).aspx
        /// </summary>
        [StructLayout(LayoutKind.Sequential)]
        public struct DNS_WINSR_DATA
        {
        public uint dwMappingFlag;
        public uint dwLookupTimeout;
        public uint dwCacheTimeout;
        public IntPtr pNameResultDomain;    // string
        }

        /// <summary>
        /// See http://msdn.microsoft.com/en-us/library/windows/desktop/dd392294(v=vs.85).aspx
        /// </summary>
        [StructLayout(LayoutKind.Sequential)]
        public struct DNS_DHCID_DATA
        {
        public uint dwByteCount;
        public IntPtr DHCID;          // BYTE  DHCID[1];
        }

        /// <summary>
        /// Converts an unsigned int to an ip address object
        /// See http://msdn.microsoft.com/en-us/library/windows/desktop/cc982163(v=vs.85).aspx
        /// </summary>
        /// <param name="ipAddress">The unsigned int to convert to an ip address object</param>
        /// <returns>The converted ip address</returns>
        public static IPAddress ConvertUintToIpAddress(uint ipAddress)
        {
        // x86 is in little endian
        // Network byte order (what the IPAddress object requires) is big endian
        // Ex - 0x7F000001 is 127.0.0.1
        var addressBytes = new byte[4];
        addressBytes[0] = (byte)((ipAddress & 0xFF000000u) >> 24);
        addressBytes[1] = (byte)((ipAddress & 0x00FF0000u) >> 16);
        addressBytes[2] = (byte)((ipAddress & 0x0000FF00u) >> 8);
        addressBytes[3] = (byte)(ipAddress & 0x000000FFu);
        return new IPAddress(addressBytes);
        }

        /// <summary>
        /// Converts the data from the AAAA record into an ip address object
        /// See http://msdn.microsoft.com/en-us/library/windows/desktop/ms682140(v=vs.85).aspx
        /// </summary>
        /// <param name="data">The AAAA record to convert</param>
        /// <returns>The converted ip address</returns>
        public static IPAddress ConvertAAAAToIpAddress(DNS_AAAA_DATA data)
        {
        var addressBytes = new byte[16];
        addressBytes[0] = (byte)(data.Ip6Address0 & 0x000000FF);
        addressBytes[1] = (byte)((data.Ip6Address0 & 0x0000FF00) >> 8);
        addressBytes[2] = (byte)((data.Ip6Address0 & 0x00FF0000) >> 16);
        addressBytes[3] = (byte)((data.Ip6Address0 & 0xFF000000) >> 24);
        addressBytes[4] = (byte)(data.Ip6Address1 & 0x000000FF);
        addressBytes[5] = (byte)((data.Ip6Address1 & 0x0000FF00) >> 8);
        addressBytes[6] = (byte)((data.Ip6Address1 & 0x00FF0000) >> 16);
        addressBytes[7] = (byte)((data.Ip6Address1 & 0xFF000000) >> 24);
        addressBytes[8] = (byte)(data.Ip6Address2 & 0x000000FF);
        addressBytes[9] = (byte)((data.Ip6Address2 & 0x0000FF00) >> 8);
        addressBytes[10] = (byte)((data.Ip6Address2 & 0x00FF0000) >> 16);
        addressBytes[11] = (byte)((data.Ip6Address2 & 0xFF000000) >> 24);
        addressBytes[12] = (byte)(data.Ip6Address3 & 0x000000FF);
        addressBytes[13] = (byte)((data.Ip6Address3 & 0x0000FF00) >> 8);
        addressBytes[14] = (byte)((data.Ip6Address3 & 0x00FF0000) >> 16);
        addressBytes[15] = (byte)((data.Ip6Address3 & 0xFF000000) >> 24);

        return new IPAddress(addressBytes);
        }
    }
    }
AnteriorDNSQueryExSiguienteTCP_TABLE_CLASS

Última actualización hace 1 año