/* ReactOS_Ram */
CreateFreeLoaderEntry(IniCache, IniSection,
L"ReactOS_Ram", L"\"ReactOS (RAM Disk)\"",
- L"ReactOS", L"ramdisk(0)\\ReactOS",
+ L"Windows2003", L"ramdisk(0)\\ReactOS",
L"/DEBUG /DEBUGPORT=COM1 /BAUDRATE=115200 /SOS /RDIMAGEPATH=reactos.img /RDIMAGEOFFSET=32256");
+
+ /* ReactOS_EMS */
+ CreateFreeLoaderEntry(IniCache, IniSection,
+ L"ReactOS_EMS", L"\"ReactOS (Emergency Management Services)\"",
+ L"Windows2003", ArcPath,
+ L"/DEBUG /DEBUGPORT=COM1 /BAUDRATE=115200 /SOS /redirect=com2 /redirectbaudrate=115200");
#endif
/* Save the ini file */
dwError = ERROR_SERVICE_REQUEST_TIMEOUT;
goto Done;
}
- else if (dwError == ERROR_SUCCESS)
+ else if (dwError == WAIT_OBJECT_0)
{
bResult = GetOverlappedResult(Service->lpImage->hControlPipe,
&Overlapped,
dwError = ERROR_SERVICE_REQUEST_TIMEOUT;
goto Done;
}
- else if (dwError == ERROR_SUCCESS)
+ else if (dwError == WAIT_OBJECT_0)
{
bResult = GetOverlappedResult(Service->lpImage->hControlPipe,
&Overlapped,
dwError = ERROR_SERVICE_REQUEST_TIMEOUT;
goto Done;
}
- else if (dwError == ERROR_SUCCESS)
+ else if (dwError == WAIT_OBJECT_0)
{
bResult = GetOverlappedResult(Service->lpImage->hControlPipe,
&Overlapped,
dwError = ERROR_SERVICE_REQUEST_TIMEOUT;
goto Done;
}
- else if (dwError == ERROR_SUCCESS)
+ else if (dwError == WAIT_OBJECT_0)
{
bResult = GetOverlappedResult(Service->lpImage->hControlPipe,
&Overlapped,
return ERROR_SERVICE_REQUEST_TIMEOUT;
}
- else if (dwError == ERROR_SUCCESS)
+ else if (dwError == WAIT_OBJECT_0)
{
- DPRINT("WaitForSingleObject() returned ERROR_SUCCESS\n");
+ DPRINT("WaitForSingleObject() returned WAIT_OBJECT_0\n");
DPRINT("Process Id: %lu\n", dwProcessId);
HKLM,"SYSTEM\CurrentControlSet\Services\DHCP\Parameters","ServiceDll",0x00020000,"%SystemRoot%\system32\dhcpcsvc.dll"
; EMS Serial Administration Console Driver
-HKLM,"SYSTEM\CurrentControlSet\Services\NMIDebug","ErrorControl",0x00010001,0x00000000
-HKLM,"SYSTEM\CurrentControlSet\Services\NMIDebug","Group",0x00000000,"EMS"
-HKLM,"SYSTEM\CurrentControlSet\Services\NMIDebug","ImagePath",0x00020000,"system32\drivers\sacdrv.sys"
-HKLM,"SYSTEM\CurrentControlSet\Services\NMIDebug","Start",0x00010001,0x00000000
-HKLM,"SYSTEM\CurrentControlSet\Services\NMIDebug","Type",0x00010001,0x00000001
+HKLM,"SYSTEM\CurrentControlSet\Services\sacdrv","ErrorControl",0x00010001,0x00000000
+HKLM,"SYSTEM\CurrentControlSet\Services\sacdrv","Group",0x00000000,"EMS"
+HKLM,"SYSTEM\CurrentControlSet\Services\sacdrv","ImagePath",0x00020000,"system32\drivers\sacdrv.sys"
+HKLM,"SYSTEM\CurrentControlSet\Services\sacdrv","Start",0x00010001,0x00000000
+HKLM,"SYSTEM\CurrentControlSet\Services\sacdrv","Type",0x00010001,0x00000001
; Event logging service
HKLM,"SYSTEM\CurrentControlSet\Services\EventLog",,0x00000010
if (PortInitialized == FALSE)
return FALSE;
- return (CpGetByte(&Rs232ComPort, ByteReceived, TRUE) == CP_GET_SUCCESS);
+ return (CpGetByte(&Rs232ComPort, ByteReceived, TRUE, FALSE) == CP_GET_SUCCESS);
}
/*
WinLdrPortGetByte(IN ULONG PortId,
OUT PUCHAR Data)
{
- return CpGetByte(&Port[PortId], Data, TRUE) == CP_GET_SUCCESS;
+ return CpGetByte(&Port[PortId], Data, TRUE, FALSE) == CP_GET_SUCCESS;
}
BOOLEAN
{
UCHAR Dummy;
- return CpGetByte(&Port[PortId], &Dummy, FALSE) == CP_GET_SUCCESS;
+ return CpGetByte(&Port[PortId], &Dummy, FALSE, TRUE) == CP_GET_SUCCESS;
}
VOID
/* Start fresh */
RtlZeroMemory(&LoaderRedirectionInformation, sizeof(HEADLESS_LOADER_BLOCK));
-
+ LoaderRedirectionInformation.PciDeviceId = PCI_INVALID_VENDORID;
+
/* Use a direction port if one was given, or use ACPI to detect one instead */
RedirectPort = strstr(BootOptions, "/redirect=");
{
RedirectPort += sizeof("com") - 1;
LoaderRedirectionInformation.PortNumber = atoi(RedirectPort);
+ LoaderRedirectionInformation.TerminalType = 1; //HeadlessSerialPort
}
else
{
/* Allocate and minimalistic-initialize LPB */
AllocateAndInitLPB(&LoaderBlock);
-#ifdef _M_IX86
- /* Setup redirection support */
- WinLdrSetupEms(BootOptions);
-#endif
-
/* Load Hive */
UiDrawBackdrop();
UiDrawProgressBarCenter(15, 100, "Loading system hive...");
LPCSTR SystemRoot;
TRACE("LoadAndBootWindowsCommon()\n");
+#ifdef _M_IX86
+ /* Setup redirection support */
+ WinLdrSetupEms((PCHAR)BootOptions);
+#endif
+
/* Convert BootPath to SystemRoot */
SystemRoot = strstr(BootPath, "\\");
get_target_property(RSYM native-rsym IMPORTED_LOCATION_NOCONFIG)
set(CMAKE_C_LINK_EXECUTABLE
"<CMAKE_C_COMPILER> ${CMAKE_C_FLAGS} <CMAKE_C_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>"
- "${RSYM} <TARGET> <TARGET>")
+ "${RSYM} -s ${REACTOS_SOURCE_DIR} <TARGET> <TARGET>")
set(CMAKE_CXX_LINK_EXECUTABLE
"<CMAKE_CXX_COMPILER> ${CMAKE_CXX_FLAGS} <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>"
- "${RSYM} <TARGET> <TARGET>")
+ "${RSYM} -s ${REACTOS_SOURCE_DIR} <TARGET> <TARGET>")
set(CMAKE_C_CREATE_SHARED_LIBRARY
"<CMAKE_C_COMPILER> ${CMAKE_C_FLAGS} <CMAKE_SHARED_LIBRARY_C_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>"
- "${RSYM} <TARGET> <TARGET>")
+ "${RSYM} -s ${REACTOS_SOURCE_DIR} <TARGET> <TARGET>")
set(CMAKE_CXX_CREATE_SHARED_LIBRARY
"<CMAKE_CXX_COMPILER> ${CMAKE_CXX_FLAGS} <CMAKE_SHARED_LIBRARY_CXX_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>"
- "${RSYM} <TARGET> <TARGET>")
+ "${RSYM} -s ${REACTOS_SOURCE_DIR} <TARGET> <TARGET>")
set(CMAKE_RC_CREATE_SHARED_LIBRARY
"<CMAKE_C_COMPILER> ${CMAKE_C_FLAGS} <CMAKE_SHARED_LIBRARY_C_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>")
endif()
SECURITY_QUALITY_OF_SERVICE SecurityQos;
SID_IDENTIFIER_AUTHORITY NtSidAuthority = {SECURITY_NT_AUTHORITY};
PSID SystemSid = NULL;
- CSR_CONNECTION_INFO ConnectionInfo;
- ULONG ConnectionInfoLength = sizeof(CSR_CONNECTION_INFO);
+ CSR_API_CONNECTINFO ConnectionInfo;
+ ULONG ConnectionInfoLength = sizeof(CSR_API_CONNECTINFO);
DPRINT("%s(%S)\n", __FUNCTION__, ObjectDirectory);
SecurityQos.EffectiveOnly = TRUE;
/* Setup the connection info */
- ConnectionInfo.Version = 0x10000;
+ ConnectionInfo.Version = CSRSRV_VERSION;
/* Create a SID for us */
Status = RtlAllocateAndInitializeSid(&NtSidAuthority,
spec2def(glu32.dll glu32.spec ADD_IMPORTLIB)
list(APPEND SOURCE
+ glu32.rc
src/libutil/error.c
src/libutil/glue.c
src/libutil/mipmap.c
--- /dev/null
+#define REACTOS_VERSION_DLL
+#define REACTOS_STR_FILE_DESCRIPTION "ReactOS OpenGL Utility Library\0"
+#define REACTOS_STR_INTERNAL_NAME "glu32\0"
+#define REACTOS_STR_ORIGINAL_FILENAME "glu32.dll\0"
+#include <reactos/version.rc>
ULONG SessionId = NtCurrentPeb()->SessionId;
BOOLEAN InServer;
- CONSOLE_CONNECTION_INFO ConnectInfo;
+ CONSRV_API_CONNECTINFO ConnectInfo;
ULONG ConnectInfoSize = sizeof(ConnectInfo);
DPRINT("BasepInitConsole for : %wZ\n", &Parameters->ImagePathName);
}
else
{
- DefineDosDeviceRequest->dwFlags = dwFlags;
+ DefineDosDeviceRequest->Flags = dwFlags;
CsrCaptureMessageBuffer(CaptureBuffer,
(PVOID)DeviceUpcaseNameU.Buffer,
CsrCaptureMessageBuffer(CaptureBuffer,
(PVOID)NtTargetPathU.Buffer,
NtTargetPathU.Length,
- (PVOID*)&DefineDosDeviceRequest->TargetName.Buffer);
+ (PVOID*)&DefineDosDeviceRequest->TargetPath.Buffer);
}
- DefineDosDeviceRequest->TargetName.Length =
+ DefineDosDeviceRequest->TargetPath.Length =
NtTargetPathU.Length;
- DefineDosDeviceRequest->TargetName.MaximumLength =
+ DefineDosDeviceRequest->TargetPath.MaximumLength =
NtTargetPathU.Length;
Status = CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
CHAR IDString[5];
WCHAR * TempFileName;
BASE_API_MESSAGE ApiMessage;
- PBASE_GET_TEMP_FILE GetTempFile = &ApiMessage.Data.GetTempFile;
+ PBASE_GET_TEMP_FILE GetTempFile = &ApiMessage.Data.GetTempFileRequest;
DWORD FileAttributes, LastError;
UNICODE_STRING PathNameString, PrefixString;
static const WCHAR Ext[] = { L'.', 't', 'm', 'p', UNICODE_NULL };
/* INCLUDES *******************************************************************/
#include <k32.h>
+#include <winspool.h>
#define NDEBUG
#include <debug.h>
{
NTSTATUS Status;
BASE_API_MESSAGE ApiMessage;
- PBASE_GET_PROCESS_SHUTDOWN_PARAMS GetShutdownParametersRequest = &ApiMessage.Data.GetShutdownParametersRequest;
+ PBASE_GETSET_PROCESS_SHUTDOWN_PARAMS ShutdownParametersRequest = &ApiMessage.Data.ShutdownParametersRequest;
/* Ask CSRSS for shutdown information */
Status = CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
NULL,
CSR_CREATE_API_NUMBER(BASESRV_SERVERDLL_INDEX, BasepGetProcessShutdownParam),
- sizeof(BASE_GET_PROCESS_SHUTDOWN_PARAMS));
+ sizeof(BASE_GETSET_PROCESS_SHUTDOWN_PARAMS));
if (!NT_SUCCESS(Status))
{
/* Return the failure from CSRSS */
}
/* Get the data back */
- *lpdwLevel = GetShutdownParametersRequest->Level;
- *lpdwFlags = GetShutdownParametersRequest->Flags;
+ *lpdwLevel = ShutdownParametersRequest->ShutdownLevel;
+ *lpdwFlags = ShutdownParametersRequest->ShutdownFlags;
return TRUE;
}
{
NTSTATUS Status;
BASE_API_MESSAGE ApiMessage;
- PBASE_SET_PROCESS_SHUTDOWN_PARAMS SetShutdownParametersRequest = &ApiMessage.Data.SetShutdownParametersRequest;
+ PBASE_GETSET_PROCESS_SHUTDOWN_PARAMS ShutdownParametersRequest = &ApiMessage.Data.ShutdownParametersRequest;
/* Write the data into the CSRSS request and send it */
- SetShutdownParametersRequest->Level = dwLevel;
- SetShutdownParametersRequest->Flags = dwFlags;
+ ShutdownParametersRequest->ShutdownLevel = dwLevel;
+ ShutdownParametersRequest->ShutdownFlags = dwFlags;
Status = CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
NULL,
CSR_CREATE_API_NUMBER(BASESRV_SERVERDLL_INDEX, BasepSetProcessShutdownParam),
- sizeof(BASE_SET_PROCESS_SHUTDOWN_PARAMS));
+ sizeof(BASE_GETSET_PROCESS_SHUTDOWN_PARAMS));
if (!NT_SUCCESS(Status))
{
/* Return the failure from CSRSS */
/* Set message structures */
CreateProcessMsg = &CsrMsg.Data.CreateProcessRequest;
- VdmMsg = &CsrMsg.Data.CheckVdm;
+ VdmMsg = &CsrMsg.Data.CheckVDMRequest;
/* Clear the more complex structures by zeroing out their entire memory */
RtlZeroMemory(&Context, sizeof(Context));
* PROJECT: ReactOS Win32 Base API
* LICENSE: GPL - See COPYING in the top level directory
* FILE: dll/win32/kernel32/client/vdm.c
- * PURPOSE: Virtual Dos Machine (VDM) Support
+ * PURPOSE: Virtual DOS Machines (VDM) Support
* PROGRAMMERS: Alex Ionescu (alex.ionescu@reactos.org)
*/
/* Is it a .com? */
String.Length = BaseDotComSuffixName.Length;
String.Buffer = &PathName->Buffer[(PathName->Length - String.Length) / sizeof(WCHAR)];
- if (RtlEqualUnicodeString(&String, &BaseDotComSuffixName, TRUE)) return 2;
+ if (RtlEqualUnicodeString(&String, &BaseDotComSuffixName, TRUE)) return BINARY_TYPE_COM;
/* Is it a .pif? */
String.Length = BaseDotPifSuffixName.Length;
String.Buffer = &PathName->Buffer[(PathName->Length - String.Length) / sizeof(WCHAR)];
- if (RtlEqualUnicodeString(&String, &BaseDotPifSuffixName, TRUE)) return 3;
+ if (RtlEqualUnicodeString(&String, &BaseDotPifSuffixName, TRUE)) return BINARY_TYPE_PIF;
/* Is it an exe? */
String.Length = BaseDotExeSuffixName.Length;
String.Buffer = &PathName->Buffer[(PathName->Length - String.Length) / sizeof(WCHAR)];
- if (RtlEqualUnicodeString(&String, &BaseDotExeSuffixName, TRUE)) return 1;
+ if (RtlEqualUnicodeString(&String, &BaseDotExeSuffixName, TRUE)) return BINARY_TYPE_EXE;
+
return 0;
}
#include <winreg.h>
#include <wincon.h>
#include <winuser.h>
-#include <winspool.h>
#include <tlhelp32.h>
/* Redefine NTDDI_VERSION to 2K3 SP1 to get correct NDK definitions */
/*
* TODO:
- * Implement NetUserGetGroups
+ * Implement NetUserGetGroups (WIP)
* Implement NetUserSetGroups
* NetUserGetLocalGroups does not support LG_INCLUDE_INDIRECT yet.
* Add missing information levels.
/* Open the Account Domain */
Status = OpenAccountDomain(ServerHandle,
(servername != NULL) ? &ServerName : NULL,
- DOMAIN_CREATE_USER | DOMAIN_LOOKUP,
+ DOMAIN_CREATE_USER | DOMAIN_LOOKUP | DOMAIN_READ_PASSWORD_PARAMETERS,
&DomainHandle);
if (!NT_SUCCESS(Status))
{
LPDWORD entriesread,
LPDWORD totalentries)
{
- FIXME("%s %s %d %p %d %p %p stub\n", debugstr_w(servername),
+ UNICODE_STRING ServerName;
+ UNICODE_STRING UserName;
+ SAM_HANDLE ServerHandle = NULL;
+ SAM_HANDLE AccountDomainHandle = NULL;
+ SAM_HANDLE UserHandle = NULL;
+ PSID AccountDomainSid = NULL;
+ PULONG RelativeIds = NULL;
+ PSID_NAME_USE Use = NULL;
+ PGROUP_MEMBERSHIP GroupMembership = NULL;
+ ULONG GroupCount;
+
+ NET_API_STATUS ApiStatus = NERR_Success;
+ NTSTATUS Status = STATUS_SUCCESS;
+
+ TRACE("%s %s %d %p %d %p %p stub\n", debugstr_w(servername),
debugstr_w(username), level, bufptr, prefixmaxlen, entriesread,
totalentries);
+ if (servername != NULL)
+ RtlInitUnicodeString(&ServerName, servername);
+
+ RtlInitUnicodeString(&UserName, username);
+
+ /* Connect to the SAM Server */
+ Status = SamConnect((servername != NULL) ? &ServerName : NULL,
+ &ServerHandle,
+ SAM_SERVER_CONNECT | SAM_SERVER_LOOKUP_DOMAIN,
+ NULL);
+ if (!NT_SUCCESS(Status))
+ {
+ ERR("SamConnect failed (Status %08lx)\n", Status);
+ ApiStatus = NetpNtStatusToApiStatus(Status);
+ goto done;
+ }
+
+ /* Get the Account Domain SID */
+ Status = GetAccountDomainSid((servername != NULL) ? &ServerName : NULL,
+ &AccountDomainSid);
+ if (!NT_SUCCESS(Status))
+ {
+ ERR("GetAccountDomainSid failed (Status %08lx)\n", Status);
+ ApiStatus = NetpNtStatusToApiStatus(Status);
+ goto done;
+ }
+
+ /* Open the Account Domain */
+ Status = SamOpenDomain(ServerHandle,
+ DOMAIN_LOOKUP | DOMAIN_GET_ALIAS_MEMBERSHIP,
+ AccountDomainSid,
+ &AccountDomainHandle);
+ if (!NT_SUCCESS(Status))
+ {
+ ERR("OpenAccountDomain failed (Status %08lx)\n", Status);
+ ApiStatus = NetpNtStatusToApiStatus(Status);
+ goto done;
+ }
+
+ /* Get the RID for the given user name */
+ Status = SamLookupNamesInDomain(AccountDomainHandle,
+ 1,
+ &UserName,
+ &RelativeIds,
+ &Use);
+ if (!NT_SUCCESS(Status))
+ {
+ ERR("SamLookupNamesInDomain failed (Status %08lx)\n", Status);
+ ApiStatus = NetpNtStatusToApiStatus(Status);
+ goto done;
+ }
+
+ /* Fail, if it is not a user account */
+ if (Use[0] != SidTypeUser)
+ {
+ ERR("Account is not a User!\n");
+ ApiStatus = NERR_UserNotFound;
+ goto done;
+ }
+
+ /* Open the user object */
+ Status = SamOpenUser(AccountDomainHandle,
+ USER_LIST_GROUPS,
+ RelativeIds[0],
+ &UserHandle);
+ if (!NT_SUCCESS(Status))
+ {
+ ERR("SamOpenUser failed (Status %08lx)\n", Status);
+ ApiStatus = NetpNtStatusToApiStatus(Status);
+ goto done;
+ }
+
+ /* Get the group memberships of this user */
+ Status = SamGetGroupsForUser(UserHandle,
+ &GroupMembership,
+ &GroupCount);
+ if (!NT_SUCCESS(Status))
+ {
+ ERR("SamGetGroupsForUser failed (Status %08lx)\n", Status);
+ ApiStatus = NetpNtStatusToApiStatus(Status);
+ goto done;
+ }
+
+ /* If there is no group membership, we're done */
+ if (GroupCount == 0)
+ {
+ ApiStatus = NERR_Success;
+ goto done;
+ }
+
+
+done:
+
+ if (GroupMembership != NULL)
+ SamFreeMemory(GroupMembership);
+
+ if (UserHandle != NULL)
+ SamCloseHandle(UserHandle);
+
+ if (RelativeIds != NULL)
+ SamFreeMemory(RelativeIds);
+
+ if (Use != NULL)
+ SamFreeMemory(Use);
+
+ if (AccountDomainSid != NULL)
+ RtlFreeHeap(RtlGetProcessHeap(), 0, AccountDomainSid);
+
+ if (AccountDomainHandle != NULL)
+ SamCloseHandle(AccountDomainHandle);
+
+ if (ServerHandle != NULL)
+ SamCloseHandle(ServerHandle);
+
+ if (ApiStatus != NERR_Success && ApiStatus != ERROR_MORE_DATA)
+ {
+ *entriesread = 0;
+ *totalentries = 0;
+ }
+ else
+ {
+// *entriesread = Count;
+// *totalentries = Count;
+ }
+
+// *bufptr = (LPBYTE)Buffer;
+
+ return ApiStatus;
+
+#if 0
*bufptr = NULL;
*entriesread = 0;
*totalentries = 0;
return ERROR_INVALID_LEVEL;
+#endif
}
{
PSAMPR_USER_SET_PASSWORD_INFORMATION PasswordBuffer;
SAMPR_USER_INTERNAL1_INFORMATION Internal1Buffer;
- PUSER_ALL_INFORMATION AllBuffer;
+ USER_ALL_INFORMATION InternalAllBuffer;
OEM_STRING LmPwdString;
CHAR LmPwdBuffer[15];
NTSTATUS Status;
if (!NT_SUCCESS(Status))
{
TRACE("SamrSetInformation() failed (Status 0x%08lx)\n", Status);
- return Status;
}
+
+ return Status;
}
else if (UserInformationClass == UserAllInformation)
{
- AllBuffer = (PUSER_ALL_INFORMATION)Buffer;
+ RtlCopyMemory(&InternalAllBuffer,
+ Buffer,
+ sizeof(USER_ALL_INFORMATION));
- if (AllBuffer->WhichFields & (USER_ALL_LMPASSWORDPRESENT | USER_ALL_NTPASSWORDPRESENT))
+ if (InternalAllBuffer.WhichFields & (USER_ALL_LMPASSWORDPRESENT | USER_ALL_NTPASSWORDPRESENT))
{
- Status = SampCheckPassword(UserHandle,
- &AllBuffer->NtPassword);
- if (!NT_SUCCESS(Status))
+ if (InternalAllBuffer.WhichFields & USER_ALL_OWFPASSWORD)
{
- TRACE("SampCheckPassword failed (Status 0x%08lx)\n", Status);
- return Status;
+ /* Check NT password hash */
+ if (InternalAllBuffer.WhichFields & USER_ALL_NTPASSWORDPRESENT)
+ {
+ if (InternalAllBuffer.NtPassword.Length != sizeof(ENCRYPTED_NT_OWF_PASSWORD))
+ return STATUS_INVALID_PARAMETER;
+ }
+
+ /* Check LM password hash */
+ if (InternalAllBuffer.WhichFields & USER_ALL_LMPASSWORDPRESENT)
+ {
+ if (InternalAllBuffer.LmPassword.Length != sizeof(ENCRYPTED_LM_OWF_PASSWORD))
+ return STATUS_INVALID_PARAMETER;
+ }
}
+ else
+ {
+ /*
+ * Only allow the NT password to be set.
+ * The LM password will be created here.
+ */
+ if (InternalAllBuffer.WhichFields & USER_ALL_LMPASSWORDPRESENT)
+ {
+ TRACE("Do not try to set a clear text LM password!\n");
+ return STATUS_INVALID_PARAMETER;
+ }
+
+ if (InternalAllBuffer.WhichFields & USER_ALL_NTPASSWORDPRESENT)
+ {
+ Status = SampCheckPassword(UserHandle,
+ &InternalAllBuffer.NtPassword);
+ if (!NT_SUCCESS(Status))
+ {
+ TRACE("SampCheckPassword failed (Status 0x%08lx)\n", Status);
+ return Status;
+ }
+
+ /* Calculate the NT password hash */
+ Status = SystemFunction007((PUNICODE_STRING)&InternalAllBuffer.NtPassword,
+ (LPBYTE)&Internal1Buffer.EncryptedNtOwfPassword);
+ if (!NT_SUCCESS(Status))
+ {
+ TRACE("SystemFunction007 failed (Status 0x%08lx)\n", Status);
+ return Status;
+ }
+
+ InternalAllBuffer.NtPasswordPresent = TRUE;
+ InternalAllBuffer.LmPasswordPresent = FALSE;
+
+ InternalAllBuffer.NtPassword.Length = sizeof(ENCRYPTED_NT_OWF_PASSWORD);
+ InternalAllBuffer.NtPassword.MaximumLength = sizeof(ENCRYPTED_NT_OWF_PASSWORD);
+ InternalAllBuffer.NtPassword.Buffer = (LPWSTR)&Internal1Buffer.EncryptedNtOwfPassword;
+
+ /* Build the LM password */
+ LmPwdString.Length = 15;
+ LmPwdString.MaximumLength = 15;
+ LmPwdString.Buffer = LmPwdBuffer;
+ ZeroMemory(LmPwdString.Buffer, LmPwdString.MaximumLength);
+
+ Status = RtlUpcaseUnicodeStringToOemString(&LmPwdString,
+ (PUNICODE_STRING)&InternalAllBuffer.NtPassword,
+ FALSE);
+ if (NT_SUCCESS(Status))
+ {
+ /* Calculate the LM password hash */
+ Status = SystemFunction006(LmPwdString.Buffer,
+ (LPSTR)&Internal1Buffer.EncryptedLmOwfPassword);
+ if (NT_SUCCESS(Status))
+ {
+ InternalAllBuffer.WhichFields |= USER_ALL_LMPASSWORDPRESENT;
+ InternalAllBuffer.LmPasswordPresent = TRUE;
+
+ InternalAllBuffer.LmPassword.Length = sizeof(ENCRYPTED_LM_OWF_PASSWORD);
+ InternalAllBuffer.LmPassword.MaximumLength = sizeof(ENCRYPTED_LM_OWF_PASSWORD);
+ InternalAllBuffer.LmPassword.Buffer = (LPWSTR)&Internal1Buffer.EncryptedLmOwfPassword;
+ }
+ }
+ }
+ }
+ }
+
+ RpcTryExcept
+ {
+ Status = SamrSetInformationUser((SAMPR_HANDLE)UserHandle,
+ UserAllInformation,
+ (PVOID)&InternalAllBuffer);
+ }
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
+ {
+ Status = I_RpcMapWin32Status(RpcExceptionCode());
}
+ RpcEndExcept;
+
+ if (!NT_SUCCESS(Status))
+ {
+ TRACE("SamrSetInformation() failed (Status 0x%08lx)\n", Status);
+ }
+
+ return Status;
}
RpcTryExcept
SAM_USER_FIXED_DATA FixedData;
ULONG Length = 0;
ULONG WhichFields;
+ PENCRYPTED_NT_OWF_PASSWORD NtPassword = NULL;
+ PENCRYPTED_LM_OWF_PASSWORD LmPassword = NULL;
+ BOOLEAN NtPasswordPresent = FALSE;
+ BOOLEAN LmPasswordPresent = FALSE;
+ BOOLEAN WriteFixedData = FALSE;
NTSTATUS Status = STATUS_SUCCESS;
WhichFields = Buffer->All.WhichFields;
+ /* Get the fixed size attributes */
+ Length = sizeof(SAM_USER_FIXED_DATA);
+ Status = SampGetObjectAttribute(UserObject,
+ L"F",
+ NULL,
+ (PVOID)&FixedData,
+ &Length);
+ if (!NT_SUCCESS(Status))
+ goto done;
+
if (WhichFields & USER_ALL_USERNAME)
{
Status = SampSetUserName(UserObject,
goto done;
}
- if (WhichFields & (USER_ALL_PRIMARYGROUPID |
- USER_ALL_ACCOUNTEXPIRES |
- USER_ALL_USERACCOUNTCONTROL |
- USER_ALL_COUNTRYCODE |
- USER_ALL_CODEPAGE))
+ if (WhichFields & USER_ALL_PRIMARYGROUPID)
{
- Length = sizeof(SAM_USER_FIXED_DATA);
- Status = SampGetObjectAttribute(UserObject,
- L"F",
- NULL,
- (PVOID)&FixedData,
- &Length);
- if (!NT_SUCCESS(Status))
- goto done;
+ FixedData.PrimaryGroupId = Buffer->All.PrimaryGroupId;
+ WriteFixedData = TRUE;
+ }
+
+ if (WhichFields & USER_ALL_ACCOUNTEXPIRES)
+ {
+ FixedData.AccountExpires.LowPart = Buffer->All.AccountExpires.LowPart;
+ FixedData.AccountExpires.HighPart = Buffer->All.AccountExpires.HighPart;
+ WriteFixedData = TRUE;
+ }
+
+ if (WhichFields & USER_ALL_USERACCOUNTCONTROL)
+ {
+ FixedData.UserAccountControl = Buffer->All.UserAccountControl;
+ WriteFixedData = TRUE;
+ }
- if (WhichFields & USER_ALL_PRIMARYGROUPID)
- FixedData.PrimaryGroupId = Buffer->All.PrimaryGroupId;
+ if (WhichFields & USER_ALL_COUNTRYCODE)
+ {
+ FixedData.CountryCode = Buffer->All.CountryCode;
+ WriteFixedData = TRUE;
+ }
+
+ if (WhichFields & USER_ALL_CODEPAGE)
+ {
+ FixedData.CodePage = Buffer->All.CodePage;
+ WriteFixedData = TRUE;
+ }
- if (WhichFields & USER_ALL_ACCOUNTEXPIRES)
+ if (WhichFields & (USER_ALL_NTPASSWORDPRESENT |
+ USER_ALL_LMPASSWORDPRESENT))
+ {
+ if (WhichFields & USER_ALL_NTPASSWORDPRESENT)
+ {
+ NtPassword = (PENCRYPTED_NT_OWF_PASSWORD)Buffer->All.NtOwfPassword.Buffer;
+ NtPasswordPresent = Buffer->All.NtPasswordPresent;
+ }
+
+ if (WhichFields & USER_ALL_LMPASSWORDPRESENT)
{
- FixedData.AccountExpires.LowPart = Buffer->All.AccountExpires.LowPart;
- FixedData.AccountExpires.HighPart = Buffer->All.AccountExpires.HighPart;
+ LmPassword = (PENCRYPTED_LM_OWF_PASSWORD)Buffer->All.LmOwfPassword.Buffer;
+ LmPasswordPresent = Buffer->All.LmPasswordPresent;
}
- if (WhichFields & USER_ALL_USERACCOUNTCONTROL)
- FixedData.UserAccountControl = Buffer->All.UserAccountControl;
+ Status = SampSetUserPassword(UserObject,
+ NtPassword,
+ NtPasswordPresent,
+ LmPassword,
+ LmPasswordPresent);
+ if (!NT_SUCCESS(Status))
+ goto done;
- if (WhichFields & USER_ALL_COUNTRYCODE)
- FixedData.CountryCode = Buffer->Preferences.CountryCode;
+ /* The password has just been set */
+ Status = NtQuerySystemTime(&FixedData.PasswordLastSet);
+ if (!NT_SUCCESS(Status))
+ goto done;
- if (WhichFields & USER_ALL_CODEPAGE)
- FixedData.CodePage = Buffer->Preferences.CodePage;
+ WriteFixedData = TRUE;
+ }
+ if (WhichFields & USER_ALL_PASSWORDEXPIRED)
+ {
+ if (Buffer->All.PasswordExpired)
+ {
+ /* The pasword was last set ages ago */
+ FixedData.PasswordLastSet.LowPart = 0;
+ FixedData.PasswordLastSet.HighPart = 0;
+ }
+ else
+ {
+ /* The pasword was last set right now */
+ Status = NtQuerySystemTime(&FixedData.PasswordLastSet);
+ if (!NT_SUCCESS(Status))
+ goto done;
+ }
+
+ WriteFixedData = TRUE;
+ }
+
+ if (WriteFixedData == TRUE)
+ {
Status = SampSetObjectAttribute(UserObject,
L"F",
REG_BINARY,
goto done;
}
-/*
-FIXME:
- USER_ALL_NTPASSWORDPRESENT
- USER_ALL_LMPASSWORDPRESENT
- USER_ALL_PASSWORDEXPIRED
-*/
-
done:
-
return Status;
}
NTSTATUS Status;
UseNtPassword =
- ((memcmp(NtPassword, &EmptyNtHash, sizeof(ENCRYPTED_NT_OWF_PASSWORD)) != 0) &&
- (NtPasswordPresent != FALSE));
+ ((NtPasswordPresent != FALSE) &&
+ (NtPassword != NULL) &&
+ (memcmp(NtPassword, &EmptyNtHash, sizeof(ENCRYPTED_NT_OWF_PASSWORD)) != 0));
UseLmPassword =
- ((memcmp(LmPassword, &EmptyLmHash, sizeof(ENCRYPTED_LM_OWF_PASSWORD)) != 0) &&
- (LmPasswordPresent != FALSE));
+ ((LmPasswordPresent != FALSE) &&
+ (LmPassword != NULL) &&
+ (memcmp(LmPassword, &EmptyLmHash, sizeof(ENCRYPTED_LM_OWF_PASSWORD)) != 0));
/* Update the NT password history only if we have a new non-empty NT password */
if (UseNtPassword)
KdpPollByte(OUT PUCHAR OutByte)
{
/* Poll the byte */
- if (CpGetByte(&KdDebugComPort, OutByte, FALSE) == CP_GET_SUCCESS)
+ if (CpGetByte(&KdDebugComPort, OutByte, FALSE, TRUE) == CP_GET_SUCCESS)
{
return KDP_PACKET_RECEIVED;
}
KdpReceiveByte(OUT PUCHAR OutByte)
{
/* Get the byte */
- if (CpGetByte(&KdDebugComPort, OutByte, TRUE) == CP_GET_SUCCESS)
+ if (CpGetByte(&KdDebugComPort, OutByte, TRUE, FALSE) == CP_GET_SUCCESS)
{
return KDP_PACKET_RECEIVED;
}
ChannelReferenceToOneByIndexWithLock(IN LONG Index)
{
ChannelSlotLock(Index);
- ASSERT(ChannelGetReferenceCount((Index)) == 1);
- _InterlockedExchange(&ChannelRefCount[Index], 1);
+ ChannelReferenceToOneByIndex(Index);
ChannelSlotUnlock(Index);
}
ChannelLockCreates();
/* Is the channel manager initialized? */
- if (ChannelCreateEnabled)
+ if (!ChannelCreateEnabled)
{
/* Nope, bail out */
Status = STATUS_UNSUCCESSFUL;
if (i == SAC_MAX_CHANNELS)
{
/* Bail out */
- Status = STATUS_UNSUCCESSFUL;
goto ReturnStatus;
}
return Status;
}
-UCHAR
+WCHAR
NTAPI
ChannelIReadLast(IN PSAC_CHANNEL Channel)
{
- UCHAR LastChar;
+ WCHAR LastChar;
/* Read the last character while holding the lock */
ChannelLockIBuffer(Channel);
switch (Channel->ChannelType)
{
case VtUtf8:
- /* FIXME: TODO */
- ASSERT(FALSE);
- return STATUS_NOT_IMPLEMENTED;
+ /* Setup the calls for a VT-UTF8 channel */
+ Channel->ChannelCreate = VTUTF8ChannelCreate;
+ Channel->ChannelDestroy = VTUTF8ChannelDestroy;
+ Channel->ChannelOutputFlush = VTUTF8ChannelOFlush;
+ Channel->ChannelOutputEcho = VTUTF8ChannelOEcho;
+ Channel->ChannelOutputWrite = VTUTF8ChannelOWrite;
+ Channel->ChannelOutputRead = VTUTF8ChannelORead;
+ Channel->ChannelInputWrite = VTUTF8ChannelIWrite;
+ Channel->ChannelInputRead = VTUTF8ChannelIRead;
+ Channel->ChannelInputReadLast = VTUTF8ChannelIReadLast;
+ Channel->ChannelInputBufferIsFull = VTUTF8ChannelIBufferIsFull;
+ Channel->ChannelInputBufferLength = VTUTF8ChannelIBufferLength;
+ break;
case Cmd:
/* FIXME: TODO */
/* FUNCTIONS *****************************************************************/
-VOID
-NTAPI
-DoRebootCommand(IN BOOLEAN Reboot)
+NTSTATUS
+DoChannelListCommand(
+ VOID
+ )
{
- LARGE_INTEGER Timeout, TickCount;
- NTSTATUS Status;
- KEVENT Event;
- SAC_DBG(1, "SAC DoRebootCommand: Entering.\n");
-
- /* Get the current time now, and setup a timeout in 1 second */
- KeQueryTickCount(&TickCount);
- Timeout.QuadPart = TickCount.QuadPart / (10000000 / KeQueryTimeIncrement());
-
- /* Check if the timeout is small enough */
- if (Timeout.QuadPart < 60 )
- {
- /* Show the prompt */
- ConMgrSimpleEventMessage(Reboot ?
- SAC_RESTART_PROMPT : SAC_SHUTDOWN_PROMPT,
- TRUE);
-
- /* Do the wait */
- KeInitializeEvent(&Event, SynchronizationEvent, 0);
- Timeout.QuadPart = -10000000 * (60 - Timeout.LowPart);
- KeWaitForSingleObject(&Event, Executive, KernelMode, FALSE, &Timeout);
- }
+ return STATUS_NOT_IMPLEMENTED;
+}
- /* Do a shutdown or a reboot, based on the request */
- Status = NtShutdownSystem(Reboot ? ShutdownReboot : ShutdownPowerOff);
+NTSTATUS
+DoChannelCloseByNameCommand(
+ IN PCHAR Count
+ )
+{
+ return STATUS_NOT_IMPLEMENTED;
+}
- /* Check if anyone in the command channel already allocated this */
- if (!GlobalBuffer)
- {
- /* Allocate it */
- GlobalBuffer = SacAllocatePool(PAGE_SIZE, GLOBAL_BLOCK_TAG);
- if (!GlobalBuffer)
- {
- /* We need the global buffer, bail out without it*/
- SacPutSimpleMessage(SAC_OUT_OF_MEMORY_PROMPT);
- SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC DoRebootCommand: Exiting (1).\n");
- return;
- }
+NTSTATUS
+DoChannelCloseByIndexCommand(
+ IN ULONG ChannelIndex
+ )
+{
+ return STATUS_NOT_IMPLEMENTED;
+}
- /* Set the size of the buffer */
- GlobalBufferSize = PAGE_SIZE;
- }
+NTSTATUS
+DoChannelSwitchByNameCommand(
+ IN PCHAR Count
+ )
+{
+ return STATUS_NOT_IMPLEMENTED;
+}
- /* We came back from a reboot, this doesn't make sense, tell the user */
- SacPutSimpleMessage(Reboot ? SAC_RESTART_FAIL_PROMPT : SAC_SHUTDOWN_FAIL_PROMPT);
- swprintf(GlobalBuffer, GetMessage(SAC_FAIL_PROMPT), Status);
- SacPutString(GlobalBuffer);
- SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC DoRebootCommand: Exiting.\n");
+NTSTATUS
+DoChannelSwitchByIndexCommand(
+ IN ULONG ChannelIndex
+ )
+{
+ return STATUS_NOT_IMPLEMENTED;
}
NTSTATUS
}
VOID
-DoFullInfoCommand(
- VOID
- )
+NTAPI
+DoRebootCommand(IN BOOLEAN Reboot)
{
+ LARGE_INTEGER Timeout, TickCount;
+ NTSTATUS Status;
+ KEVENT Event;
+ SAC_DBG(1, "SAC DoRebootCommand: Entering.\n");
-}
+ /* Get the current time now, and setup a timeout in 1 second */
+ KeQueryTickCount(&TickCount);
+ Timeout.QuadPart = TickCount.QuadPart / (10000000 / KeQueryTimeIncrement());
-VOID
-DoPagingCommand(
- VOID
- )
-{
+ /* Check if the timeout is small enough */
+ if (Timeout.QuadPart < 60 )
+ {
+ /* Show the prompt */
+ ConMgrSimpleEventMessage(Reboot ?
+ SAC_RESTART_PROMPT : SAC_SHUTDOWN_PROMPT,
+ TRUE);
-}
+ /* Do the wait */
+ KeInitializeEvent(&Event, SynchronizationEvent, 0);
+ Timeout.QuadPart = -10000000 * (60 - Timeout.LowPart);
+ KeWaitForSingleObject(&Event, Executive, KernelMode, FALSE, &Timeout);
+ }
-VOID
-DoSetTimeCommand(
- IN PCHAR InputTime
- )
-{
+ /* Do a shutdown or a reboot, based on the request */
+ Status = NtShutdownSystem(Reboot ? ShutdownReboot : ShutdownPowerOff);
+ /* Check if anyone in the command channel already allocated this */
+ if (!GlobalBuffer)
+ {
+ /* Allocate it */
+ GlobalBuffer = SacAllocatePool(PAGE_SIZE, GLOBAL_BLOCK_TAG);
+ if (!GlobalBuffer)
+ {
+ /* We need the global buffer, bail out without it*/
+ SacPutSimpleMessage(SAC_OUT_OF_MEMORY_PROMPT);
+ SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC DoRebootCommand: Exiting (1).\n");
+ return;
+ }
+
+ /* Set the size of the buffer */
+ GlobalBufferSize = PAGE_SIZE;
+ }
+
+ /* We came back from a reboot, this doesn't make sense, tell the user */
+ SacPutSimpleMessage(Reboot ? SAC_RESTART_FAIL_PROMPT : SAC_SHUTDOWN_FAIL_PROMPT);
+ swprintf(GlobalBuffer, GetMessage(SAC_FAIL_PROMPT), Status);
+ SacPutString(GlobalBuffer);
+ SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC DoRebootCommand: Exiting.\n");
}
VOID
-DoKillCommand(
- IN PCHAR KillString
- )
+NTAPI
+DoFullInfoCommand(VOID)
{
}
VOID
-DoLowerPriorityCommand(
- IN PCHAR PrioString
- )
+NTAPI
+DoPagingCommand(VOID)
{
}
VOID
-DoRaisePriorityCommand(
- IN PCHAR PrioString
- )
+NTAPI
+DoSetTimeCommand(IN PCHAR InputTime)
{
}
VOID
-DoLimitMemoryCommand(
- IN PCHAR LimitString
- )
+NTAPI
+DoKillCommand(IN PCHAR KillString)
{
}
VOID
-DoCrashCommand(
- VOID
- )
+NTAPI
+DoLowerPriorityCommand(IN PCHAR PrioString)
{
}
VOID
-DoMachineInformationCommand(
- VOID
- )
+NTAPI
+DoRaisePriorityCommand(IN PCHAR PrioString)
{
}
-NTSTATUS
-DoChannelListCommand(
- VOID
- )
+VOID
+NTAPI
+DoLimitMemoryCommand(IN PCHAR LimitString)
{
- return STATUS_NOT_IMPLEMENTED;
-}
-NTSTATUS
-DoChannelCloseByNameCommand(
- IN PCHAR Count
- )
-{
- return STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS
-DoChannelCloseByIndexCommand(
- IN ULONG ChannelIndex
- )
+VOID
+NTAPI
+DoCrashCommand(VOID)
{
- return STATUS_NOT_IMPLEMENTED;
-}
-NTSTATUS
-DoChannelSwitchByNameCommand(
- IN PCHAR Count
- )
-{
- return STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS
-DoChannelSwitchByIndexCommand(
- IN ULONG ChannelIndex
- )
+VOID
+NTAPI
+DoMachineInformationCommand(VOID)
{
- return STATUS_NOT_IMPLEMENTED;
+
}
VOID
-DoChannelCommand(
- IN PCHAR ChannelString
- )
+NTAPI
+DoChannelCommand(IN PCHAR ChannelString)
{
}
VOID
-DoCmdCommand(
- VOID
- )
+NTAPI
+DoCmdCommand(IN PCHAR InputString)
{
}
VOID
-DoLockCommand(
- VOID
- )
+NTAPI
+DoLockCommand(VOID)
{
}
+#define PRINT_HELP_MESSAGE(x) \
+{ \
+ Count += NewCount; \
+ NewCount = GetMessageLineCount(x); \
+ if ( (NewCount + Count) > SAC_VTUTF8_COL_HEIGHT) \
+ { \
+ PutMore(&ScreenFull); \
+ if (ScreenFull) return; \
+ Count = 0; \
+ } \
+ SacPutSimpleMessage(x); \
+}
+
VOID
-DoHelpCommand(
- VOID
- )
+NTAPI
+DoHelpCommand(VOID)
{
-
+ ULONG NewCount = 0, Count = 0;
+ BOOLEAN ScreenFull = FALSE;
+
+ PRINT_HELP_MESSAGE(112);
+ PRINT_HELP_MESSAGE(12);
+ PRINT_HELP_MESSAGE(13);
+ PRINT_HELP_MESSAGE(14);
+ PRINT_HELP_MESSAGE(15);
+ PRINT_HELP_MESSAGE(16);
+ PRINT_HELP_MESSAGE(31);
+ PRINT_HELP_MESSAGE(18);
+ PRINT_HELP_MESSAGE(19);
+ PRINT_HELP_MESSAGE(32);
+ PRINT_HELP_MESSAGE(20);
+ PRINT_HELP_MESSAGE(21);
+ PRINT_HELP_MESSAGE(22);
+ PRINT_HELP_MESSAGE(23);
+ PRINT_HELP_MESSAGE(24);
+ PRINT_HELP_MESSAGE(25);
+ PRINT_HELP_MESSAGE(27);
+ PRINT_HELP_MESSAGE(28);
+ PRINT_HELP_MESSAGE(29);
}
VOID
-DoGetNetInfo(
- IN BOOLEAN DoPrint
- )
+NTAPI
+DoGetNetInfo(IN BOOLEAN DoPrint)
{
}
VOID
-DoSetIpAddressCommand(
- IN PCHAR IpString
- )
+NTAPI
+DoSetIpAddressCommand(IN PCHAR IpString)
{
-
+
}
VOID
-DoTlistCommand(
- VOID
- )
+NTAPI
+DoTlistCommand(VOID)
{
-
-}
\ No newline at end of file
+
+}
ULONG ExecutePostConsumerCommand;
PSAC_CHANNEL ExecutePostConsumerCommandData;
-/* FUNCTIONS *****************************************************************/
-
-VOID
-NTAPI
-ConMgrSerialPortConsumer(VOID)
-{
- NTSTATUS Status;
- CHAR Char;
- SAC_DBG(0x2000, "SAC TimerDpcRoutine: Entering.\n"); //bug
-
- /* Acquire the manager lock and make sure a channel is selected */
- SacAcquireMutexLock();
- ASSERT(CurrentChannel);
-
- /* Read whatever came off the serial port */
- for (Status = SerialBufferGetChar(&Char);
- NT_SUCCESS(Status);
- Status = SerialBufferGetChar(&Char))
- {
- /* If nothing came through, bail out */
- if (Status == STATUS_NO_DATA_DETECTED) break;
- }
+BOOLEAN InputInEscape, InputInEscTab, ConMgrLastCharWasCR;
+CHAR InputBuffer[80];
- /* We're done, release the lock */
- SacReleaseMutexLock();
- SAC_DBG(0x2000, "SAC TimerDpcRoutine: Exiting.\n"); //bug
-}
-
-VOID
-NTAPI
-ConMgrWorkerProcessEvents(IN PSAC_DEVICE_EXTENSION DeviceExtension)
-{
- SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC WorkerProcessEvents: Entering.\n");
-
- /* Enter the main loop */
- while (TRUE)
- {
- /* Wait for something to do */
- KeWaitForSingleObject(&DeviceExtension->Event,
- Executive,
- KernelMode,
- FALSE,
- NULL);
-
- /* Consume data off the serial port */
- ConMgrSerialPortConsumer();
- switch (ExecutePostConsumerCommand)
- {
- case 1:
- /* A reboot was sent, do it */
- DoRebootCommand(FALSE);
- break;
-
- case 2:
- /* A close was sent, do it */
- ChanMgrCloseChannel(ExecutePostConsumerCommandData);
- ChanMgrReleaseChannel(ExecutePostConsumerCommandData);
- break;
-
- case 3:
- /* A shutdown was sent, do it */
- DoRebootCommand(TRUE);
- break;
- }
-
- /* Clear the serial port consumer state */
- ExecutePostConsumerCommand = 0;
- ExecutePostConsumerCommandData = NULL;
- }
-}
+/* FUNCTIONS *****************************************************************/
VOID
NTAPI
/* Setup the attributes for the raw SAC channel */
RtlZeroMemory(&SacChannelAttributes, sizeof(SacChannelAttributes));
- SacChannelAttributes.ChannelType = Raw;
+ SacChannelAttributes.ChannelType = Raw; /* FIXME: Should be VtUtf8 */
/* Get the right name for it */
pcwch = GetMessage(SAC_CHANNEL_NAME);
/* Do the write with the lock held */
SacAcquireMutexLock();
+ ASSERT(FALSE);
Status = STATUS_NOT_IMPLEMENTED;// ChannelOWrite(Channel, WriteBuffer + 24, *(WriteBuffer + 20));
SacReleaseMutexLock();
return Status;
}
-NTSTATUS
+#define Shutdown 1
+#define Restart 3
+#define Nothing 0
+BOOLEAN GlobalPagingNeeded;
+
+VOID
NTAPI
-ConMgrGetChannelCloseMessage(IN PSAC_CHANNEL Channel,
- IN NTSTATUS CloseStatus,
- OUT PWCHAR OutputBuffer)
+ConMgrProcessInputLine(VOID)
{
- ASSERT(FALSE);
- return STATUS_NOT_IMPLEMENTED;
+ BOOLEAN EnablePaging;
+ NTSTATUS Status;
+
+ SAC_DBG(4, "SAC Input Test: %s\n", InputBuffer);
+
+ if (!strncmp(InputBuffer, "t", 1))
+ {
+ DoTlistCommand();
+ }
+ else if (!strncmp(InputBuffer, "?", 1))
+ {
+ DoHelpCommand();
+ }
+ else if (!strncmp(InputBuffer, "help", 4))
+ {
+ DoHelpCommand();
+ }
+ else if (!strncmp(InputBuffer, "f", 1))
+ {
+ DoFullInfoCommand();
+ }
+ else if (!strncmp(InputBuffer, "p", 1))
+ {
+ DoPagingCommand();
+ }
+ else if (!strncmp(InputBuffer, "id", 2))
+ {
+ DoMachineInformationCommand();
+ }
+ else if (!strncmp(InputBuffer, "crashdump", 9))
+ {
+ DoCrashCommand();
+ }
+ else if (!strncmp(InputBuffer, "lock", 4))
+ {
+ DoLockCommand();
+ }
+ else if (!strncmp(InputBuffer, "shutdown", 8))
+ {
+ ExecutePostConsumerCommand = Shutdown;
+ }
+ else if (!strncmp(InputBuffer, "restart", 7))
+ {
+ ExecutePostConsumerCommand = Restart;
+ }
+ else if (!strncmp(InputBuffer, "d", 1))
+ {
+ EnablePaging = GlobalPagingNeeded;
+ Status = HeadlessDispatch(HeadlessCmdDisplayLog,
+ &EnablePaging,
+ sizeof(EnablePaging),
+ NULL,
+ 0);
+ if (!NT_SUCCESS(Status)) SAC_DBG(4, "SAC Display Log failed.\n");
+ }
+ else if (!strncmp(InputBuffer, "cmd", 3))
+ {
+ if (CommandConsoleLaunchingEnabled)
+ {
+ DoCmdCommand(InputBuffer);
+ }
+ else
+ {
+ SacPutSimpleMessage(148);
+ }
+ }
+ else if (!(strncmp(InputBuffer, "ch", 2)) &&
+ (((strlen(InputBuffer) > 1) && (InputBuffer[2] == ' ')) ||
+ (strlen(InputBuffer) == 2)))
+ {
+ DoChannelCommand(InputBuffer);
+ }
+ else if (!(strncmp(InputBuffer, "k", 1)) &&
+ (((strlen(InputBuffer) > 1) && (InputBuffer[1] == ' ')) ||
+ (strlen(InputBuffer) == 1)))
+ {
+ DoKillCommand(InputBuffer);
+ }
+ else if (!(strncmp(InputBuffer, "l", 1)) &&
+ (((strlen(InputBuffer) > 1) && (InputBuffer[1] == ' ')) ||
+ (strlen(InputBuffer) == 1)))
+ {
+ DoLowerPriorityCommand(InputBuffer);
+ }
+ else if (!(strncmp(InputBuffer, "r", 1)) &&
+ (((strlen(InputBuffer) > 1) && (InputBuffer[1] == ' ')) ||
+ (strlen(InputBuffer) == 1)))
+ {
+ DoRaisePriorityCommand(InputBuffer);
+ }
+ else if (!(strncmp(InputBuffer, "m", 1)) &&
+ (((strlen(InputBuffer) > 1) && (InputBuffer[1] == ' ')) ||
+ (strlen(InputBuffer) == 1)))
+ {
+ DoLimitMemoryCommand(InputBuffer);
+ }
+ else if (!(strncmp(InputBuffer, "s", 1)) &&
+ (((strlen(InputBuffer) > 1) && (InputBuffer[1] == ' ')) ||
+ (strlen(InputBuffer) == 1)))
+ {
+ DoSetTimeCommand(InputBuffer);
+ }
+ else if (!(strncmp(InputBuffer, "i", 1)) &&
+ (((strlen(InputBuffer) > 1) && (InputBuffer[1] == ' ')) ||
+ (strlen(InputBuffer) == 1)))
+ {
+ DoSetIpAddressCommand(InputBuffer);
+ }
+ else if ((InputBuffer[0] != '\n') && (InputBuffer[0] != ANSI_NULL))
+ {
+ SacPutSimpleMessage(105);
+ }
}
VOID
NTAPI
-ConMgrProcessInputLine(VOID)
+ConMgrSerialPortConsumer(VOID)
+{
+ NTSTATUS Status;
+ CHAR Char;
+ WCHAR LastChar;
+ CHAR ReadBuffer[2];
+ ULONG ReadBufferSize, i;
+ WCHAR StringBuffer[2];
+ SAC_DBG(SAC_DBG_MACHINE, "SAC TimerDpcRoutine: Entering.\n"); //bug
+
+ /* Acquire the manager lock and make sure a channel is selected */
+ SacAcquireMutexLock();
+ ASSERT(CurrentChannel);
+
+ /* Read whatever came off the serial port */
+ for (Status = SerialBufferGetChar(&Char);
+ NT_SUCCESS(Status);
+ Status = SerialBufferGetChar(&Char))
+ {
+ /* If nothing came through, bail out */
+ if (Status == STATUS_NO_DATA_DETECTED) break;
+
+ /* Check if ESC was pressed */
+ if (Char == '\x1B')
+ {
+ /* Was it already pressed? */
+ if (!InputInEscape)
+ {
+ /* First time ESC is pressed! Remember and reset TAB state */
+ InputInEscTab = FALSE;
+ InputInEscape = TRUE;
+ continue;
+ }
+ }
+ else if (Char == '\t')
+ {
+ /* TAB was pressed, is it following ESC (VT-100 sequence)? */
+ if (InputInEscape)
+ {
+ /* Yes! This must be the only ESC-TAB we see in once moment */
+ ASSERT(InputInEscTab == FALSE);
+
+ /* No longer treat us as being in ESC */
+ InputInEscape = FALSE;
+
+ /* ESC-TAB is the sequence for changing channels */
+ Status = ConMgrAdvanceCurrentChannel();
+ if (!NT_SUCCESS(Status)) break;
+
+ /* Remember ESC-TAB was pressed */
+ InputInEscTab = TRUE;
+ continue;
+ }
+ }
+ else if ((Char == '0') && (InputInEscTab))
+ {
+ /* It this ESC-TAB-0? */
+ ASSERT(InputInEscape == FALSE);
+ InputInEscTab = FALSE;
+
+ /* If writes are already enabled, don't do this */
+ if (!CurrentChannel->WriteEnabled)
+ {
+ /* Reset the channel, this is our special sequence */
+ Status = ConMgrResetCurrentChannel(FALSE);
+ if (!NT_SUCCESS(Status)) break;
+ }
+
+ continue;
+ }
+ else
+ {
+ /* This is ESC-TAB-something else */
+ InputInEscTab = FALSE;
+
+ /* If writes are already enabled, don't do this */
+ if (!CurrentChannel->WriteEnabled)
+ {
+ /* Display the current channel */
+ InputInEscape = FALSE;
+ Status = ConMgrDisplayCurrentChannel();
+ if (!NT_SUCCESS(Status)) break;
+ continue;
+ }
+ }
+
+ /* Check if an ESC-sequence was being typed into a command channel */
+ if ((InputInEscape) && (CurrentChannel != SacChannel))
+ {
+ /* Store the ESC in the current channel buffer */
+ ReadBuffer[0] = '\x1B';
+ ChannelIWrite(CurrentChannel, ReadBuffer, sizeof(CHAR));
+ }
+
+ /* Check if we are no longer pressing ESC and exit the mode if so */
+ if (Char != '\x1B') InputInEscape = FALSE;
+
+ /* Whatever was typed in, save it int eh current channel */
+ ChannelIWrite(CurrentChannel, &Char, sizeof(Char));
+
+ /* If this is a command channel, we're done, nothing to process */
+ if (CurrentChannel != SacChannel) continue;
+
+ /* Check for line feed right after a carriage return */
+ if ((ConMgrLastCharWasCR) && (Char == '\n'))
+ {
+ /* Ignore the line feed, but clear the carriage return */
+ ChannelIReadLast(CurrentChannel);
+ ConMgrLastCharWasCR = 0;
+ continue;
+ }
+
+ /* Check if the user did a carriage return */
+ ConMgrLastCharWasCR = (Char == '\n');
+
+ /* If the user did an "ENTER", we need to run the command */
+ if ((Char == '\n') || (Char == '\r'))
+ {
+ /* Echo back to the terminal */
+ SacPutString(L"\r\n");
+
+DoLineParsing:
+ /* Inhibit the character (either CR or LF) */
+ ChannelIReadLast(CurrentChannel);
+
+ /* NULL-terminate the channel's input buffer */
+ ReadBuffer[0] = ANSI_NULL;
+ ChannelIWrite(CurrentChannel, ReadBuffer, sizeof(CHAR));
+
+ /* Loop over every last character */
+ do
+ {
+ /* Read every character in the channel, and strip whitespace */
+ LastChar = ChannelIReadLast(CurrentChannel);
+ ReadBuffer[0] = (CHAR) LastChar;
+ } while ((!(LastChar) ||
+ (LastChar == L' ') ||
+ (LastChar == L'\t')) &&
+ (ChannelIBufferLength(CurrentChannel)));
+
+ /* Write back into the channel the last character */
+ ChannelIWrite(CurrentChannel, ReadBuffer, sizeof(CHAR));
+
+ /* NULL-terminate the input buffer */
+ ReadBuffer[0] = ANSI_NULL;
+ ChannelIWrite(CurrentChannel, ReadBuffer, sizeof(CHAR));
+
+ /* Now loop over every first character */
+ do
+ {
+ /* Read every character in the channel, and strip whitespace */
+ ChannelIRead(CurrentChannel,
+ ReadBuffer,
+ sizeof(CHAR), /* FIXME: Should be sizeof(ReadBuffer) */
+ &ReadBufferSize);
+ } while ((ReadBufferSize) &&
+ ((ReadBuffer[0] == ' ') || (ReadBuffer[0] == '\t')));
+
+ /* We read one more than we should, so treat that as our first one */
+ InputBuffer[0] = ReadBuffer[0];
+ i = 1;
+
+ /* And now loop reading all the others */
+ do
+ {
+ /* Read each character -- there should be max 80 */
+ ChannelIRead(CurrentChannel,
+ ReadBuffer,
+ sizeof(CHAR), /* FIXME: Should be sizeof(ReadBuffer) */
+ &ReadBufferSize);
+ ASSERT(i < SAC_VTUTF8_COL_WIDTH);
+ InputBuffer[i++] = ReadBuffer[0];
+ } while (ReadBufferSize);
+
+ /* Now go over the entire input stream */
+ for (i = 0; InputBuffer[i]; i++)
+ {
+ /* Again it should be less than 80 characters */
+ ASSERT(i < SAC_VTUTF8_COL_WIDTH);
+
+ /* And downbase each character */
+ Char = InputBuffer[i];
+ if ((Char >= 'A') && (Char <= 'Z')) InputBuffer[i] = Char + ' ';
+ }
+
+ /* Ok, at this point, no pending command should exist */
+ ASSERT(ExecutePostConsumerCommand == Nothing);
+
+ /* Go and process the input, then show the prompt again */
+ ConMgrProcessInputLine();
+ SacPutSimpleMessage(SAC_PROMPT);
+
+ /* If the user typed a valid command, get out of here */
+ if (ExecutePostConsumerCommand != Nothing) break;
+
+ /* Keep going */
+ continue;
+ }
+
+ /* Check if the user typed backspace or delete */
+ if ((Char == '\b') || (Char == '\x7F'))
+ {
+ /* Omit the last character, which should be the DEL/BS itself */
+ if (ChannelIBufferLength(CurrentChannel))
+ {
+ ChannelIReadLast(CurrentChannel);
+ }
+
+ /* Omit the before-last character, which is the one to delete */
+ if (ChannelIBufferLength(CurrentChannel))
+ {
+ /* Also send two backspaces back to the console */
+ SacPutString(L"\b \b");
+ ChannelIReadLast(CurrentChannel);
+ }
+
+ /* Keep going */
+ continue;
+ }
+
+ /* If the user pressed CTRL-C at this point, treat it like ENTER */
+ if (Char == '\x03') goto DoLineParsing;
+
+ /* Check if the user pressed TAB */
+ if (Char == '\t')
+ {
+ /* Omit it, send a BELL, and keep going. We ignore TABs */
+ ChannelIReadLast(CurrentChannel);
+ SacPutString(L"\a");
+ continue;
+ }
+
+ /* Check if the user is getting close to the end of the screen */
+ if (ChannelIBufferLength(CurrentChannel) == (SAC_VTUTF8_COL_WIDTH - 2))
+ {
+ /* Delete the last character, replacing it with this one instead */
+ swprintf(StringBuffer, L"\b%c", Char);
+ SacPutString(StringBuffer);
+
+ /* Omit the last two characters from the buffer */
+ ChannelIReadLast(CurrentChannel);
+ ChannelIReadLast(CurrentChannel);
+
+ /* Write the last character that was just typed in */
+ ReadBuffer[0] = Char;
+ ChannelIWrite(CurrentChannel, ReadBuffer, sizeof(CHAR));
+ continue;
+ }
+
+ /* Nothing of interest happened, just write the character back */
+ swprintf(StringBuffer, L"%c", Char);
+ SacPutString(StringBuffer);
+ }
+
+ /* We're done, release the lock */
+ SacReleaseMutexLock();
+ SAC_DBG(SAC_DBG_MACHINE, "SAC TimerDpcRoutine: Exiting.\n"); //bug
+}
+
+VOID
+NTAPI
+ConMgrWorkerProcessEvents(IN PSAC_DEVICE_EXTENSION DeviceExtension)
+{
+ SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC WorkerProcessEvents: Entering.\n");
+
+ /* Enter the main loop */
+ while (TRUE)
+ {
+ /* Wait for something to do */
+ KeWaitForSingleObject(&DeviceExtension->Event,
+ Executive,
+ KernelMode,
+ FALSE,
+ NULL);
+
+ /* Consume data off the serial port */
+ ConMgrSerialPortConsumer();
+ switch (ExecutePostConsumerCommand)
+ {
+ case 1:
+ /* A reboot was sent, do it */
+ DoRebootCommand(FALSE);
+ break;
+
+ case 2:
+ /* A close was sent, do it */
+ ChanMgrCloseChannel(ExecutePostConsumerCommandData);
+ ChanMgrReleaseChannel(ExecutePostConsumerCommandData);
+ break;
+
+ case 3:
+ /* A shutdown was sent, do it */
+ DoRebootCommand(TRUE);
+ break;
+ }
+
+ /* Clear the serial port consumer state */
+ ExecutePostConsumerCommand = 0;
+ ExecutePostConsumerCommandData = NULL;
+ }
+}
+
+NTSTATUS
+NTAPI
+ConMgrGetChannelCloseMessage(IN PSAC_CHANNEL Channel,
+ IN NTSTATUS CloseStatus,
+ OUT PWCHAR OutputBuffer)
{
ASSERT(FALSE);
+ return STATUS_NOT_IMPLEMENTED;
}
NTSTATUS
else
{
SAC_DBG(SAC_DBG_INIT, "SAC CreateDeviceSecurityDescriptor : Unable to create Raw ACL, error : %x\n", Status);
+ /* FIXME: Temporary hack */
+ Status = STATUS_SUCCESS;
goto CleanupPath;
}
KeInitializeTimer(&DeviceExtension->Timer);
KeInitializeDpc(&DeviceExtension->Dpc, TimerDpcRoutine, DeviceExtension);
KeInitializeSpinLock(&DeviceExtension->Lock);
- KeInitializeEvent(&DeviceExtension->Event, SynchronizationEvent, 0);
+ KeInitializeEvent(&DeviceExtension->Event, SynchronizationEvent, FALSE);
InitializeListHead(&DeviceExtension->List);
/* Attempt to enable HDL support */
DeviceExtension->PriorityFail = TRUE;
/* Initialize rundown and wait for the thread to do it */
- KeInitializeEvent(&DeviceExtension->RundownEvent, SynchronizationEvent, 0);
- KeSetEvent(&DeviceExtension->Event, DeviceExtension->PriorityBoost, 0);
+ KeInitializeEvent(&DeviceExtension->RundownEvent, SynchronizationEvent, FALSE);
+ KeSetEvent(&DeviceExtension->Event, DeviceExtension->PriorityBoost, FALSE);
Status = KeWaitForSingleObject(&DeviceExtension->RundownEvent,
Executive,
KernelMode,
SAC_DBG(SAC_DBG_ENTRY_EXIT, "Entering.\n");
/* If we already did this, bail out */
- if (!GlobalDataInitialized) goto SuccessExit;
+ if (GlobalDataInitialized) goto SuccessExit;
/* Setup the symbolic link for Win32 support */
RtlInitUnicodeString(&LinkName, L"\\DosDevices\\SAC");
/* GLOBALS *******************************************************************/
+LONG TimerDpcCount;
+
/* FUNCTIONS *****************************************************************/
NTSTATUS
IN PVOID SystemArgument1,
IN PVOID SystemArgument2)
{
+ HEADLESS_RSP_GET_BYTE ByteValue;
+ ULONG ValueSize;
+ BOOLEAN GotChar;
+ NTSTATUS Status;
+ PSAC_DEVICE_EXTENSION SacExtension;
+
+ /* Update our counter */
+ _InterlockedExchangeAdd(&TimerDpcCount, 1);
+
+ /* Set defaults and loop for new characters */
+ GotChar = FALSE;
+ ValueSize = sizeof(ByteValue);
+ do
+ {
+ /* Ask the kernel for a byte */
+ Status = HeadlessDispatch(HeadlessCmdGetByte,
+ NULL,
+ 0,
+ &ByteValue,
+ &ValueSize);
+
+ /* Break out if there's nothing interesting */
+ if (!NT_SUCCESS(Status)) break;
+ if (!ByteValue.Value) break;
+ /* Update the serial port buffer */
+ SerialPortBuffer[SerialPortProducerIndex] = ByteValue.Value;
+ GotChar = TRUE;
+
+ /* Update the index, let it roll-over if needed */
+ _InterlockedExchange(&SerialPortProducerIndex,
+ (SerialPortProducerIndex + 1) &
+ (SAC_SERIAL_PORT_BUFFER_SIZE - 1));
+ } while (ByteValue.Value);
+
+ /* Did we get anything */
+ if (GotChar)
+ {
+ /* Signal the worker thread that there is work to do */
+ SacExtension = DeferredContext;
+ KeSetEvent(&SacExtension->Event, SacExtension->PriorityBoost, FALSE);
+ }
}
VOID
IN PCHAR File,
IN ULONG Line)
{
+ PVOID p;
+ p = ExAllocatePoolWithTag(NonPagedPool, PoolSize, Tag);
+ SAC_DBG(SAC_DBG_MM, "Returning block 0x%X.\n", p);
+ return p;
+#if 0
KIRQL OldIrql;
PSAC_MEMORY_LIST GlobalDescriptor, NewDescriptor;
PSAC_MEMORY_ENTRY LocalDescriptor, NextDescriptor;
SAC_DBG(SAC_DBG_MM, "Entering.\n");
/* Acquire the memory allocation lock and align the size request */
- KeAcquireSpinLock(&MemoryLock, &OldIrql);;
+ KeAcquireSpinLock(&MemoryLock, &OldIrql);
PoolSize = ALIGN_UP(PoolSize, ULONGLONG);
#if _USE_SAC_HEAP_ALLOCATOR_
Buffer = LocalDescriptor + 1;
RtlZeroMemory(Buffer, PoolSize);
return Buffer;
+#endif
}
VOID
NTAPI
MyFreePool(IN PVOID *Block)
{
+#if 0
PSAC_MEMORY_ENTRY NextDescriptor;
PSAC_MEMORY_ENTRY ThisDescriptor, FoundDescriptor;
PSAC_MEMORY_ENTRY LocalDescriptor = (PVOID)((ULONG_PTR)(*Block) - sizeof(SAC_MEMORY_ENTRY));
LocalSize = GlobalSize = 0;
ThisDescriptor = (PVOID)LocalSize;
NextDescriptor = (PVOID)GlobalSize;
- GlobalDescriptor = (PVOID) ThisDescriptor;
+ GlobalDescriptor = (PVOID)ThisDescriptor;
FoundDescriptor = (PVOID)GlobalDescriptor;
- GlobalDescriptor = (PVOID) NextDescriptor;
- NextDescriptor = (PVOID) FoundDescriptor;
+ GlobalDescriptor = (PVOID)NextDescriptor;
+ NextDescriptor = (PVOID)FoundDescriptor;
/* Use the NT pool allocator*/
ExFreePool(LocalDescriptor);
/* Release the lock, delete the address, and return */
KeReleaseSpinLock(&MemoryLock, OldIrql);
+#endif
+ ExFreePool(*Block);
*Block = NULL;
SAC_DBG(SAC_DBG_MM, "exiting.\n");
}
{
CHECK_PARAMETER(Channel);
+ /* Allocate the output buffer */
Channel->OBuffer = SacAllocatePool(SAC_RAW_OBUFFER_SIZE, GLOBAL_BLOCK_TAG);
CHECK_ALLOCATION(Channel->OBuffer);
+ /* Allocate the input buffer */
Channel->IBuffer = SacAllocatePool(SAC_RAW_IBUFFER_SIZE, GLOBAL_BLOCK_TAG);
CHECK_ALLOCATION(Channel->IBuffer);
+ /* Reset all flags and return success */
Channel->OBufferIndex = 0;
Channel->OBufferFirstGoodIndex = 0;
Channel->ChannelHasNewIBufferData = FALSE;
Channel->ChannelHasNewOBufferData = FALSE;
-
return STATUS_SUCCESS;
}
{
CHECK_PARAMETER(Channel);
- if (Channel->OBuffer)
- {
- SacFreePool(Channel->OBuffer);
- }
-
- if (Channel->IBuffer)
- {
- SacFreePool(Channel->IBuffer);
- }
-
+ /* Free the buffer and then destroy the channel */
+ if (Channel->OBuffer) SacFreePool(Channel->OBuffer);
+ if (Channel->IBuffer) SacFreePool(Channel->IBuffer);
return ChannelDestroy(Channel);
}
return Channel->ChannelHasNewOBufferData;
}
-FORCEINLINE
-BOOLEAN
-ChannelHasNewIBufferData(IN PSAC_CHANNEL Channel)
-{
- return Channel->ChannelHasNewIBufferData;
-}
-
NTSTATUS
NTAPI
RawChannelORead(IN PSAC_CHANNEL Channel,
return ConMgrFlushData(Channel);
}
+NTSTATUS
+NTAPI
+RawChannelOWrite(IN PSAC_CHANNEL Channel,
+ IN PCHAR String,
+ IN ULONG Length)
+{
+ CHECK_PARAMETER1(Channel);
+ CHECK_PARAMETER2(String);
+
+ if ((ConMgrIsWriteEnabled(Channel)) && (Channel->WriteEnabled))
+ {
+ return RawChannelOEcho(Channel, String, Length);
+ }
+
+ return RawChannelOWrite2(Channel, String, Length);
+}
+
ULONG
NTAPI
RawChannelGetIBufferIndex(IN PSAC_CHANNEL Channel)
ASSERT(Channel);
ASSERT(Channel->IBufferIndex < SAC_RAW_IBUFFER_SIZE);
+ /* Return the current buffer index */
return Channel->IBufferIndex;
}
ASSERT(Channel);
ASSERT(Channel->IBufferIndex < SAC_RAW_IBUFFER_SIZE);
+ /* Set the new index, and if it's not zero, it means we have data */
Channel->IBufferIndex = BufferIndex;
- Channel->ChannelHasNewIBufferData = BufferIndex != 0;
-
- if (!Channel->IBufferIndex)
- {
- if (Channel->Flags & SAC_CHANNEL_FLAG_HAS_NEW_DATA_EVENT)
- {
- ChannelClearEvent(Channel, HasNewDataEvent);
- UNREFERENCED_PARAMETER(Status);
- }
- }
-}
-
-NTSTATUS
-NTAPI
-RawChannelOWrite(IN PSAC_CHANNEL Channel,
- IN PCHAR String,
- IN ULONG Length)
-{
- CHECK_PARAMETER1(Channel);
- CHECK_PARAMETER2(String);
+ _InterlockedExchange(&Channel->ChannelHasNewIBufferData, BufferIndex != 0);
- if ((ConMgrIsWriteEnabled(Channel)) && (Channel->WriteEnabled))
+ /* If we have new data, and an event has been registered... */
+ if (!(Channel->IBufferIndex) &&
+ (Channel->Flags & SAC_CHANNEL_FLAG_HAS_NEW_DATA_EVENT))
{
- return RawChannelOEcho(Channel, String, Length);
+ /* Go ahead and signal it */
+ ChannelClearEvent(Channel, HasNewDataEvent);
+ UNREFERENCED_PARAMETER(Status);
}
-
- return RawChannelOWrite2(Channel, String, Length);
}
NTSTATUS
IN PULONG ReturnBufferSize)
{
ULONG CopyChars;
-
CHECK_PARAMETER1(Channel);
CHECK_PARAMETER2(Buffer);
CHECK_PARAMETER_WITH_STATUS(BufferSize > 0, STATUS_INVALID_BUFFER_SIZE);
+ /* Assume failure */
*ReturnBufferSize = 0;
+ /* Check how many bytes are in the buffer */
if (Channel->ChannelInputBufferLength(Channel) == 0)
{
+ /* Apparently nothing. Make sure the flag indicates so too */
ASSERT(ChannelHasNewIBufferData(Channel) == FALSE);
}
else
{
- CopyChars = Channel->ChannelInputBufferLength(Channel);
- if (CopyChars > BufferSize) CopyChars = BufferSize;
+ /* Use the smallest number of bytes either in the buffer or requested */
+ CopyChars = min(Channel->ChannelInputBufferLength(Channel), BufferSize);
ASSERT(CopyChars <= Channel->ChannelInputBufferLength(Channel));
+ /* Copy them into the caller's buffer */
RtlCopyMemory(Buffer, Channel->IBuffer, CopyChars);
+ /* Update the channel's index past the copied (read) bytes */
RawChannelSetIBufferIndex(Channel,
RawChannelGetIBufferIndex(Channel) - CopyChars);
+ /* Are there still bytes that haven't been read yet? */
if (Channel->ChannelInputBufferLength(Channel))
{
+ /* Shift them up in the buffer */
RtlMoveMemory(Channel->IBuffer,
&Channel->IBuffer[CopyChars],
Channel->ChannelInputBufferLength(Channel));
}
+ /* Return the number of bytes we actually copied */
*ReturnBufferSize = CopyChars;
}
+ /* Return success */
return STATUS_SUCCESS;
}
CHECK_PARAMETER1(Channel);
CHECK_PARAMETER2(BufferStatus);
+ /* If the index is beyond the length, the buffer must be full */
*BufferStatus = RawChannelGetIBufferIndex(Channel) > SAC_RAW_IBUFFER_SIZE;
return STATUS_SUCCESS;
}
RawChannelIBufferLength(IN PSAC_CHANNEL Channel)
{
ASSERT(Channel);
+
+ /* The index is the current length (since we're 0-based) */
return RawChannelGetIBufferIndex(Channel);
}
-CHAR
+WCHAR
NTAPI
RawChannelIReadLast(IN PSAC_CHANNEL Channel)
{
UCHAR LastChar = 0;
-
ASSERT(Channel);
+ /* Check if there's anything to read in the buffer */
if (Channel->ChannelInputBufferLength(Channel))
{
- RawChannelSetIBufferIndex(Channel, RawChannelGetIBufferIndex(Channel) - 1);
+ /* Go back one character */
+ RawChannelSetIBufferIndex(Channel,
+ RawChannelGetIBufferIndex(Channel) - 1);
+ /* Read it, and clear its current value */
LastChar = Channel->IBuffer[RawChannelGetIBufferIndex(Channel)];
- Channel->IBuffer[RawChannelGetIBufferIndex(Channel)] = 0;
+ Channel->IBuffer[RawChannelGetIBufferIndex(Channel)] = ANSI_NULL;
}
+ /* Return the last character */
return LastChar;
}
NTSTATUS Status;
BOOLEAN IsFull;
ULONG Index;
-
CHECK_PARAMETER1(Channel);
CHECK_PARAMETER2(Buffer);
CHECK_PARAMETER_WITH_STATUS(BufferSize > 0, STATUS_INVALID_BUFFER_SIZE);
+ /* First, check if the input buffer still has space */
Status = RawChannelIBufferIsFull(Channel, &IsFull);
if (!NT_SUCCESS(Status)) return Status;
-
if (IsFull) return STATUS_UNSUCCESSFUL;
+ /* Get the current buffer index */
Index = RawChannelGetIBufferIndex(Channel);
- if ((SAC_RAW_IBUFFER_SIZE - Index) >= BufferSize) return STATUS_INSUFFICIENT_RESOURCES;
+ if ((SAC_RAW_IBUFFER_SIZE - Index) < BufferSize)
+ {
+ return STATUS_INSUFFICIENT_RESOURCES;
+ }
+ /* Copy the new data */
RtlCopyMemory(&Channel->IBuffer[Index], Buffer, BufferSize);
+ /* Update the index */
RawChannelSetIBufferIndex(Channel, BufferSize + Index);
+ /* Signal the event, if one was set */
if (Channel->Flags & SAC_CHANNEL_FLAG_HAS_NEW_DATA_EVENT)
{
ChannelSetEvent(Channel, HasNewDataEvent);
}
+ /* All done */
return STATUS_SUCCESS;
}
#define SAC_DBG_UTIL 0x02
#define SAC_DBG_INIT 0x04
#define SAC_DBG_MM 0x1000
+#define SAC_DBG_MACHINE 0x2000
#define SAC_DBG(x, ...) \
if (SACDebug & x) \
{ \
#define SAC_MAX_CHANNELS 10
#define SAC_SERIAL_PORT_BUFFER_SIZE 1024 // 1KB
#define SAC_MAX_MESSAGES 200
+#define SAC_VTUTF8_COL_WIDTH 80
+#define SAC_VTUTF8_COL_HEIGHT 25
//
// Channel flags
);
typedef
-CHAR
+WCHAR
(NTAPI *PSAC_CHANNEL_IREAD_LAST)(
IN struct _SAC_CHANNEL* Channel
);
IN PSAC_CHANNEL Channel
);
+NTSTATUS
+NTAPI
+ChannelIWrite(
+ IN PSAC_CHANNEL Channel,
+ IN PCHAR Buffer,
+ IN ULONG BufferSize
+);
+
+WCHAR
+NTAPI
+ChannelIReadLast(
+ IN PSAC_CHANNEL Channel
+);
+
+ULONG
+NTAPI
+ChannelIBufferLength(
+ IN PSAC_CHANNEL Channel
+);
+
+NTSTATUS
+NTAPI
+ChannelIRead(
+ IN PSAC_CHANNEL Channel,
+ IN PCHAR Buffer,
+ IN ULONG BufferSize,
+ IN OUT PULONG ResultBufferSize
+);
+
//
// RAW Channel Table
//
IN PSAC_CHANNEL Channel
);
-CHAR
+WCHAR
NTAPI
RawChannelIReadLast(
IN PSAC_CHANNEL Channel
IN ULONG BufferSize
);
+//
+// VT-UTF8 Channel Table
+//
+NTSTATUS
+NTAPI
+VTUTF8ChannelCreate(
+ IN PSAC_CHANNEL Channel
+);
+
+NTSTATUS
+NTAPI
+VTUTF8ChannelDestroy(
+ IN PSAC_CHANNEL Channel
+);
+
+NTSTATUS
+NTAPI
+VTUTF8ChannelORead(
+ IN PSAC_CHANNEL Channel,
+ IN PCHAR Buffer,
+ IN ULONG BufferSize,
+ OUT PULONG ByteCount
+);
+
+NTSTATUS
+NTAPI
+VTUTF8ChannelOEcho(
+ IN PSAC_CHANNEL Channel,
+ IN PCHAR String,
+ IN ULONG Length
+);
+
+NTSTATUS
+NTAPI
+VTUTF8ChannelOFlush(
+ IN PSAC_CHANNEL Channel
+);
+
+NTSTATUS
+NTAPI
+VTUTF8ChannelOWrite(
+ IN PSAC_CHANNEL Channel,
+ IN PCHAR String,
+ IN ULONG Length
+);
+
+NTSTATUS
+NTAPI
+VTUTF8ChannelIRead(
+ IN PSAC_CHANNEL Channel,
+ IN PCHAR Buffer,
+ IN ULONG BufferSize,
+ IN PULONG ReturnBufferSize
+);
+
+NTSTATUS
+NTAPI
+VTUTF8ChannelIBufferIsFull(
+ IN PSAC_CHANNEL Channel,
+ OUT PBOOLEAN BufferStatus
+);
+
+ULONG
+NTAPI
+VTUTF8ChannelIBufferLength(
+ IN PSAC_CHANNEL Channel
+);
+
+WCHAR
+NTAPI
+VTUTF8ChannelIReadLast(
+ IN PSAC_CHANNEL Channel
+);
+
+NTSTATUS
+NTAPI
+VTUTF8ChannelIWrite(
+ IN PSAC_CHANNEL Channel,
+ IN PCHAR Buffer,
+ IN ULONG BufferSize
+);
+
+
//
// Helper Routines
//
+BOOLEAN
+NTAPI
+SacTranslateUtf8ToUnicode(
+ IN CHAR Utf8Char,
+ IN PCHAR Utf8Buffer,
+ OUT PWCHAR Utf8Value
+);
+
+ULONG
+NTAPI
+GetMessageLineCount(
+ IN ULONG MessageIndex
+);
+
NTSTATUS
NTAPI
SerialBufferGetChar(
IN BOOLEAN Reboot
);
+VOID
+NTAPI
+DoFullInfoCommand(
+ VOID
+);
+
+VOID
+NTAPI
+DoPagingCommand(
+ VOID
+);
+
+VOID
+NTAPI
+DoSetTimeCommand(
+ IN PCHAR InputTime
+);
+
+VOID
+NTAPI
+DoKillCommand(
+ IN PCHAR KillString
+);
+
+VOID
+NTAPI
+DoLowerPriorityCommand(
+ IN PCHAR PrioString
+);
+
+VOID
+NTAPI
+DoRaisePriorityCommand(
+ IN PCHAR PrioString
+);
+
+VOID
+NTAPI
+DoLimitMemoryCommand(
+ IN PCHAR LimitString
+);
+
+VOID
+NTAPI
+DoCrashCommand(
+ VOID
+);
+
+VOID
+NTAPI
+DoMachineInformationCommand(
+ VOID
+);
+
+VOID
+NTAPI
+DoChannelCommand(
+ IN PCHAR ChannelString
+);
+
+VOID
+NTAPI
+DoCmdCommand(
+ IN PCHAR InputString
+);
+
+VOID
+NTAPI
+DoLockCommand(
+ VOID
+);
+
+VOID
+NTAPI
+DoHelpCommand(
+ VOID
+);
+
+VOID
+NTAPI
+DoGetNetInfo(
+ IN BOOLEAN DoPrint
+);
+
+VOID
+NTAPI
+DoSetIpAddressCommand(
+ IN PCHAR IpString
+);
+
+VOID
+NTAPI
+DoTlistCommand(
+ VOID
+);
+
//
// External data
//
extern KMUTEX CurrentChannelLock;
extern LONG CurrentChannelRefCount;
extern PCHAR SerialPortBuffer;
+extern LONG SerialPortConsumerIndex, SerialPortProducerIndex;
extern PCHAR Utf8ConversionBuffer;
+extern BOOLEAN GlobalPagingNeeded;
extern ULONG Utf8ConversionBufferSize;
+extern BOOLEAN CommandConsoleLaunchingEnabled;
//
// Function to initailize a SAC Semaphore Lock
/* Return the index of the channel */
return Channel->Index;
}
+
+FORCEINLINE
+BOOLEAN
+ChannelHasNewIBufferData(IN PSAC_CHANNEL Channel)
+{
+ /* Return if there's any new data in the input buffer */
+ return Channel->ChannelHasNewIBufferData;
+}
/* GLOBALS *******************************************************************/
PCHAR Utf8ConversionBuffer;
-ULONG Utf8ConversionBufferSize;
+ULONG Utf8ConversionBufferSize = PAGE_SIZE;
+
PSAC_MACHINE_INFO MachineInformation;
+
PVOID RequestSacCmdEventObjectBody;
PKEVENT RequestSacCmdEventWaitObjectBody;
PVOID RequestSacCmdSuccessEventObjectBody;
/* FUNCTIONS *****************************************************************/
+BOOLEAN
+NTAPI
+SacTranslateUtf8ToUnicode(IN CHAR Utf8Char,
+ IN PCHAR Utf8Buffer,
+ OUT PWCHAR Utf8Value)
+{
+ ULONG i;
+
+ /* Find out how many valid characters we have in the buffer */
+ i = 0;
+ while (Utf8Buffer[i++] && (i < 3));
+
+ /* If we have at least 3, shift everything by a byte */
+ if (i >= 3)
+ {
+ /* The last input character goes at the end */
+ Utf8Buffer[0] = Utf8Buffer[1];
+ Utf8Buffer[1] = Utf8Buffer[2];
+ Utf8Buffer[2] = Utf8Char;
+ }
+ else
+ {
+ /* We don't have more than 3 characters, place the input at the index */
+ Utf8Buffer[i] = Utf8Char;
+ }
+
+ /* Print to debugger */
+ SAC_DBG(SAC_DBG_ENTRY_EXIT, "SacTranslateUtf8ToUnicode - About to decode the UTF8 buffer.\n");
+ SAC_DBG(SAC_DBG_ENTRY_EXIT, " UTF8[0]: 0x%02lx UTF8[1]: 0x%02lx UTF8[2]: 0x%02lx\n",
+ Utf8Buffer[0],
+ Utf8Buffer[1],
+ Utf8Buffer[2]);
+
+ /* Is this a simple ANSI character? */
+ if (!(Utf8Char & 0x80))
+ {
+ /* Return it as Unicode, nothing left to do */
+ SAC_DBG(SAC_DBG_ENTRY_EXIT, "SACDRV: SacTranslateUTf8ToUnicode - Case1\n");
+ *Utf8Value = (WCHAR)Utf8Char;
+ Utf8Buffer[0] = Utf8Buffer[1];
+ Utf8Buffer[1] = Utf8Buffer[2];
+ Utf8Buffer[2] = UNICODE_NULL;
+ return TRUE;
+ }
+
+ /* Anything else is not yet supported */
+ ASSERT(FALSE);
+ return FALSE;
+}
+
BOOLEAN
NTAPI
SacTranslateUnicodeToUtf8(IN PWCHAR SourceBuffer,
OUT PULONG UTF8Count,
OUT PULONG ProcessedCount)
{
- ASSERT(FALSE);
- return FALSE;
+ *UTF8Count = 0;
+ *ProcessedCount = 0;
+
+ while ((*SourceBuffer) &&
+ (*UTF8Count < DestinationBufferSize) &&
+ (*ProcessedCount < SourceBufferLength))
+ {
+ if (*SourceBuffer & 0xFF80)
+ {
+ if (*SourceBuffer & 0xF800)
+ {
+ if ((*UTF8Count + 3) >= DestinationBufferSize) break;
+ DestinationBuffer[*UTF8Count] = ((*SourceBuffer >> 12) & 0xF) | 0xE0;
+ ++*UTF8Count;
+ DestinationBuffer[*UTF8Count] = ((*SourceBuffer >> 6) & 0x3F) | 0x80;
+ }
+ else
+ {
+ if ((*UTF8Count + 2) >= DestinationBufferSize) break;
+ DestinationBuffer[*UTF8Count] = ((*SourceBuffer >> 6) & 31) | 0xC0;
+ }
+ ++*UTF8Count;
+ DestinationBuffer[*UTF8Count] = (*SourceBuffer & 0x3F) | 0x80;
+ }
+ else
+ {
+ DestinationBuffer[*UTF8Count] = (*SourceBuffer & 0x7F);
+ }
+
+ ++*UTF8Count;
+ ++*ProcessedCount;
+ ++SourceBuffer;
+ }
+
+ ASSERT(*ProcessedCount <= SourceBufferLength);
+ ASSERT(*UTF8Count <= DestinationBufferSize);
+ return TRUE;
}
PWCHAR
IN PWCHAR MessageString,
IN ULONG MessageSize)
{
- /* FIXME: For now don't format anything */
- wcsncpy(FormattedString, MessageString, MessageSize / sizeof(WCHAR));
+ SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC SacFormatMessage: Entering.\n");
+
+ /* Check if any of the parameters are NULL or zero */
+ if (!(MessageString) || !(FormattedString) || !(MessageSize))
+ {
+ SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC SacFormatMessage: Exiting with invalid parameters.\n");
+ return;
+ }
+
+ /* Keep going as long as there's still characters */
+ while ((MessageString[0]) && (MessageSize))
+ {
+ /* Is it a non-formatting character? */
+ if (MessageString[0] != L'%')
+ {
+ /* Just write it back into the buffer and keep going */
+ *FormattedString++ = MessageString[0];
+ MessageString++;
+ }
+ else
+ {
+ /* Go over the format characters we recognize */
+ switch (MessageString[1])
+ {
+ case L'0':
+ *FormattedString = UNICODE_NULL;
+ return;
+
+ case L'%':
+ *FormattedString++ = L'%';
+ break;
+
+ case L'\\':
+ *FormattedString++ = L'\r';
+ *FormattedString++ = L'\n';
+ break;
+
+ case L'r':
+ *FormattedString++ = L'\r';
+ break;
+
+ case L'b':
+ *FormattedString++ = L' ';
+ break;
+
+ case L'.':
+ *FormattedString++ = L'.';
+ break;
+
+ case L'!':
+ *FormattedString++ = L'!';
+ break;
+
+ default:
+ /* Only move forward one character */
+ MessageString--;
+ break;
+ }
+
+ /* Move forward two characters */
+ MessageString += 2;
+ }
+
+ /* Move to the next character*/
+ MessageSize--;
+ }
+
+ /* All done */
+ *FormattedString = UNICODE_NULL;
+ SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC SacFormatMessage: Exiting.\n");
}
NTSTATUS
NTAPI
PreloadGlobalMessageTable(IN PVOID ImageBase)
{
- NTSTATUS Status;
+ NTSTATUS Status, Status2;
ULONG MessageId, TotalLength, TextSize, i;
PWCHAR StringBuffer;
PMESSAGE_RESOURCE_ENTRY MessageEntry;
SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC PreloadGlobalMessageTable: Entering.\n");
/* Nothing to do if we already have a table */
+ Status = STATUS_SUCCESS;
if (GlobalMessageTable) goto Exit;
/* Loop through up to 200 messages */
for (MessageId = 1; MessageId != SAC_MAX_MESSAGES; MessageId++)
{
/* Find this message ID in the string table*/
- Status = RtlFindMessage(ImageBase,
- 11,
- LANG_NEUTRAL,
- MessageId,
- &MessageEntry);
- if (NT_SUCCESS(Status))
+ Status2 = RtlFindMessage(ImageBase,
+ 11,
+ LANG_NEUTRAL,
+ MessageId,
+ &MessageEntry);
+ if (NT_SUCCESS(Status2))
{
/* Make sure it's Unicode */
ASSERT(MessageEntry->Flags & MESSAGE_RESOURCE_UNICODE);
for (i = 0, MessageId = 1; MessageId != SAC_MAX_MESSAGES; MessageId++)
{
/* Make sure the message is still there...! */
- Status = RtlFindMessage(ImageBase,
- 11,
- LANG_NEUTRAL,
- MessageId,
- &MessageEntry);
- if (NT_SUCCESS(Status))
+ Status2 = RtlFindMessage(ImageBase,
+ 11,
+ LANG_NEUTRAL,
+ MessageId,
+ &MessageEntry);
+ if (NT_SUCCESS(Status2))
{
/* Write the entry in the message table*/
GlobalMessageTable[i].Index = MessageId;
ASSERT((ULONG)(wcslen(StringBuffer)*sizeof(WCHAR)) <= TextSize);
/* Move to the next buffer space */
- StringBuffer += TextSize;
+ StringBuffer += (TextSize / sizeof(WCHAR));
/* Move to the next entry, make sure the status is full success */
i++;
return STATUS_SUCCESS;
}
-NTSTATUS
-NTAPI
-TranslateMachineInformationXML(IN PWCHAR *Buffer,
- IN PWCHAR ExtraData)
-{
- NTSTATUS Status;
- ULONG Size;
- PWCHAR p;
- CHECK_PARAMETER1(Buffer);
-
- Status = STATUS_SUCCESS;
- Size = wcslen(L"<machine-info>\r\n");
-
- if (MachineInformation->MachineName)
- {
- Size += wcslen(MachineInformation->MachineName);
- Size += wcslen(L"<name>%s</name>\r\n");
- }
-
- if (MachineInformation->MachineGuid)
- {
- Size += wcslen(MachineInformation->MachineGuid);
- Size += wcslen(L"<guid>%s</guid>\r\n");
- }
-
- if (MachineInformation->ProcessorArchitecture)
- {
- Size += wcslen(MachineInformation->ProcessorArchitecture);
- Size += wcslen(L"<processor-architecture>%s</processor-architecture>\r\n");
- }
-
- if (MachineInformation->MajorVersion)
- {
- Size += wcslen(MachineInformation->MajorVersion);
- Size += wcslen(L"<os-version>%s</os-version>\r\n");
- }
-
- if (MachineInformation->BuildNumber)
- {
- Size += wcslen(MachineInformation->BuildNumber);
- Size += wcslen(L"<os-build-number>%s</os-build-number>\r\n");
- }
-
- if (MachineInformation->ProductType)
- {
- Size += wcslen(MachineInformation->ProductType);
- Size += wcslen(L"<os-product>%s</os-product>\r\n");
- }
-
- if (MachineInformation->ServicePack)
- {
- Size += wcslen(MachineInformation->ServicePack);
- Size += wcslen(L"<os-service-pack>%s</os-service-pack>\r\n");
- }
-
- if (ExtraData) Size += wcslen(ExtraData);
-
- Size += wcslen(L"</machine-info>\r\n");
-
- p = (PWCHAR)SacAllocatePool((Size + sizeof(ANSI_NULL)) * sizeof(WCHAR), GLOBAL_BLOCK_TAG);
-
- *Buffer = p;
- if (!p) return STATUS_NO_MEMORY;
-
- Size = wcslen(L"<machine-info>\r\n");
- wcscpy(p, L"<machine-info>\r\n");
-
- p += Size;
-
- if (MachineInformation->MachineName)
- {
- p += swprintf(p, L"<name>%s</name>\r\n", MachineInformation->MachineName);
- }
-
- if (MachineInformation->MachineGuid)
- {
- p += swprintf(p, L"<guid>%s</guid>\r\n", MachineInformation->MachineGuid);
- }
-
- if (MachineInformation->ProcessorArchitecture)
- {
- p += swprintf(p, L"<processor-architecture>%s</processor-architecture>\r\n", MachineInformation->ProcessorArchitecture);
- }
-
- if (MachineInformation->MajorVersion)
- {
- p += swprintf(p, L"<os-version>%s</os-version>\r\n", MachineInformation->MajorVersion);
- }
-
- if (MachineInformation->BuildNumber)
- {
- p += swprintf(p, L"<os-build-number>%s</os-build-number>\r\n", MachineInformation->BuildNumber);
- }
-
- if (MachineInformation->ProductType)
- {
- p += swprintf(p, L"<os-product>%s</os-product>\r\n", MachineInformation->ProductType);
- }
-
- if (MachineInformation->ServicePack)
- {
- p += swprintf(p, L"<os-service-pack>%s</os-service-pack>\r\n", MachineInformation->ServicePack);
- }
-
- if (ExtraData)
- {
- Size = wcslen(ExtraData);
- wcscpy(p, ExtraData);
- p += Size;
- }
-
- wcscpy(p, L"</machine-info>\r\n");
- ASSERT((((ULONG) wcslen(*Buffer) + 1) * sizeof(WCHAR)) <= Size);
- return Status;
-}
-
-VOID
-NTAPI
-InitializeMachineInformation(VOID)
-{
- SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC Initialize Machine Information : Entering.\n");
-
- /* FIXME: TODO */
- MachineInformation = NULL;
- ASSERT(FALSE);
-
- SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC Initialize Machine Information : Exiting with error.\n");
-}
-
NTSTATUS
NTAPI
GetRegistryValueBuffer(IN PCWSTR KeyName,
NTSTATUS
NTAPI
-CopyRegistryValueData(IN PULONG* Buffer,
+CopyRegistryValueData(IN PVOID* Buffer,
IN PKEY_VALUE_PARTIAL_INFORMATION PartialInfo)
{
NTSTATUS Status = STATUS_SUCCESS;
return Status;
}
+NTSTATUS
+NTAPI
+TranslateMachineInformationXML(IN PWCHAR *Buffer,
+ IN PWCHAR ExtraData)
+{
+ NTSTATUS Status;
+ ULONG Size;
+ PWCHAR p;
+ CHECK_PARAMETER1(Buffer);
+
+ /* Start by believing the world is beautiful */
+ Status = STATUS_SUCCESS;
+
+ /* First, the header */
+ Size = wcslen(L"<machine-info>\r\n");
+
+ /* Do we have a machine name? */
+ if (MachineInformation->MachineName)
+ {
+ /* Go and add it in */
+ Size += wcslen(MachineInformation->MachineName);
+ Size += wcslen(L"<name>%s</name>\r\n");
+ }
+
+ /* Do we have a GUID? */
+ if (MachineInformation->MachineGuid)
+ {
+ /* Go and add it in */
+ Size += wcslen(MachineInformation->MachineGuid);
+ Size += wcslen(L"<guid>%s</guid>\r\n");
+ }
+
+ /* Do we know the processor? */
+ if (MachineInformation->ProcessorArchitecture)
+ {
+ /* Go and add it in */
+ Size += wcslen(MachineInformation->ProcessorArchitecture);
+ Size += wcslen(L"<processor-architecture>%s</processor-architecture>\r\n");
+ }
+
+ /* Do we have the version? */
+ if (MachineInformation->MajorVersion)
+ {
+ /* Go and add it in */
+ Size += wcslen(MachineInformation->MajorVersion);
+ Size += wcslen(L"<os-version>%s</os-version>\r\n");
+ }
+
+ /* Do we have the build? */
+ if (MachineInformation->BuildNumber)
+ {
+ /* Go and add it in */
+ Size += wcslen(MachineInformation->BuildNumber);
+ Size += wcslen(L"<os-build-number>%s</os-build-number>\r\n");
+ }
+
+ /* Do we have the product type? */
+ if (MachineInformation->ProductType)
+ {
+ /* Go and add it in */
+ Size += wcslen(MachineInformation->ProductType);
+ Size += wcslen(L"<os-product>%s</os-product>\r\n");
+ }
+
+ /* Do we have a service pack? */
+ if (MachineInformation->ServicePack)
+ {
+ /* Go and add it in */
+ Size += wcslen(MachineInformation->ServicePack);
+ Size += wcslen(L"<os-service-pack>%s</os-service-pack>\r\n");
+ }
+
+ /* Anything else we need to know? Add it in too */
+ if (ExtraData) Size += wcslen(ExtraData);
+
+ /* Finally, add the footer */
+ Size += wcslen(L"</machine-info>\r\n");
+
+ /* Convert to bytes and add a NULL */
+ Size += sizeof(ANSI_NULL);
+ Size *= sizeof(WCHAR);
+
+ /* Allocate space for the buffer */
+ p = SacAllocatePool(Size, GLOBAL_BLOCK_TAG);
+ *Buffer = p;
+ if (!p) return STATUS_NO_MEMORY;
+
+ wcscpy(p, L"<machine-info>\r\n");
+ p += wcslen(L"<machine-info>\r\n");;
+
+ if (MachineInformation->MachineName)
+ {
+ p += swprintf(p,
+ L"<name>%s</name>\r\n",
+ MachineInformation->MachineName);
+ }
+
+ if (MachineInformation->MachineGuid)
+ {
+ p += swprintf(p,
+ L"<guid>%s</guid>\r\n",
+ MachineInformation->MachineGuid);
+ }
+
+ if (MachineInformation->ProcessorArchitecture)
+ {
+ p += swprintf(p,
+ L"<processor-architecture>%s</processor-architecture>\r\n",
+ MachineInformation->ProcessorArchitecture);
+ }
+
+ if (MachineInformation->MajorVersion)
+ {
+ p += swprintf(p,
+ L"<os-version>%s</os-version>\r\n",
+ MachineInformation->MajorVersion);
+ }
+
+ if (MachineInformation->BuildNumber)
+ {
+ p += swprintf(p,
+ L"<os-build-number>%s</os-build-number>\r\n",
+ MachineInformation->BuildNumber);
+ }
+
+ if (MachineInformation->ProductType)
+ {
+ p += swprintf(p,
+ L"<os-product>%s</os-product>\r\n",
+ MachineInformation->ProductType);
+ }
+
+ if (MachineInformation->ServicePack)
+ {
+ p += swprintf(p,
+ L"<os-service-pack>%s</os-service-pack>\r\n",
+ MachineInformation->ServicePack);
+ }
+
+ if (ExtraData)
+ {
+ wcscpy(p, ExtraData);
+ p += wcslen(ExtraData);
+ }
+
+ wcscpy(p, L"</machine-info>\r\n");
+ SAC_DBG(SAC_DBG_ENTRY_EXIT, "MachineInformation: %S\n", *Buffer);
+ ASSERT((((ULONG)wcslen(*Buffer) + 1) * sizeof(WCHAR)) <= Size);
+ return Status;
+}
+
+VOID
+NTAPI
+InitializeMachineInformation(VOID)
+{
+ NTSTATUS Status;
+ PWCHAR GuidString, MajorVersion, ServicePack, BuildNumber, MessageBuffer;
+ PWCHAR ProductType;
+ ULONG SuiteTypeMessage;
+ BOOLEAN SetupInProgress = FALSE;
+ GUID SystemGuid;
+ ULONG RealSize, Size, OutputSize;
+ PKEY_VALUE_PARTIAL_INFORMATION PartialInfo;
+ RTL_OSVERSIONINFOEXW VersionInformation;
+ SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC Initialize Machine Information : Entering.\n");
+
+ /* Don't do anything if we already quried this */
+ if (MachineInformation)
+ {
+ SAC_DBG(SAC_DBG_MACHINE, "SAC Initialize Machine Information:: MachineInformationBuffer already initialzied.\n");
+ return;
+ }
+
+ /* Allocate the machine information */
+ MachineInformation = SacAllocatePool(sizeof(*MachineInformation),
+ GLOBAL_BLOCK_TAG);
+ if (!MachineInformation)
+ {
+ goto Fail;
+ }
+
+ /* Zero it out for now */
+ RtlZeroMemory(MachineInformation, sizeof(*MachineInformation));
+
+ /* Query OS version */
+ RtlZeroMemory(&VersionInformation, sizeof(VersionInformation));
+ VersionInformation.dwOSVersionInfoSize = sizeof(VersionInformation);
+ Status = RtlGetVersion((PRTL_OSVERSIONINFOW)&VersionInformation);
+ if (!NT_SUCCESS(Status))
+ {
+ SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC InitializeMachineInformation: Exiting (2).\n");
+ goto Fail;
+ }
+
+ /* Check if setup is in progress */
+ Status = GetRegistryValueBuffer(L"\\Registry\\Machine\\System\\Setup",
+ L"SystemSetupInProgress",
+ &PartialInfo);
+ if (NT_SUCCESS(Status))
+ {
+ /* The key is there, is the value set? */
+ if (*(PULONG)PartialInfo->Data) SetupInProgress = TRUE;
+ SacFreePool(PartialInfo);
+ if (SetupInProgress)
+ {
+ /* Yes, so we'll use a special hostname to identify this */
+ MessageBuffer = GetMessage(SAC_UNINITIALIZED_MSG);
+ Size = wcslen(MessageBuffer);
+ ASSERT(Size > 0);
+ RealSize = Size * sizeof(WCHAR) + sizeof(UNICODE_NULL);
+
+ /* Make room for it and copy it in there */
+ MachineInformation->MachineName = SacAllocatePool(RealSize,
+ GLOBAL_BLOCK_TAG);
+ if (MachineInformation->MachineName)
+ {
+ wcscpy(MachineInformation->MachineName, MessageBuffer);
+ }
+ }
+ }
+
+ /* If we are not in setup mode, or if we failed to check... */
+ if (!SetupInProgress)
+ {
+ /* Query the computer name */
+ Status = GetRegistryValueBuffer(L"\\Registry\\Machine\\System\\"
+ L"CurrentControlSet\\Control\\"
+ L"ComputerName\\ComputerName",
+ L"ComputerName",
+ &PartialInfo);
+ if (!NT_SUCCESS(Status))
+ {
+ /* It's not critical, but we won't have it */
+ SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC InitializeMachineInformation: Failed to get machine name.\n");
+ }
+ else
+ {
+ /* We have the name, copy it from the registry */
+ Status = CopyRegistryValueData((PVOID*)&MachineInformation->
+ MachineName,
+ PartialInfo);
+ SacFreePool(PartialInfo);
+ if (!NT_SUCCESS(Status))
+ {
+ SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC InitializeMachineInformation: Exiting (20).\n");
+ goto Fail;
+ }
+ }
+ }
+
+ /* Next step, try to get the machine GUID */
+ RtlZeroMemory(&SystemGuid, sizeof(SystemGuid));
+ OutputSize = sizeof(SystemGuid);
+ Status = HeadlessDispatch(HeadlessCmdQueryGUID,
+ NULL,
+ 0,
+ &SystemGuid,
+ &OutputSize);
+ if (!NT_SUCCESS(Status))
+ {
+ SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC InitializeMachineInformation: Failed to get Machine GUID.\n");
+ }
+ else
+ {
+ /* We have it -- make room for it */
+ GuidString = SacAllocatePool(0x50, GLOBAL_BLOCK_TAG);
+ if (!GuidString)
+ {
+ SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC InitializeMachineInformation: Exiting (31).\n");
+ goto Fail;
+ }
+
+ /* Build the string with the GUID in it, and save the ppointer to it */
+ swprintf(GuidString,
+ L"%08lx-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
+ SystemGuid.Data1,
+ SystemGuid.Data2,
+ SystemGuid.Data3,
+ SystemGuid.Data4[0],
+ SystemGuid.Data4[1],
+ SystemGuid.Data4[2],
+ SystemGuid.Data4[3],
+ SystemGuid.Data4[4],
+ SystemGuid.Data4[5],
+ SystemGuid.Data4[6],
+ SystemGuid.Data4[7]);
+ MachineInformation->MachineGuid = GuidString;
+ }
+
+ /* Next, query the processor architecture */
+ Status = GetRegistryValueBuffer(L"\\Registry\\Machine\\System\\"
+ L"CurrentControlSet\\Control\\"
+ L"Session Manager\\Environment",
+ L"PROCESSOR_ARCHITECTURE",
+ &PartialInfo);
+ if (!NT_SUCCESS(Status))
+ {
+ /* It's not critical, but we won't have it */
+ SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC InitializeMachineInformation: Exiting (30).\n");
+ }
+ else
+ {
+ /* We have it! Copy the value from the registry */
+ Status = CopyRegistryValueData((PVOID*)&MachineInformation->
+ ProcessorArchitecture,
+ PartialInfo);
+ SacFreePool(PartialInfo);
+ if (!NT_SUCCESS(Status))
+ {
+ SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC InitializeMachineInformation: Exiting (30).\n");
+ goto Fail;
+ }
+ }
+
+ /* Now allocate a buffer for the OS version number */
+ MajorVersion = SacAllocatePool(0x18, GLOBAL_BLOCK_TAG);
+ if (!MajorVersion)
+ {
+ SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC InitializeMachineInformation: Exiting (50).\n");
+ goto Fail;
+ }
+
+ /* Build the buffer and set a pointer to it */
+ swprintf(MajorVersion,
+ L"%d.%d",
+ VersionInformation.dwMajorVersion,
+ VersionInformation.dwMinorVersion);
+ MachineInformation->MajorVersion = MajorVersion;
+
+ /* Now allocate a buffer for the OS build number */
+ BuildNumber = SacAllocatePool(0xC, GLOBAL_BLOCK_TAG);
+ if (!BuildNumber)
+ {
+ SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC InitializeMachineInformation: Exiting (60).\n");
+ goto Fail;
+ }
+
+ /* Build the buffer and set a pointer to it */
+ swprintf(BuildNumber, L"%d", VersionInformation.dwBuildNumber);
+ MachineInformation->BuildNumber = BuildNumber;
+
+ /* Now check what kind of SKU this is */
+ if (ExVerifySuite(DataCenter))
+ {
+ SuiteTypeMessage = SAC_DATACENTER_SUITE_MSG;
+ }
+ else if (ExVerifySuite(EmbeddedNT))
+ {
+ SuiteTypeMessage = SAC_EMBEDDED_SUITE_MSG;
+ }
+ else if (ExVerifySuite(Enterprise))
+ {
+ SuiteTypeMessage = SAC_ENTERPRISE_SUITE_MSG;
+ }
+ else
+ {
+ /* Unknown or perhaps a client SKU */
+ SuiteTypeMessage = SAC_NO_SUITE_MSG;
+ }
+
+ /* Get the string that correponds to the SKU type */
+ MessageBuffer = GetMessage(SuiteTypeMessage);
+ if (!MessageBuffer)
+ {
+ /* We won't have it, but this isn't critical */
+ SAC_DBG(SAC_DBG_INIT, "SAC InitializeMachineInformation: Failed to get product type.\n");
+ }
+ else
+ {
+ /* Calculate the size we need to hold the string */
+ Size = wcslen(MessageBuffer);
+ ASSERT(Size > 0);
+ RealSize = Size * sizeof(WCHAR) + sizeof(UNICODE_NULL);
+
+ /* Allocate a buffer for it */
+ ProductType = SacAllocatePool(RealSize, GLOBAL_BLOCK_TAG);
+ if (!ProductType)
+ {
+ SAC_DBG(SAC_DBG_INIT, "SAC InitializeMachineInformation: Failed product type memory allocation.\n");
+ goto Fail;
+ }
+
+ /* Copy the string and set the pointer */
+ RtlCopyMemory(ProductType, MessageBuffer, RealSize);
+ MachineInformation->ProductType = ProductType;
+ }
+
+ /* Check if this is a SP version or RTM version */
+ if (VersionInformation.wServicePackMajor)
+ {
+ /* This is a service pack, allocate a buffer for the version */
+ ServicePack = SacAllocatePool(0x18, GLOBAL_BLOCK_TAG);
+ if (ServicePack)
+ {
+ /* Build the buffer and set a pointer to it */
+ swprintf(ServicePack,
+ L"%d.%d",
+ VersionInformation.wServicePackMajor,
+ VersionInformation.wServicePackMinor);
+ MachineInformation->ServicePack = ServicePack;
+
+ /* We've collected all the machine info and are done! */
+ return;
+ }
+
+ /* This is the failure path */
+ SAC_DBG(SAC_DBG_INIT, "SAC InitializeMachineInformation: Failed service pack memory allocation.\n");
+ }
+ else
+ {
+ /* Get a generic string that indicates there's no service pack */
+ MessageBuffer = GetMessage(SAC_NO_DATA_MSG);
+ Size = wcslen(MessageBuffer);
+ ASSERT(Size > 0);
+ RealSize = Size * sizeof(WCHAR) + sizeof(UNICODE_NULL);
+
+ /* Allocate memory for the "no service pack" string */
+ ServicePack = SacAllocatePool(RealSize, GLOBAL_BLOCK_TAG);
+ if (ServicePack)
+ {
+ /* Copy the buffer and set a pointer to it */
+ RtlCopyMemory(ServicePack, MessageBuffer, RealSize);
+ MachineInformation->ServicePack = ServicePack;
+
+ /* We've collected all the machine info and are done! */
+ return;
+ }
+
+ SAC_DBG(SAC_DBG_INIT, "SAC InitializeMachineInformation: Failed service pack memory allocation.\n");
+ }
+
+Fail:
+ /* In the failure path, always cleanup the machine information buffer */
+ if (MachineInformation)
+ {
+ SacFreePool(MachineInformation);
+ }
+ SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC Initialize Machine Information : Exiting with error.\n");
+}
+
NTSTATUS
NTAPI
GetCommandConsoleLaunchingPermission(OUT PBOOLEAN Permission)
if (!Buffer) return STATUS_UNSUCCESSFUL;
/* Read the value */
- Status = CopyRegistryValueData(&Data, Buffer);
+ Status = CopyRegistryValueData((PVOID*)&Data, Buffer);
SacFreePool(Buffer);
if (!NT_SUCCESS(Status)) return Status;
RegisterBlueScreenMachineInformation(VOID)
{
PWCHAR XmlBuffer;
- PHEADLESS_BLUE_SCREEN_DATA BsBuffer;
+ PHEADLESS_CMD_SET_BLUE_SCREEN_DATA BsBuffer;
ULONG Length, HeaderLength, TotalLength;
NTSTATUS Status;
ULONG i;
CHECK_PARAMETER_WITH_STATUS(BsBuffer, STATUS_NO_MEMORY);
/* Copy the XML property name */
- strcpy((PCHAR)BsBuffer->XMLData, "MACHINEINFO");
- BsBuffer->Property = (PUCHAR)HeaderLength + sizeof(ANSI_NULL);
+ strcpy((PCHAR)BsBuffer->Data, "MACHINEINFO");
+ BsBuffer->ValueIndex = HeaderLength + sizeof(ANSI_NULL);
/* Copy the data and NULL-terminate it */
for (i = 0; i < Length; i++)
{
- BsBuffer->XMLData[HeaderLength + sizeof(ANSI_NULL) + i] = XmlBuffer[i];
+ BsBuffer->Data[BsBuffer->ValueIndex + i] = XmlBuffer[i];
}
- BsBuffer->XMLData[HeaderLength + sizeof(ANSI_NULL) + i] = ANSI_NULL;
+ BsBuffer->Data[BsBuffer->ValueIndex + i] = ANSI_NULL;
/* Let the OS save the buffer for later */
Status = HeadlessDispatch(HeadlessCmdSetBlueScreenData,
return STATUS_SUCCESS;
}
+ULONG
+NTAPI
+GetMessageLineCount(IN ULONG MessageIndex)
+{
+ ULONG LineCount = 0;
+ PWCHAR Buffer;
+
+ /* Get the message buffer */
+ Buffer = GetMessage(MessageIndex);
+ if (Buffer)
+ {
+ /* Scan it looking for new lines, and increment the conut each time */
+ while (*Buffer) if (*Buffer++ == L'\n') ++LineCount;
+ }
+
+ /* Return the line count */
+ return LineCount;
+}
+
ULONG
ConvertAnsiToUnicode(
IN PWCHAR pwch,
return STATUS_NOT_IMPLEMENTED;
}
-BOOLEAN
-SacTranslateUtf8ToUnicode(
- IN CHAR Utf8Char,
- IN PCHAR UnicodeBuffer,
- OUT PCHAR Utf8Value
- )
-{
- return FALSE;
-}
-
NTSTATUS
TranslateMachineInformationText(
IN PWCHAR Buffer)
return STATUS_NOT_IMPLEMENTED;
}
-ULONG
-GetMessageLineCount(
- IN ULONG MessageIndex
- )
-{
- return 0;
-}
-
NTSTATUS
RegisterSacCmdEvent(
IN PVOID Object,
/*
- * PROJECT: ReactOS Boot Loader
- * LICENSE: BSD - See COPYING.ARM in the top level directory
- * FILE: drivers/sac/driver/vtutf8chan.c
- * PURPOSE: Driver for the Server Administration Console (SAC) for EMS
- * PROGRAMMERS: ReactOS Portable Systems Group
+ * PROJECT: ReactOS Drivers
+ * LICENSE: BSD - See COPYING.ARM in the top level directory
+ * FILE: drivers/sac/driver/vtutf8chan.c
+ * PURPOSE: Driver for the Server Administration Console (SAC) for EMS
+ * PROGRAMMERS: ReactOS Portable Systems Group
*/
-/* INCLUDES *******************************************************************/
+/* INCLUDES ******************************************************************/
#include "sacdrv.h"
-/* GLOBALS ********************************************************************/
+/* GLOBALS *******************************************************************/
-/* FUNCTIONS ******************************************************************/
+CHAR IncomingUtf8ConversionBuffer[4];
+WCHAR IncomingUnicodeValue;
+
+/* FUNCTIONS *****************************************************************/
+
+typedef struct _SAC_CURSOR_DATA
+{
+ UCHAR CursorX;
+ UCHAR CursorY;
+ UCHAR CursorVisible;
+ WCHAR CursorValue;
+} SAC_CURSOR_DATA, *PSAC_CURSOR_DATA;
+
+C_ASSERT(sizeof(SAC_CURSOR_DATA) == 6);
+
+#define SAC_VTUTF8_OBUFFER_SIZE 0x2D00
+#define SAC_VTUTF8_IBUFFER_SIZE 0x2000
NTSTATUS
-VTUTF8ChannelCreate(
- IN PSAC_CHANNEL Channel
- )
+NTAPI
+VTUTF8ChannelOInit(IN PSAC_CHANNEL Channel)
{
- return STATUS_NOT_IMPLEMENTED;
+ PSAC_CURSOR_DATA Cursor;
+ ULONG x, y;
+ CHECK_PARAMETER(Channel);
+
+ /* Set the current channel cursor parameters */
+ Channel->CursorVisible = 0;
+ Channel->CursorX = 40;
+ Channel->CursorY = 37;
+
+ /* Loop the output buffer height by width */
+ Cursor = (PSAC_CURSOR_DATA)Channel->OBuffer;
+ y = SAC_VTUTF8_COL_HEIGHT - 1;
+ do
+ {
+ x = SAC_VTUTF8_COL_WIDTH;
+ do
+ {
+ /* For every character, set the defaults */
+ Cursor->CursorValue = ' ';
+ Cursor->CursorX = 40;
+ Cursor->CursorY = 38;
+
+ /* Move to the next character */
+ Cursor++;
+ } while (--x);
+ } while (--y);
+
+ /* All done */
+ return STATUS_SUCCESS;
}
NTSTATUS
-VTUTF8ChannelDestroy(
- IN PSAC_CHANNEL Channel
- )
+NTAPI
+VTUTF8ChannelCreate(IN PSAC_CHANNEL Channel)
{
- return STATUS_NOT_IMPLEMENTED;
+ NTSTATUS Status;
+ CHECK_PARAMETER(Channel);
+
+ /* Allocate the output buffer */
+ Channel->OBuffer = SacAllocatePool(SAC_VTUTF8_OBUFFER_SIZE, GLOBAL_BLOCK_TAG);
+ CHECK_ALLOCATION(Channel->OBuffer);
+
+ /* Allocate the input buffer */
+ Channel->IBuffer = SacAllocatePool(SAC_VTUTF8_IBUFFER_SIZE, GLOBAL_BLOCK_TAG);
+ CHECK_ALLOCATION(Channel->IBuffer);
+
+ /* Initialize the output stream */
+ Status = VTUTF8ChannelOInit(Channel);
+ if (NT_SUCCESS(Status)) return Status;
+
+ /* Reset all flags and return success */
+ _InterlockedExchange(&Channel->ChannelHasNewOBufferData, 0);
+ _InterlockedExchange(&Channel->ChannelHasNewIBufferData, 0);
+ return STATUS_SUCCESS;
}
NTSTATUS
-VTUTF8ChannelORead(
- IN PSAC_CHANNEL Channel,
- IN PCHAR Buffer,
- IN ULONG BufferSize,
- OUT PULONG ByteCount
- )
+NTAPI
+VTUTF8ChannelDestroy(IN PSAC_CHANNEL Channel)
{
- return STATUS_NOT_IMPLEMENTED;
+ CHECK_PARAMETER(Channel);
+
+ /* Free the buffer and then destroy the channel */
+ if (Channel->OBuffer) SacFreePool(Channel->OBuffer);
+ if (Channel->IBuffer) SacFreePool(Channel->IBuffer);
+ return ChannelDestroy(Channel);
}
NTSTATUS
-VTUTF8ChannelOEcho(
+NTAPI
+VTUTF8ChannelORead(
IN PSAC_CHANNEL Channel,
- IN PWCHAR String,
- IN ULONG Size
+ IN PCHAR Buffer,
+ IN ULONG BufferSize,
+ OUT PULONG ByteCount
)
{
return STATUS_NOT_IMPLEMENTED;
}
BOOLEAN
+NTAPI
VTUTF8ChannelScanForNumber(
IN PWCHAR String,
OUT PULONG Number
}
NTSTATUS
+NTAPI
VTUTF8ChannelAnsiDispatch(
IN NTSTATUS Status,
IN ULONG AnsiCode,
}
NTSTATUS
+NTAPI
VTUTF8ChannelProcessAttributes(
IN PSAC_CHANNEL Channel,
IN UCHAR Attribute
return STATUS_NOT_IMPLEMENTED;
}
-ULONG
-VTUTF8ChannelGetIBufferIndex(
- IN PSAC_CHANNEL Channel
- )
-{
- return 0;
-}
-
-VOID
-VTUTF8ChannelSetIBufferIndex(
- IN PSAC_CHANNEL Channel,
- IN ULONG BufferIndex
- )
-{
-
-}
-
NTSTATUS
+NTAPI
VTUTF8ChannelConsumeEscapeSequence(
IN PSAC_CHANNEL Channel,
IN PWCHAR String
}
NTSTATUS
+NTAPI
VTUTF8ChannelOFlush(
IN PSAC_CHANNEL Channel
)
}
NTSTATUS
-VTUTF8ChannelIRead(
- IN PSAC_CHANNEL Channel,
- IN PCHAR Buffer,
- IN ULONG BufferSize,
- IN PULONG ReturnBufferSize
- )
+NTAPI
+VTUTF8ChannelOWrite2(IN PSAC_CHANNEL Channel,
+ IN PCHAR String,
+ IN ULONG Size)
{
- return STATUS_NOT_IMPLEMENTED;
+ return STATUS_NOT_IMPLEMENTED;
}
NTSTATUS
-VTUTF8ChannelIBufferIsFull(
- IN PSAC_CHANNEL Channel,
- OUT PBOOLEAN BufferStatus
- )
+NTAPI
+VTUTF8ChannelOEcho(IN PSAC_CHANNEL Channel,
+ IN PCHAR String,
+ IN ULONG Size)
{
- return STATUS_NOT_IMPLEMENTED;
+ return STATUS_NOT_IMPLEMENTED;
}
-WCHAR
-VTUTF8ChannelIReadLast(
- IN PSAC_CHANNEL Channel
- )
+NTSTATUS
+NTAPI
+VTUTF8ChannelOWrite(IN PSAC_CHANNEL Channel,
+ IN PCHAR String,
+ IN ULONG Length)
{
- return 0;
+ NTSTATUS Status;
+ CHECK_PARAMETER1(Channel);
+ CHECK_PARAMETER2(String);
+
+ /* Call the lower level function */
+ Status = VTUTF8ChannelOWrite2(Channel, String, Length / sizeof(WCHAR));
+ if (NT_SUCCESS(Status))
+ {
+ /* Is the channel enabled for output? */
+ if ((ConMgrIsWriteEnabled(Channel)) && (Channel->WriteEnabled))
+ {
+ /* Go ahead and output it */
+ Status = VTUTF8ChannelOEcho(Channel, String, Length);
+ }
+ else
+ {
+ /* Otherwise, just remember that we have new data */
+ _InterlockedExchange(&Channel->ChannelHasNewOBufferData, 1);
+ }
+ }
+
+ /* We're done */
+ return Status;
}
ULONG
-VTUTF8ChannelIBufferLength(
- IN PSAC_CHANNEL Channel
- )
+NTAPI
+VTUTF8ChannelGetIBufferIndex(IN PSAC_CHANNEL Channel)
{
- return 0;
+ ASSERT(Channel);
+ ASSERT((Channel->IBufferIndex % sizeof(WCHAR)) == 0);
+ ASSERT(Channel->IBufferIndex < SAC_VTUTF8_IBUFFER_SIZE);
+
+ /* Return the current buffer index */
+ return Channel->IBufferIndex;
+}
+
+VOID
+NTAPI
+VTUTF8ChannelSetIBufferIndex(IN PSAC_CHANNEL Channel,
+ IN ULONG BufferIndex)
+{
+ NTSTATUS Status;
+ ASSERT(Channel);
+ ASSERT((Channel->IBufferIndex % sizeof(WCHAR)) == 0);
+ ASSERT(Channel->IBufferIndex < SAC_VTUTF8_IBUFFER_SIZE);
+
+ /* Set the new index, and if it's not zero, it means we have data */
+ Channel->IBufferIndex = BufferIndex;
+ _InterlockedExchange(&Channel->ChannelHasNewIBufferData, BufferIndex != 0);
+
+ /* If we have new data, and an event has been registered... */
+ if (!(Channel->IBufferIndex) &&
+ (Channel->Flags & SAC_CHANNEL_FLAG_HAS_NEW_DATA_EVENT))
+ {
+ /* Go ahead and signal it */
+ ChannelClearEvent(Channel, HasNewDataEvent);
+ UNREFERENCED_PARAMETER(Status);
+ }
}
NTSTATUS
-VTUTF8ChannelOWrite2(
- IN PSAC_CHANNEL Channel,
- IN PWCHAR String,
- IN ULONG Size
- )
+NTAPI
+VTUTF8ChannelIRead(IN PSAC_CHANNEL Channel,
+ IN PCHAR Buffer,
+ IN ULONG BufferSize,
+ IN PULONG ReturnBufferSize)
{
- return STATUS_NOT_IMPLEMENTED;
+ ULONG CopyChars;
+ CHECK_PARAMETER1(Channel);
+ CHECK_PARAMETER2(Buffer);
+ CHECK_PARAMETER_WITH_STATUS(BufferSize > 0, STATUS_INVALID_BUFFER_SIZE);
+
+ /* Assume failure */
+ *ReturnBufferSize = 0;
+
+ /* Check how many bytes are in the buffer */
+ if (Channel->ChannelInputBufferLength(Channel) == 0)
+ {
+ /* Apparently nothing. Make sure the flag indicates so too */
+ ASSERT(ChannelHasNewIBufferData(Channel) == FALSE);
+ }
+ else
+ {
+ /* Use the smallest number of bytes either in the buffer or requested */
+ CopyChars = min(Channel->ChannelInputBufferLength(Channel) * sizeof(WCHAR),
+ BufferSize);
+ ASSERT(CopyChars <= Channel->ChannelInputBufferLength(Channel));
+
+ /* Copy them into the caller's buffer */
+ RtlCopyMemory(Buffer, Channel->IBuffer, CopyChars);
+
+ /* Update the channel's index past the copied (read) bytes */
+ VTUTF8ChannelSetIBufferIndex(Channel,
+ VTUTF8ChannelGetIBufferIndex(Channel) - CopyChars);
+
+ /* Are there still bytes that haven't been read yet? */
+ if (Channel->ChannelInputBufferLength(Channel))
+ {
+ /* Shift them up in the buffer */
+ RtlMoveMemory(Channel->IBuffer,
+ &Channel->IBuffer[CopyChars],
+ Channel->ChannelInputBufferLength(Channel) *
+ sizeof(WCHAR));
+ }
+
+ /* Return the number of bytes we actually copied */
+ *ReturnBufferSize = CopyChars;
+ }
+
+ /* Return success */
+ return STATUS_SUCCESS;
}
NTSTATUS
-VTUTF8ChannelIWrite(
- IN PSAC_CHANNEL Channel,
- IN PCHAR Buffer,
- IN ULONG BufferSize
- )
+NTAPI
+VTUTF8ChannelIBufferIsFull(IN PSAC_CHANNEL Channel,
+ OUT PBOOLEAN BufferStatus)
{
- return STATUS_NOT_IMPLEMENTED;
+ CHECK_PARAMETER1(Channel);
+
+ /* If the index is beyond the length, the buffer must be full */
+ *BufferStatus = VTUTF8ChannelGetIBufferIndex(Channel) > SAC_VTUTF8_IBUFFER_SIZE;
+ return STATUS_SUCCESS;
+}
+
+ULONG
+NTAPI
+VTUTF8ChannelIBufferLength(IN PSAC_CHANNEL Channel)
+{
+ ASSERT(Channel);
+
+ /* The index is the length, so divide by two to get character count */
+ return VTUTF8ChannelGetIBufferIndex(Channel) / sizeof(WCHAR);
+}
+
+WCHAR
+NTAPI
+VTUTF8ChannelIReadLast(IN PSAC_CHANNEL Channel)
+{
+ PWCHAR LastCharLocation;
+ WCHAR LastChar = 0;
+ ASSERT(Channel);
+
+ /* Check if there's anything to read in the buffer */
+ if (Channel->ChannelInputBufferLength(Channel))
+ {
+ /* Go back one character */
+ VTUTF8ChannelSetIBufferIndex(Channel,
+ VTUTF8ChannelGetIBufferIndex(Channel) -
+ sizeof(WCHAR));
+
+ /* Read it, and clear its current value */
+ LastCharLocation = (PWCHAR)&Channel->IBuffer[VTUTF8ChannelGetIBufferIndex(Channel)];
+ LastChar = *LastCharLocation;
+ *LastCharLocation = UNICODE_NULL;
+ }
+
+ /* Return the last character */
+ return LastChar;
}
NTSTATUS
-VTUTF8ChannelOWrite(
- IN PSAC_CHANNEL Channel,
- IN PWCHAR String,
- IN ULONG Length
- )
+NTAPI
+VTUTF8ChannelIWrite(IN PSAC_CHANNEL Channel,
+ IN PCHAR Buffer,
+ IN ULONG BufferSize)
{
- return STATUS_NOT_IMPLEMENTED;
+ NTSTATUS Status;
+ BOOLEAN IsFull;
+ ULONG Index, i;
+ CHECK_PARAMETER1(Channel);
+ CHECK_PARAMETER2(Buffer);
+ CHECK_PARAMETER_WITH_STATUS(BufferSize > 0, STATUS_INVALID_BUFFER_SIZE);
+
+ /* First, check if the input buffer still has space */
+ Status = VTUTF8ChannelIBufferIsFull(Channel, &IsFull);
+ if (!NT_SUCCESS(Status)) return Status;
+ if (IsFull) return STATUS_UNSUCCESSFUL;
+
+ /* Get the current buffer index */
+ Index = VTUTF8ChannelGetIBufferIndex(Channel);
+ if ((SAC_VTUTF8_IBUFFER_SIZE - Index) < BufferSize)
+ {
+ return STATUS_INSUFFICIENT_RESOURCES;
+ }
+
+ /* Copy the new data */
+ for (i = 0; i < BufferSize; i++)
+ {
+ /* Convert the character */
+ if (SacTranslateUtf8ToUnicode(Buffer[i],
+ IncomingUtf8ConversionBuffer,
+ &IncomingUnicodeValue))
+ {
+ /* Write it into the buffer */
+ *(PWCHAR)&Channel->IBuffer[VTUTF8ChannelGetIBufferIndex(Channel)] =
+ IncomingUnicodeValue;
+
+ /* Update the index */
+ Index = VTUTF8ChannelGetIBufferIndex(Channel);
+ VTUTF8ChannelSetIBufferIndex(Channel, Index + sizeof(WCHAR));
+ }
+ }
+
+ /* Signal the event, if one was set */
+ if (Channel->Flags & SAC_CHANNEL_FLAG_HAS_NEW_DATA_EVENT)
+ {
+ ChannelSetEvent(Channel, HasNewDataEvent);
+ }
+
+ /* All done */
+ return STATUS_SUCCESS;
}
* This file is part of the w64 mingw-runtime package.
* No warranty is given; refer to the file DISCLAIMER within this package.
*/
+
#ifndef _INC_MBSTRING
#define _INC_MBSTRING
_In_ size_t _Count);
_CRTIMP
- int
+ errno_t
__cdecl
_mbsnbcpy_s(
- _Out_writes_z_(size) unsigned char* dst,
- _In_ size_t size,
- _In_z_ const unsigned char* src,
- _In_ size_t n);
+ _Out_writes_z_(_DstSizeInBytes) unsigned char *_Dst,
+ _In_ size_t _DstSizeInBytes,
+ _In_z_ const unsigned char *_Src,
+ _In_ size_t _MaxCount);
_CRTIMP
unsigned char*
extern "C" {
#endif
- _CRTIMP errno_t __cdecl _cgets_s(char *_Buffer,size_t _Size,size_t *_SizeRead);
- _CRTIMP int __cdecl _cprintf_s(const char *_Format,...);
- _CRTIMP int __cdecl _cscanf_s(const char *_Format,...);
- _CRTIMP int __cdecl _cscanf_s_l(const char *_Format,_locale_t _Locale,...);
- _CRTIMP int __cdecl _vcprintf_s(const char *_Format,va_list _ArgList);
- _CRTIMP int __cdecl _cprintf_s_l(const char *_Format,_locale_t _Locale,...);
- _CRTIMP int __cdecl _vcprintf_s_l(const char *_Format,_locale_t _Locale,va_list _ArgList);
+ _Check_return_wat_
+ _CRTIMP
+ errno_t
+ __cdecl
+ _cgets_s(
+ _Out_writes_z_(_Size) char *_Buffer,
+ _In_ size_t _Size,
+ _Out_ size_t *_SizeRead);
+
+ _Check_return_opt_
+ _CRTIMP
+ int
+ __cdecl
+ _cprintf_s(
+ _In_z_ _Printf_format_string_ const char *_Format,
+ ...);
+
+ _Check_return_opt_
+ _CRTIMP
+ int
+ __cdecl
+ _cscanf_s(
+ _In_z_ _Scanf_s_format_string_ const char *_Format,
+ ...);
+
+ _Check_return_opt_
+ _CRTIMP
+ int
+ __cdecl
+ _cscanf_s_l(
+ _In_z_ _Scanf_s_format_string_ const char *_Format,
+ _In_opt_ _locale_t _Locale,
+ ...);
+
+ _Check_return_opt_
+ _CRTIMP
+ int
+ __cdecl
+ _vcprintf_s(
+ _In_z_ _Printf_format_string_ const char *_Format,
+ va_list _ArgList);
+
+ _Check_return_opt_
+ _CRTIMP
+ int
+ __cdecl
+ _cprintf_s_l(
+ _In_z_ _Printf_format_string_ const char *_Format,
+ _In_opt_ _locale_t _Locale,
+ ...);
+
+ _Check_return_opt_
+ _CRTIMP
+ int
+ __cdecl
+ _vcprintf_s_l(
+ _In_z_ _Printf_format_string_ const char *_Format,
+ _In_opt_ _locale_t _Locale,
+ va_list _ArgList);
#ifndef _WCONIO_DEFINED_S
#define _WCONIO_DEFINED_S
- _CRTIMP errno_t __cdecl _cgetws_s(wchar_t *_Buffer,size_t _SizeInWords,size_t *_SizeRead);
- _CRTIMP int __cdecl _cwprintf_s(const wchar_t *_Format,...);
- _CRTIMP int __cdecl _cwscanf_s(const wchar_t *_Format,...);
- _CRTIMP int __cdecl _cwscanf_s_l(const wchar_t *_Format,_locale_t _Locale,...);
- _CRTIMP int __cdecl _vcwprintf_s(const wchar_t *_Format,va_list _ArgList);
- _CRTIMP int __cdecl _cwprintf_s_l(const wchar_t *_Format,_locale_t _Locale,...);
- _CRTIMP int __cdecl _vcwprintf_s_l(const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
-#endif
+
+ _Check_return_wat_
+ _CRTIMP
+ errno_t
+ __cdecl
+ _cgetws_s(
+ _Out_writes_to_(_SizeInWords, *_SizeRead) wchar_t *_Buffer,
+ _In_ size_t _SizeInWords,
+ _Out_ size_t *_SizeRead);
+
+ _Check_return_opt_
+ _CRTIMP
+ int
+ __cdecl
+ _cwprintf_s(
+ _In_z_ _Printf_format_string_ const wchar_t *_Format,
+ ...);
+
+ _Check_return_opt_
+ _CRTIMP
+ int
+ __cdecl
+ _cwscanf_s(
+ _In_z_ _Scanf_s_format_string_ const wchar_t *_Format,
+ ...);
+
+ _Check_return_opt_
+ _CRTIMP
+ int
+ __cdecl
+ _cwscanf_s_l(
+ _In_z_ _Scanf_s_format_string_ const wchar_t *_Format,
+ _In_opt_ _locale_t _Locale,
+ ...);
+
+ _Check_return_opt_
+ _CRTIMP
+ int
+ __cdecl
+ _vcwprintf_s(
+ _In_z_ _Printf_format_string_ const wchar_t *_Format,
+ va_list _ArgList);
+
+ _CRTIMP
+ int
+ __cdecl
+ _cwprintf_s_l(
+ _In_z_ _Printf_format_string_ const wchar_t *_Format,
+ _In_opt_ _locale_t _Locale,
+ ...);
+
+ _CRTIMP
+ int
+ __cdecl
+ _vcwprintf_s_l(
+ _In_z_ _Printf_format_string_ const wchar_t *_Format,
+ _In_opt_ _locale_t _Locale,
+ va_list _ArgList);
+
+#endif /* _WCONIO_DEFINED_S */
#ifdef __cplusplus
}
#endif
-#endif
-#endif
+#endif /* MINGW_HAS_SECURE_API */
+
+#endif /* _INC_CONIO_S */
* This file is part of the w64 mingw-runtime package.
* No warranty is given; refer to the file DISCLAIMER within this package.
*/
+
#ifndef _INC_MBSTRING_S
#define _INC_MBSTRING_S
#ifndef _MBSTRING_S_DEFINED
#define _MBSTRING_S_DEFINED
- _CRTIMP errno_t __cdecl _mbscat_s(unsigned char *_Dst,size_t _DstSizeInBytes,const unsigned char *_Src);
- _CRTIMP errno_t __cdecl _mbscat_s_l(unsigned char *_Dst,size_t _DstSizeInBytes,const unsigned char *_Src,_locale_t _Locale);
- _CRTIMP errno_t __cdecl _mbscpy_s(unsigned char *_Dst,size_t _DstSizeInBytes,const unsigned char *_Src);
- _CRTIMP errno_t __cdecl _mbscpy_s_l(unsigned char *_Dst,size_t _DstSizeInBytes,const unsigned char *_Src,_locale_t _Locale);
- _CRTIMP errno_t __cdecl _mbslwr_s(unsigned char *_Str,size_t _SizeInBytes);
- _CRTIMP errno_t __cdecl _mbslwr_s_l(unsigned char *_Str,size_t _SizeInBytes,_locale_t _Locale);
- _CRTIMP errno_t __cdecl _mbsnbcat_s(unsigned char *_Dst,size_t _DstSizeInBytes,const unsigned char *_Src,size_t _MaxCount);
- _CRTIMP errno_t __cdecl _mbsnbcat_s_l(unsigned char *_Dst,size_t _DstSizeInBytes,const unsigned char *_Src,size_t _MaxCount,_locale_t _Locale);
- _CRTIMP errno_t __cdecl _mbsnbcpy_s(unsigned char *_Dst,size_t _DstSizeInBytes,const unsigned char *_Src,size_t _MaxCount);
- _CRTIMP errno_t __cdecl _mbsnbcpy_s_l(unsigned char *_Dst,size_t _DstSizeInBytes,const unsigned char *_Src,size_t _MaxCount,_locale_t _Locale);
- _CRTIMP errno_t __cdecl _mbsnbset_s(unsigned char *_Dst,size_t _DstSizeInBytes,unsigned int _Ch,size_t _MaxCount);
- _CRTIMP errno_t __cdecl _mbsnbset_s_l(unsigned char *_Dst,size_t _DstSizeInBytes,unsigned int _Ch,size_t _MaxCount,_locale_t _Locale);
- _CRTIMP errno_t __cdecl _mbsncat_s(unsigned char *_Dst,size_t _DstSizeInBytes,const unsigned char *_Src,size_t _MaxCount);
- _CRTIMP errno_t __cdecl _mbsncat_s_l(unsigned char *_Dst,size_t _DstSizeInBytes,const unsigned char *_Src,size_t _MaxCount,_locale_t _Locale);
- _CRTIMP errno_t __cdecl _mbsncpy_s(unsigned char *_Dst,size_t _DstSizeInBytes,const unsigned char *_Src,size_t _MaxCount);
- _CRTIMP errno_t __cdecl _mbsncpy_s_l(unsigned char *_Dst,size_t _DstSizeInBytes,const unsigned char *_Src,size_t _MaxCount,_locale_t _Locale);
- _CRTIMP errno_t __cdecl _mbsnset_s(unsigned char *_Dst,size_t _DstSizeInBytes,unsigned int _Val,size_t _MaxCount);
- _CRTIMP errno_t __cdecl _mbsnset_s_l(unsigned char *_Dst,size_t _DstSizeInBytes,unsigned int _Val,size_t _MaxCount,_locale_t _Locale);
- _CRTIMP errno_t __cdecl _mbsset_s(unsigned char *_Dst,size_t _DstSizeInBytes,unsigned int _Val);
- _CRTIMP errno_t __cdecl _mbsset_s_l(unsigned char *_Dst,size_t _DstSizeInBytes,unsigned int _Val,_locale_t _Locale);
- _CRTIMP unsigned char *__cdecl _mbstok_s(unsigned char *_Str,const unsigned char *_Delim,unsigned char **_Context);
- _CRTIMP unsigned char *__cdecl _mbstok_s_l(unsigned char *_Str,const unsigned char *_Delim,unsigned char **_Context,_locale_t _Locale);
- _CRTIMP errno_t __cdecl _mbsupr_s(unsigned char *_Str,size_t _SizeInBytes);
- _CRTIMP errno_t __cdecl _mbsupr_s_l(unsigned char *_Str,size_t _SizeInBytes,_locale_t _Locale);
- _CRTIMP errno_t __cdecl _mbccpy_s(unsigned char *_Dst,size_t _DstSizeInBytes,int *_PCopied,const unsigned char *_Src);
- _CRTIMP errno_t __cdecl _mbccpy_s_l(unsigned char *_Dst,size_t _DstSizeInBytes,int *_PCopied,const unsigned char *_Src,_locale_t _Locale);
-#endif
+
+ _CRTIMP
+ errno_t
+ __cdecl
+ _mbscat_s(
+ _Inout_updates_z_(_DstSizeInBytes) unsigned char *_Dst,
+ _In_ size_t _DstSizeInBytes,
+ _In_z_ const unsigned char *_Src);
+
+ _CRTIMP
+ errno_t
+ __cdecl
+ _mbscat_s_l(
+ _Inout_updates_z_(_DstSizeInBytes) unsigned char *_Dst,
+ _In_ size_t _DstSizeInBytes,
+ _In_z_ const unsigned char *_Src,
+ _In_opt_ _locale_t _Locale);
+
+ _CRTIMP
+ errno_t
+ __cdecl
+ _mbscpy_s(
+ _Out_writes_z_(_DstSizeInBytes) unsigned char *_Dst,
+ _In_ size_t _DstSizeInBytes,
+ _In_z_ const unsigned char *_Src);
+
+ _CRTIMP
+ errno_t
+ __cdecl
+ _mbscpy_s_l(
+ _Out_writes_z_(_DstSizeInBytes) unsigned char *_Dst,
+ _In_ size_t _DstSizeInBytes,
+ _In_z_ const unsigned char *_Src,
+ _In_opt_ _locale_t _Locale);
+
+ _CRTIMP
+ errno_t
+ __cdecl
+ _mbslwr_s(
+ _Inout_updates_opt_z_(_SizeInBytes) unsigned char *_Str,
+ _In_ size_t _SizeInBytes);
+
+ _CRTIMP
+ errno_t
+ __cdecl
+ _mbslwr_s_l(
+ _Inout_updates_opt_z_(_SizeInBytes) unsigned char *_Str,
+ _In_ size_t _SizeInBytes,
+ _In_opt_ _locale_t _Locale);
+
+ _CRTIMP
+ errno_t
+ __cdecl
+ _mbsnbcat_s(
+ _Inout_updates_z_(_DstSizeInBytes) unsigned char *_Dst,
+ _In_ size_t _DstSizeInBytes,
+ _In_z_ const unsigned char *_Src,
+ _In_ size_t _MaxCount);
+
+ _CRTIMP
+ errno_t
+ __cdecl
+ _mbsnbcat_s_l(
+ _Inout_updates_z_(_DstSizeInBytes) unsigned char *_Dst,
+ _In_ size_t _DstSizeInBytes,
+ _In_z_ const unsigned char *_Src,
+ _In_ size_t _MaxCount,
+ _In_opt_ _locale_t _Locale);
+
+ _CRTIMP
+ errno_t
+ __cdecl
+ _mbsnbcpy_s(
+ _Out_writes_z_(_DstSizeInBytes) unsigned char *_Dst,
+ _In_ size_t _DstSizeInBytes,
+ _In_z_ const unsigned char *_Src,
+ _In_ size_t _MaxCount);
+
+ _CRTIMP
+ errno_t
+ __cdecl
+ _mbsnbcpy_s_l(
+ _Out_writes_z_(_DstSizeInBytes) unsigned char *_Dst,
+ _In_ size_t _DstSizeInBytes,
+ _In_z_ const unsigned char *_Src,
+ _In_ size_t _MaxCount,
+ _In_opt_ _locale_t _Locale);
+
+ _CRTIMP
+ errno_t
+ __cdecl
+ _mbsnbset_s(
+ _Inout_updates_z_(_DstSizeInBytes) unsigned char *_Dst,
+ _In_ size_t _DstSizeInBytes,
+ _In_ unsigned int _Ch,
+ _In_ size_t _MaxCount);
+
+ _CRTIMP
+ errno_t
+ __cdecl
+ _mbsnbset_s_l(
+ _Inout_updates_z_(_DstSizeInBytes) unsigned char *_Dst,
+ _In_ size_t _DstSizeInBytes,
+ _In_ unsigned int _Ch,
+ _In_ size_t _MaxCount,
+ _In_opt_ _locale_t _Locale);
+
+ _CRTIMP
+ errno_t
+ __cdecl
+ _mbsncat_s(
+ _Inout_updates_z_(_DstSizeInBytes) unsigned char *_Dst,
+ _In_ size_t _DstSizeInBytes,
+ _In_z_ const unsigned char *_Src,
+ _In_ size_t _MaxCount);
+
+ _CRTIMP
+ errno_t
+ __cdecl
+ _mbsncat_s_l(
+ _Inout_updates_z_(_DstSizeInBytes) unsigned char *_Dst,
+ _In_ size_t _DstSizeInBytes,
+ _In_z_ const unsigned char *_Src,
+ _In_ size_t _MaxCount,
+ _In_opt_ _locale_t _Locale);
+
+ _CRTIMP
+ errno_t
+ __cdecl
+ _mbsncpy_s(
+ _Out_writes_z_(_DstSizeInBytes) unsigned char *_Dst,
+ _In_ size_t _DstSizeInBytes,
+ _In_z_ const unsigned char *_Src,
+ _In_ size_t _MaxCount);
+
+ _CRTIMP
+ errno_t
+ __cdecl
+ _mbsncpy_s_l(
+ _Out_writes_z_(_DstSizeInBytes) unsigned char *_Dst,
+ _In_ size_t _DstSizeInBytes,
+ _In_z_ const unsigned char *_Src,
+ _In_ size_t _MaxCount,
+ _In_opt_ _locale_t _Locale);
+
+ _CRTIMP
+ errno_t
+ __cdecl
+ _mbsnset_s(
+ _Inout_updates_z_(_DstSizeInBytes) unsigned char *_Dst,
+ _In_ size_t _DstSizeInBytes,
+ _In_ unsigned int _Val,
+ _In_ size_t _MaxCount);
+
+ _CRTIMP
+ errno_t
+ __cdecl
+ _mbsnset_s_l(
+ _Inout_updates_z_(_DstSizeInBytes) unsigned char *_Dst,
+ _In_ size_t _DstSizeInBytes,
+ _In_ unsigned int _Val,
+ _In_ size_t _MaxCount,
+ _In_opt_ _locale_t _Locale);
+
+ _CRTIMP
+ errno_t
+ __cdecl
+ _mbsset_s(
+ _Inout_updates_z_(_DstSizeInBytes) unsigned char *_Dst,
+ _In_ size_t _DstSizeInBytes,
+ _In_ unsigned int _Val);
+
+ _CRTIMP
+ errno_t
+ __cdecl
+ _mbsset_s_l(
+ _Inout_updates_z_(_DstSizeInBytes) unsigned char *_Dst,
+ _In_ size_t _DstSizeInBytes,
+ _In_ unsigned int _Val,
+ _In_opt_ _locale_t _Locale);
+
+ _Check_return_
+ _CRTIMP
+ unsigned char *
+ __cdecl
+ _mbstok_s(
+ _Inout_opt_z_ unsigned char *_Str,
+ _In_z_ const unsigned char *_Delim,
+ _Inout_ _Deref_prepost_opt_z_ unsigned char **_Context);
+
+ _Check_return_
+ _CRTIMP
+ unsigned char *
+ __cdecl
+ _mbstok_s_l(
+ _Inout_opt_z_ unsigned char *_Str,
+ _In_z_ const unsigned char *_Delim,
+ _Inout_ _Deref_prepost_opt_z_ unsigned char **_Context,
+ _In_opt_ _locale_t _Locale);
+
+ _CRTIMP
+ errno_t
+ __cdecl
+ _mbsupr_s(
+ _Inout_updates_z_(_SizeInBytes) unsigned char *_Str,
+ _In_ size_t _SizeInBytes);
+
+ _CRTIMP
+ errno_t
+ __cdecl
+ _mbsupr_s_l(
+ _Inout_updates_z_(_SizeInBytes) unsigned char *_Str,
+ _In_ size_t _SizeInBytes,
+ _In_opt_ _locale_t _Locale);
+
+ _CRTIMP
+ errno_t
+ __cdecl
+ _mbccpy_s(
+ _Out_writes_z_(_DstSizeInBytes) unsigned char *_Dst,
+ _In_ size_t _DstSizeInBytes,
+ _Out_opt_ int *_PCopied,
+ _In_z_ const unsigned char *_Src);
+
+ _CRTIMP
+ errno_t
+ __cdecl
+ _mbccpy_s_l(
+ _Out_writes_z_(_DstSizeInBytes) unsigned char *_Dst,
+ _In_ size_t _DstSizeInBytes,
+ _Out_opt_ int *_PCopied,
+ _In_z_ const unsigned char *_Src,
+ _In_opt_ _locale_t _Locale);
+
+#endif /* _MBSTRING_S_DEFINED */
#ifdef __cplusplus
}
#endif
-#endif
-#endif
+#endif /* MINGW_HAS_SECURE_API */
+
+#endif /* _INC_MBSTRING_S */
* This file is part of the w64 mingw-runtime package.
* No warranty is given; refer to the file DISCLAIMER within this package.
*/
+
#ifndef _INC_STRING_S
#define _INC_STRING_S
extern "C" {
#endif
- _CRTIMP errno_t __cdecl _strset_s(char *_Dst,size_t _DstSize,int _Value);
- _CRTIMP errno_t __cdecl _strerror_s(char *_Buf,size_t _SizeInBytes,const char *_ErrMsg);
- _CRTIMP errno_t __cdecl _strlwr_s(char *_Str,size_t _Size);
- _CRTIMP errno_t __cdecl _strlwr_s_l(char *_Str,size_t _Size,_locale_t _Locale);
- _CRTIMP errno_t __cdecl _strnset_s(char *_Str,size_t _Size,int _Val,size_t _MaxCount);
- _CRTIMP errno_t __cdecl _strupr_s(char *_Str,size_t _Size);
- _CRTIMP errno_t __cdecl _strupr_s_l(char *_Str,size_t _Size,_locale_t _Locale);
-
- _CRTIMP errno_t __cdecl strncat_s(char *_Dst,size_t _DstSizeInChars,const char *_Src,size_t _MaxCount);
- _CRTIMP errno_t __cdecl _strncat_s_l(char *_Dst,size_t _DstSizeInChars,const char *_Src,size_t _MaxCount,_locale_t _Locale);
- _CRTIMP errno_t __cdecl strcpy_s(char *_Dst, size_t _SizeInBytes, const char *_Src);
- _CRTIMP errno_t __cdecl strncpy_s(char *_Dst,size_t _DstSizeInChars,const char *_Src,size_t _MaxCount);
- _CRTIMP errno_t __cdecl _strncpy_s_l(char *_Dst,size_t _DstSizeInChars,const char *_Src,size_t _MaxCount,_locale_t _Locale);
- _CRTIMP char *__cdecl strtok_s(char *_Str,const char *_Delim,char **_Context);
- _CRTIMP char *__cdecl _strtok_s_l(char *_Str,const char *_Delim,char **_Context,_locale_t _Locale);
+ _Check_return_wat_
+ _CRTIMP
+ errno_t
+ __cdecl
+ _strset_s(
+ _Inout_updates_z_(_DstSize) char *_Dst,
+ _In_ size_t _DstSize,
+ _In_ int _Value);
+
+ _Check_return_wat_
+ _CRTIMP
+ errno_t
+ __cdecl
+ _strerror_s(
+ _Out_writes_z_(_SizeInBytes) char *_Buf,
+ _In_ size_t _SizeInBytes,
+ _In_opt_z_ const char *_ErrMsg);
+
+ _Check_return_wat_
+ _CRTIMP
+ errno_t
+ __cdecl
+ _strlwr_s(
+ _Inout_updates_z_(_Size) char *_Str,
+ _In_ size_t _Size);
+
+ _Check_return_wat_
+ _CRTIMP
+ errno_t
+ __cdecl
+ _strlwr_s_l(
+ _Inout_updates_z_(_Size) char *_Str,
+ _In_ size_t _Size,
+ _In_opt_ _locale_t _Locale);
+
+ _Check_return_wat_
+ _CRTIMP
+ errno_t
+ __cdecl
+ _strnset_s(
+ _Inout_updates_z_(_Size) char *_Str,
+ _In_ size_t _Size,
+ _In_ int _Val,
+ _In_ size_t _MaxCount);
+
+ _Check_return_wat_
+ _CRTIMP
+ errno_t
+ __cdecl
+ _strupr_s(
+ _Inout_updates_z_(_Size) char *_Str,
+ _In_ size_t _Size);
+
+ _Check_return_wat_
+ _CRTIMP
+ errno_t
+ __cdecl
+ _strupr_s_l(
+ _Inout_updates_z_(_Size) char *_Str,
+ _In_ size_t _Size,
+ _In_opt_ _locale_t _Locale);
+
+ _Check_return_wat_
+ _CRTIMP
+ errno_t
+ __cdecl
+ strncat_s(
+ _Inout_updates_z_(_DstSizeInChars) char *_Dst,
+ _In_ size_t _DstSizeInChars,
+ _In_z_ const char *_Src,
+ _In_ size_t _MaxCount);
+
+ _Check_return_wat_
+ _CRTIMP
+ errno_t
+ __cdecl
+ _strncat_s_l(
+ _Inout_updates_z_(_DstSizeInChars) char *_Dst,
+ _In_ size_t _DstSizeInChars,
+ _In_z_ const char *_Src,
+ _In_ size_t _MaxCount,
+ _In_opt_ _locale_t _Locale);
+
+ _Check_return_wat_
+ _CRTIMP
+ errno_t
+ __cdecl
+ strcpy_s(
+ _Out_writes_z_(_SizeInBytes) char *_Dst,
+ _In_ size_t _SizeInBytes,
+ _In_z_ const char *_Src);
+
+ _Check_return_wat_
+ _CRTIMP
+ errno_t
+ __cdecl
+ strncpy_s(
+ _Out_writes_z_(_DstSizeInChars) char *_Dst,
+ _In_ size_t _DstSizeInChars,
+ _In_z_ const char *_Src,
+ _In_ size_t _MaxCount);
+
+ _Check_return_wat_
+ _CRTIMP
+ errno_t
+ __cdecl
+ _strncpy_s_l(
+ _Out_writes_z_(_DstSizeInChars) char *_Dst,
+ _In_ size_t _DstSizeInChars,
+ _In_z_ const char *_Src,
+ _In_ size_t _MaxCount,
+ _In_opt_ _locale_t _Locale);
+
+ _Check_return_
+ _CRTIMP
+ char *
+ __cdecl
+ strtok_s(
+ _Inout_opt_z_ char *_Str,
+ _In_z_ const char *_Delim,
+ _Inout_ _Deref_prepost_opt_z_ char **_Context);
+
+ _Check_return_
+ _CRTIMP
+ char *
+ __cdecl
+ _strtok_s_l(
+ _Inout_opt_z_ char *_Str,
+ _In_z_ const char *_Delim,
+ _Inout_ _Deref_prepost_opt_z_ char **_Context,
+ _In_opt_ _locale_t _Locale);
#ifndef _WSTRING_S_DEFINED
#define _WSTRING_S_DEFINED
- _CRTIMP wchar_t *__cdecl wcstok_s(wchar_t *_Str,const wchar_t *_Delim,wchar_t **_Context);
- _CRTIMP errno_t __cdecl _wcserror_s(wchar_t *_Buf,size_t _SizeInWords,int _ErrNum);
- _CRTIMP errno_t __cdecl __wcserror_s(wchar_t *_Buffer,size_t _SizeInWords,const wchar_t *_ErrMsg);
- _CRTIMP errno_t __cdecl _wcsnset_s(wchar_t *_Dst,size_t _DstSizeInWords,wchar_t _Val,size_t _MaxCount);
- _CRTIMP errno_t __cdecl _wcsset_s(wchar_t *_Str,size_t _SizeInWords,wchar_t _Val);
- _CRTIMP errno_t __cdecl _wcslwr_s(wchar_t *_Str,size_t _SizeInWords);
- _CRTIMP errno_t __cdecl _wcslwr_s_l(wchar_t *_Str,size_t _SizeInWords,_locale_t _Locale);
- _CRTIMP errno_t __cdecl _wcsupr_s(wchar_t *_Str,size_t _Size);
- _CRTIMP errno_t __cdecl _wcsupr_s_l(wchar_t *_Str,size_t _Size,_locale_t _Locale);
-
- _CRTIMP errno_t __cdecl wcsncat_s(wchar_t *_Dst,size_t _DstSizeInChars,const wchar_t *_Src,size_t _MaxCount);
- _CRTIMP errno_t __cdecl _wcsncat_s_l(wchar_t *_Dst,size_t _DstSizeInChars,const wchar_t *_Src,size_t _MaxCount,_locale_t _Locale);
- _CRTIMP errno_t __cdecl wcsncpy_s(wchar_t *_Dst,size_t _DstSizeInChars,const wchar_t *_Src,size_t _MaxCount);
- _CRTIMP errno_t __cdecl _wcsncpy_s_l(wchar_t *_Dst,size_t _DstSizeInChars,const wchar_t *_Src,size_t _MaxCount,_locale_t _Locale);
- _CRTIMP wchar_t *__cdecl _wcstok_s_l(wchar_t *_Str,const wchar_t *_Delim,wchar_t **_Context,_locale_t _Locale);
- _CRTIMP errno_t __cdecl _wcsset_s_l(wchar_t *_Str,size_t _SizeInChars,unsigned int _Val,_locale_t _Locale);
- _CRTIMP errno_t __cdecl _wcsnset_s_l(wchar_t *_Str,size_t _SizeInChars,unsigned int _Val, size_t _Count,_locale_t _Locale);
-#endif
+ _Check_return_
+ _CRTIMP
+ wchar_t *
+ __cdecl
+ wcstok_s(
+ _Inout_opt_z_ wchar_t *_Str,
+ _In_z_ const wchar_t *_Delim,
+ _Inout_ _Deref_prepost_opt_z_ wchar_t **_Context);
+
+ _Check_return_wat_
+ _CRTIMP
+ errno_t
+ __cdecl
+ _wcserror_s(
+ _Out_writes_opt_z_(_SizeInWords) wchar_t *_Buf,
+ _In_ size_t _SizeInWords,
+ _In_ int _ErrNum);
+
+ _Check_return_wat_
+ _CRTIMP
+ errno_t
+ __cdecl
+ __wcserror_s(
+ _Out_writes_opt_z_(_SizeInWords) wchar_t *_Buffer,
+ _In_ size_t _SizeInWords,
+ _In_z_ const wchar_t *_ErrMsg);
+
+ _Check_return_wat_
+ _CRTIMP
+ errno_t
+ __cdecl
+ _wcsnset_s(
+ _Inout_updates_z_(_DstSizeInWords) wchar_t *_Dst,
+ _In_ size_t _DstSizeInWords,
+ _In_ wchar_t _Val,
+ _In_ size_t _MaxCount);
+
+ _Check_return_wat_
+ _CRTIMP
+ errno_t
+ __cdecl
+ _wcsset_s(
+ _Inout_updates_z_(_SizeInWords) wchar_t *_Str,
+ _In_ size_t _SizeInWords,
+ _In_ wchar_t _Val);
+
+ _Check_return_wat_
+ _CRTIMP
+ errno_t
+ __cdecl
+ _wcslwr_s(
+ _Inout_updates_z_(_SizeInWords) wchar_t *_Str,
+ _In_ size_t _SizeInWords);
+
+ _Check_return_wat_
+ _CRTIMP
+ errno_t
+ __cdecl
+ _wcslwr_s_l(
+ _Inout_updates_z_(_SizeInWords) wchar_t *_Str,
+ _In_ size_t _SizeInWords,
+ _In_opt_ _locale_t _Locale);
+
+ _Check_return_wat_
+ _CRTIMP
+ errno_t
+ __cdecl
+ _wcsupr_s(
+ _Inout_updates_z_(_Size) wchar_t *_Str,
+ _In_ size_t _Size);
+
+ _Check_return_wat_
+ _CRTIMP
+ errno_t
+ __cdecl
+ _wcsupr_s_l(
+ _Inout_updates_z_(_Size) wchar_t *_Str,
+ _In_ size_t _Size,
+ _In_opt_ _locale_t _Locale);
+
+ _Check_return_wat_
+ _CRTIMP
+ errno_t
+ __cdecl
+ wcsncat_s(
+ _Inout_updates_z_(_DstSizeInChars) wchar_t *_Dst,
+ _In_ size_t _DstSizeInChars,
+ _In_z_ const wchar_t *_Src,
+ _In_ size_t _MaxCount);
+
+ _Check_return_wat_
+ _CRTIMP
+ errno_t
+ __cdecl
+ _wcsncat_s_l(
+ _Inout_updates_z_(_DstSizeInChars) wchar_t *_Dst,
+ _In_ size_t _DstSizeInChars,
+ _In_z_ const wchar_t *_Src,
+ _In_ size_t _MaxCount,
+ _In_opt_ _locale_t _Locale);
+
+ _Check_return_wat_
+ _CRTIMP
+ errno_t
+ __cdecl
+ wcsncpy_s(
+ _Out_writes_z_(_DstSizeInChars) wchar_t *_Dst,
+ _In_ size_t _DstSizeInChars,
+ _In_z_ const wchar_t *_Src,
+ _In_ size_t _MaxCount);
+
+ _Check_return_wat_
+ _CRTIMP
+ errno_t
+ __cdecl
+ _wcsncpy_s_l(
+ _Out_writes_z_(_DstSizeInChars) wchar_t *_Dst,
+ _In_ size_t _DstSizeInChars,
+ _In_z_ const wchar_t *_Src,
+ _In_ size_t _MaxCount,
+ _In_opt_ _locale_t _Locale);
+
+ _CRTIMP
+ wchar_t *
+ __cdecl
+ _wcstok_s_l(
+ _Inout_opt_z_ wchar_t *_Str,
+ _In_z_ const wchar_t *_Delim,
+ _Inout_ _Deref_prepost_opt_z_ wchar_t **_Context,
+ _In_opt_ _locale_t _Locale);
+
+ _Check_return_wat_
+ _CRTIMP
+ errno_t
+ __cdecl
+ _wcsset_s_l(
+ _Inout_updates_z_(_SizeInChars) wchar_t *_Str,
+ _In_ size_t _SizeInChars,
+ _In_ unsigned int _Val,
+ _In_opt_ _locale_t _Locale);
+
+ _Check_return_wat_
+ _CRTIMP
+ errno_t
+ __cdecl
+ _wcsnset_s_l(
+ _Inout_updates_z_(_SizeInChars) wchar_t *_Str,
+ _In_ size_t _SizeInChars,
+ _In_ unsigned int _Val,
+ _In_ size_t _Count,
+ _In_opt_ _locale_t _Locale);
+
+#endif /* _WSTRING_S_DEFINED */
#ifdef __cplusplus
}
#endif
-#endif
-#endif
+
+#endif /* MINGW_HAS_SECURE_API */
+
+#endif /* _INC_STRING_S */
#pragma once
+#ifndef _CFGMGR32_H_
#define _CFGMGR32_H_
#include <cfg.h>
#endif /* NT_INCLUDED */
-typedef DWORD RETURN_TYPE;
+typedef _Return_type_success_(return == 0) DWORD RETURN_TYPE;
typedef RETURN_TYPE CONFIGRET;
typedef DWORD DEVNODE, DEVINST;
typedef DEVNODE *PDEVNODE, *PDEVINST;
-typedef CHAR *DEVNODEID_A, *DEVINSTID_A;
-typedef WCHAR *DEVNODEID_W, *DEVINSTID_W;
+typedef _Null_terminated_ CHAR *DEVNODEID_A, *DEVINSTID_A;
+typedef _Null_terminated_ WCHAR *DEVNODEID_W, *DEVINSTID_W;
#ifdef UNICODE
typedef DEVNODEID_W DEVNODEID;
CONFIGRET
WINAPI
CM_Add_Empty_Log_Conf(
- OUT PLOG_CONF plcLogConf,
- IN DEVINST dnDevInst,
- IN PRIORITY Priority,
- IN ULONG ulFlags);
+ _Out_ PLOG_CONF plcLogConf,
+ _In_ DEVINST dnDevInst,
+ _In_ PRIORITY Priority,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Add_Empty_Log_Conf_Ex(
- OUT PLOG_CONF plcLogConf,
- IN DEVINST dnDevInst,
- IN PRIORITY Priority,
- IN ULONG ulFlags,
- IN HMACHINE hMachine);
+ _Out_ PLOG_CONF plcLogConf,
+ _In_ DEVINST dnDevInst,
+ _In_ PRIORITY Priority,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Add_IDA(
- IN DEVINST dnDevInst,
- IN PSTR pszID,
- IN ULONG ulFlags);
+ _In_ DEVINST dnDevInst,
+ _In_ PSTR pszID,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Add_ID_ExA(
- IN DEVINST dnDevInst,
- IN PSTR pszID,
- IN ULONG ulFlags,
- IN HMACHINE hMachine);
+ _In_ DEVINST dnDevInst,
+ _In_ PSTR pszID,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Add_ID_ExW(
- IN DEVINST dnDevInst,
- IN PWSTR pszID,
- IN ULONG ulFlags,
- IN HMACHINE hMachine);
+ _In_ DEVINST dnDevInst,
+ _In_ PWSTR pszID,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Add_IDW(
- IN DEVINST dnDevInst,
- IN PWSTR pszID,
- IN ULONG ulFlags);
+ _In_ DEVINST dnDevInst,
+ _In_ PWSTR pszID,
+ _In_ ULONG ulFlags);
#ifdef UNICODE
#define CM_Add_ID CM_Add_IDW
CONFIGRET
WINAPI
CM_Add_Range(
- IN DWORDLONG ullStartValue,
- IN DWORDLONG ullEndValue,
- IN RANGE_LIST rlh,
- IN ULONG ulFlags);
+ _In_ DWORDLONG ullStartValue,
+ _In_ DWORDLONG ullEndValue,
+ _In_ RANGE_LIST rlh,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Add_Res_Des(
- OUT PRES_DES prdResDes OPTIONAL,
- IN LOG_CONF lcLogConf,
- IN RESOURCEID ResourceID,
- IN PCVOID ResourceData,
- IN ULONG ResourceLen,
- IN ULONG ulFlags);
+ _Out_opt_ PRES_DES prdResDes,
+ _In_ LOG_CONF lcLogConf,
+ _In_ RESOURCEID ResourceID,
+ _In_reads_bytes_(ResourceLen) PCVOID ResourceData,
+ _In_ ULONG ResourceLen,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Add_Res_Des_Ex(
- OUT PRES_DES prdResDes OPTIONAL,
- IN LOG_CONF lcLogConf,
- IN RESOURCEID ResourceID,
- IN PCVOID ResourceData,
- IN ULONG ResourceLen,
- IN ULONG ulFlags,
- IN HMACHINE hMachine);
+ _Out_opt_ PRES_DES prdResDes,
+ _In_ LOG_CONF lcLogConf,
+ _In_ RESOURCEID ResourceID,
+ _In_reads_bytes_(ResourceLen) PCVOID ResourceData,
+ _In_ ULONG ResourceLen,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Connect_MachineA(
- IN PCSTR UNCServerName OPTIONAL,
- OUT PHMACHINE phMachine);
+ _In_opt_ PCSTR UNCServerName,
+ _Out_ PHMACHINE phMachine);
CMAPI
CONFIGRET
WINAPI
CM_Connect_MachineW(
- IN PCWSTR UNCServerName OPTIONAL,
- OUT PHMACHINE phMachine);
+ _In_opt_ PCWSTR UNCServerName,
+ _Out_ PHMACHINE phMachine);
#ifdef UNICODE
#define CM_Connect_Machine CM_Connect_MachineW
CONFIGRET
WINAPI
CM_Create_DevNodeA(
- OUT PDEVINST pdnDevInst,
- IN DEVINSTID_A pDeviceID,
- IN DEVINST dnParent,
- IN ULONG ulFlags);
+ _Out_ PDEVINST pdnDevInst,
+ _In_ DEVINSTID_A pDeviceID,
+ _In_ DEVINST dnParent,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Create_DevNodeW(
- OUT PDEVINST pdnDevInst,
- IN DEVINSTID_W pDeviceID,
- IN DEVINST dnParent,
- IN ULONG ulFlags);
+ _Out_ PDEVINST pdnDevInst,
+ _In_ DEVINSTID_W pDeviceID,
+ _In_ DEVINST dnParent,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Create_DevNode_ExA(
- OUT PDEVINST pdnDevInst,
- IN DEVINSTID_A pDeviceID,
- IN DEVINST dnParent,
- IN ULONG ulFlags,
- IN HANDLE hMachine);
+ _Out_ PDEVINST pdnDevInst,
+ _In_ DEVINSTID_A pDeviceID,
+ _In_ DEVINST dnParent,
+ _In_ ULONG ulFlags,
+ _In_opt_ HANDLE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Create_DevNode_ExW(
- OUT PDEVINST pdnDevInst,
- IN DEVINSTID_W pDeviceID,
- IN DEVINST dnParent,
- IN ULONG ulFlags,
- IN HANDLE hMachine);
+ _Out_ PDEVINST pdnDevInst,
+ _In_ DEVINSTID_W pDeviceID,
+ _In_ DEVINST dnParent,
+ _In_ ULONG ulFlags,
+ _In_opt_ HANDLE hMachine);
#define CM_Create_DevInstW CM_Create_DevNodeW
#define CM_Create_DevInstA CM_Create_DevNodeA
CONFIGRET
WINAPI
CM_Create_Range_List(
- OUT PRANGE_LIST prlh,
- IN ULONG ulFlags);
+ _Out_ PRANGE_LIST prlh,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Delete_Class_Key(
- IN LPGUID ClassGuid,
- IN ULONG ulFlags);
+ _In_ LPGUID ClassGuid,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Delete_Class_Key_Ex(
- IN LPGUID ClassGuid,
- IN ULONG ulFlags,
- IN HANDLE hMachine);
+ _In_ LPGUID ClassGuid,
+ _In_ ULONG ulFlags,
+ _In_opt_ HANDLE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Delete_DevNode_Key(
- IN DEVNODE dnDevNode,
- IN ULONG ulHardwareProfile,
- IN ULONG ulFlags);
+ _In_ DEVNODE dnDevNode,
+ _In_ ULONG ulHardwareProfile,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Delete_DevNode_Key_Ex(
- IN DEVNODE dnDevNode,
- IN ULONG ulHardwareProfile,
- IN ULONG ulFlags,
- IN HANDLE hMachine);
+ _In_ DEVNODE dnDevNode,
+ _In_ ULONG ulHardwareProfile,
+ _In_ ULONG ulFlags,
+ _In_opt_ HANDLE hMachine);
#define CM_Delete_DevInst_Key CM_Delete_DevNode_Key
#define CM_Delete_DevInst_Key_Ex CM_Delete_DevNode_Key_Ex
CONFIGRET
WINAPI
CM_Delete_Range(
- IN DWORDLONG ullStartValue,
- IN DWORDLONG ullEndValue,
- IN RANGE_LIST rlh,
- IN ULONG ulFlags);
+ _In_ DWORDLONG ullStartValue,
+ _In_ DWORDLONG ullEndValue,
+ _In_ RANGE_LIST rlh,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Detect_Resource_Conflict(
- IN DEVINST dnDevInst,
- IN RESOURCEID ResourceID,
- IN PCVOID ResourceData,
- IN ULONG ResourceLen,
- OUT PBOOL pbConflictDetected,
- IN ULONG ulFlags);
+ _In_ DEVINST dnDevInst,
+ _In_ RESOURCEID ResourceID,
+ _In_reads_bytes_(ResourceLen) PCVOID ResourceData,
+ _In_ ULONG ResourceLen,
+ _Out_ PBOOL pbConflictDetected,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Detect_Resource_Conflict_Ex(
- IN DEVINST dnDevInst,
- IN RESOURCEID ResourceID,
- IN PCVOID ResourceData,
- IN ULONG ResourceLen,
- OUT PBOOL pbConflictDetected,
- IN ULONG ulFlags,
- IN HMACHINE hMachine OPTIONAL);
+ _In_ DEVINST dnDevInst,
+ _In_ RESOURCEID ResourceID,
+ _In_reads_bytes_(ResourceLen) PCVOID ResourceData,
+ _In_ ULONG ResourceLen,
+ _Out_ PBOOL pbConflictDetected,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Disable_DevNode(
- IN DEVINST dnDevInst,
- IN ULONG ulFlags);
+ _In_ DEVINST dnDevInst,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Disable_DevNode_Ex(
- IN DEVINST dnDevInst,
- IN ULONG ulFlags,
- IN HMACHINE hMachine OPTIONAL);
+ _In_ DEVINST dnDevInst,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
#define CM_Disable_DevInst CM_Disable_DevNode
#define CM_Disable_DevInst_Ex CM_Disable_DevNode_Ex
CONFIGRET
WINAPI
CM_Disconnect_Machine(
- IN HMACHINE hMachine OPTIONAL);
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Dup_Range_List(
- IN RANGE_LIST rlhOld,
- IN RANGE_LIST rlhNew,
- IN ULONG ulFlags);
+ _In_ RANGE_LIST rlhOld,
+ _In_ RANGE_LIST rlhNew,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Enable_DevNode(
- IN DEVINST dnDevInst,
- IN ULONG ulFlags);
+ _In_ DEVINST dnDevInst,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Enable_DevNode_Ex(
- IN DEVINST dnDevInst,
- IN ULONG ulFlags,
- IN HMACHINE hMachine OPTIONAL);
+ _In_ DEVINST dnDevInst,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
#define CM_Enable_DevInst CM_Enable_DevNode
#define CM_Enable_DevInst_Ex CM_Enable_DevNode_Ex
CONFIGRET
WINAPI
CM_Enumerate_Classes(
- IN ULONG ulClassIndex,
- OUT LPGUID ClassGuid,
- IN ULONG ulFlags);
+ _In_ ULONG ulClassIndex,
+ _Out_ LPGUID ClassGuid,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Enumerate_Classes_Ex(
- IN ULONG ulClassIndex,
- OUT LPGUID ClassGuid,
- IN ULONG ulFlags,
- IN HMACHINE hMachine OPTIONAL);
+ _In_ ULONG ulClassIndex,
+ _Out_ LPGUID ClassGuid,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Enumerate_EnumeratorsA(
- IN ULONG ulEnumIndex,
- OUT PCHAR Buffer,
- IN OUT PULONG pulLength,
- IN ULONG ulFlags);
+ _In_ ULONG ulEnumIndex,
+ _Out_writes_(*pulLength) PCHAR Buffer,
+ _Inout_ PULONG pulLength,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Enumerate_Enumerators_ExA(
- IN ULONG ulEnumIndex,
- OUT PCHAR Buffer,
- IN OUT PULONG pulLength,
- IN ULONG ulFlags,
- IN HMACHINE hMachine OPTIONAL);
+ _In_ ULONG ulEnumIndex,
+ _Out_writes_(*pulLength) PCHAR Buffer,
+ _Inout_ PULONG pulLength,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Enumerate_Enumerators_ExW(
- IN ULONG ulEnumIndex,
- OUT PWCHAR Buffer,
- IN OUT PULONG pulLength,
- IN ULONG ulFlags,
- IN HMACHINE hMachine OPTIONAL);
+ _In_ ULONG ulEnumIndex,
+ _Out_writes_(*pulLength) PWCHAR Buffer,
+ _Inout_ PULONG pulLength,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Enumerate_EnumeratorsW(
- IN ULONG ulEnumIndex,
- OUT PWCHAR Buffer,
- IN OUT PULONG pulLength,
- IN ULONG ulFlags);
+ _In_ ULONG ulEnumIndex,
+ _Out_writes_(*pulLength) PWCHAR Buffer,
+ _Inout_ PULONG pulLength,
+ _In_ ULONG ulFlags);
#ifdef UNICODE
#define CM_Enumerate_Enumerators CM_Enumerate_EnumeratorsW
CONFIGRET
WINAPI
CM_Find_Range(
- OUT PDWORDLONG pullStart,
- IN DWORDLONG ullStart,
- IN ULONG ulLength,
- IN DWORDLONG ullAlignment,
- IN DWORDLONG ullEnd,
- IN RANGE_LIST rlh,
- IN ULONG ulFlags);
+ _Out_ PDWORDLONG pullStart,
+ _In_ DWORDLONG ullStart,
+ _In_ ULONG ulLength,
+ _In_ DWORDLONG ullAlignment,
+ _In_ DWORDLONG ullEnd,
+ _In_ RANGE_LIST rlh,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_First_Range(
- IN RANGE_LIST rlh,
- OUT PDWORDLONG pullStart,
- OUT PDWORDLONG pullEnd,
- OUT PRANGE_ELEMENT preElement,
- IN ULONG ulFlags);
+ _In_ RANGE_LIST rlh,
+ _Out_ PDWORDLONG pullStart,
+ _Out_ PDWORDLONG pullEnd,
+ _Out_ PRANGE_ELEMENT preElement,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Free_Log_Conf(
- IN LOG_CONF lcLogConfToBeFreed,
- IN ULONG ulFlags);
+ _In_ LOG_CONF lcLogConfToBeFreed,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Free_Log_Conf_Ex(
- IN LOG_CONF lcLogConfToBeFreed,
- IN ULONG ulFlags,
- IN HMACHINE hMachine);
+ _In_ LOG_CONF lcLogConfToBeFreed,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Free_Log_Conf_Handle(
- IN LOG_CONF lcLogConf);
+ _In_ LOG_CONF lcLogConf);
CMAPI
CONFIGRET
WINAPI
CM_Free_Range_List(
- IN RANGE_LIST rlh,
- IN ULONG ulFlags);
+ _In_ RANGE_LIST rlh,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Free_Res_Des(
- OUT PRES_DES prdResDes,
- IN RES_DES rdResDes,
- IN ULONG ulFlags);
+ _Out_opt_ PRES_DES prdResDes,
+ _In_ RES_DES rdResDes,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Free_Res_Des_Ex(
- OUT PRES_DES prdResDes,
- IN RES_DES rdResDes,
- IN ULONG ulFlags,
- IN HMACHINE hMachine);
+ _Out_opt_ PRES_DES prdResDes,
+ _In_ RES_DES rdResDes,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Free_Res_Des_Handle(
- IN RES_DES rdResDes);
+ _In_ RES_DES rdResDes);
CMAPI
CONFIGRET
WINAPI
CM_Free_Resource_Conflict_Handle(
- IN CONFLICT_LIST clConflictList);
+ _In_ CONFLICT_LIST clConflictList);
CMAPI
CONFIGRET
WINAPI
CM_Get_Child(
- OUT PDEVINST pdnDevInst,
- IN DEVINST dnDevInst,
- IN ULONG ulFlags);
+ _Out_ PDEVINST pdnDevInst,
+ _In_ DEVINST dnDevInst,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Get_Child_Ex(
- OUT PDEVINST pdnDevInst,
- IN DEVINST dnDevInst,
- IN ULONG ulFlags,
- IN HMACHINE hMachine);
+ _Out_ PDEVINST pdnDevInst,
+ _In_ DEVINST dnDevInst,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Get_Class_NameA(
- IN LPGUID ClassGuid,
- OUT PCHAR Buffer,
- IN OUT PULONG pulLength,
- IN ULONG ulFlags);
+ _In_ LPGUID ClassGuid,
+ _Out_writes_opt_(*pulLength) PCHAR Buffer,
+ _Inout_ PULONG pulLength,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Get_Class_NameW(
- IN LPGUID ClassGuid,
- OUT PWCHAR Buffer,
- IN OUT PULONG pulLength,
- IN ULONG ulFlags);
+ _In_ LPGUID ClassGuid,
+ _Out_writes_opt_(*pulLength) PWCHAR Buffer,
+ _Inout_ PULONG pulLength,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Get_Class_Name_ExA(
- IN LPGUID ClassGuid,
- OUT PCHAR Buffer,
- IN OUT PULONG pulLength,
- IN ULONG ulFlags,
- IN HMACHINE hMachine);
+ _In_ LPGUID ClassGuid,
+ _Out_writes_opt_(*pulLength) PCHAR Buffer,
+ _Inout_ PULONG pulLength,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Get_Class_Name_ExW(
- IN LPGUID ClassGuid,
- OUT PWCHAR Buffer,
- IN OUT PULONG pulLength,
- IN ULONG ulFlags,
- IN HMACHINE hMachine);
+ _In_ LPGUID ClassGuid,
+ _Out_writes_opt_(*pulLength) PWCHAR Buffer,
+ _Inout_ PULONG pulLength,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
#ifdef UNICODE
#define CM_Get_Class_Name CM_Get_Class_NameW
CONFIGRET
WINAPI
CM_Get_Class_Key_NameA(
- IN LPGUID ClassGuid,
- OUT LPSTR pszKeyName,
- IN OUT PULONG pulLength,
- IN ULONG ulFlags);
+ _In_ LPGUID ClassGuid,
+ _Out_writes_opt_(*pulLength) LPSTR pszKeyName,
+ _Inout_ PULONG pulLength,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Get_Class_Key_NameW(
- IN LPGUID ClassGuid,
- OUT LPWSTR pszKeyName,
- IN OUT PULONG pulLength,
- IN ULONG ulFlags);
+ _In_ LPGUID ClassGuid,
+ _Out_writes_opt_(*pulLength) LPWSTR pszKeyName,
+ _Inout_ PULONG pulLength,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Get_Class_Key_Name_ExA(
- IN LPGUID ClassGuid,
- OUT LPSTR pszKeyName,
- IN OUT PULONG pulLength,
- IN ULONG ulFlags,
- IN HMACHINE hMachine);
+ _In_ LPGUID ClassGuid,
+ _Out_writes_opt_(*pulLength) LPSTR pszKeyName,
+ _Inout_ PULONG pulLength,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Get_Class_Key_Name_ExW(
- IN LPGUID ClassGuid,
- OUT LPWSTR pszKeyName,
- IN OUT PULONG pulLength,
- IN ULONG ulFlags,
- IN HMACHINE hMachine);
+ _In_ LPGUID ClassGuid,
+ _Out_writes_opt_(*pulLength) LPWSTR pszKeyName,
+ _Inout_ PULONG pulLength,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
#ifdef UNICODE
#define CM_Get_Class_Key_Name CM_Get_Class_Key_NameW
CONFIGRET
WINAPI
CM_Get_Depth(
- OUT PULONG pulDepth,
- IN DEVINST dnDevInst,
- IN ULONG ulFlags);
+ _Out_ PULONG pulDepth,
+ _In_ DEVINST dnDevInst,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Get_Depth_Ex(
- OUT PULONG pulDepth,
- IN DEVINST dnDevInst,
- IN ULONG ulFlags,
- IN HMACHINE hMachine);
+ _Out_ PULONG pulDepth,
+ _In_ DEVINST dnDevInst,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Get_Device_IDA(
- IN DEVINST dnDevInst,
- OUT PCHAR Buffer,
- IN ULONG BufferLen,
- IN ULONG ulFlags);
+ _In_ DEVINST dnDevInst,
+ _Out_writes_(BufferLen) PCHAR Buffer,
+ _In_ ULONG BufferLen,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Get_Device_ID_ExA(
- IN DEVINST dnDevInst,
- OUT PCHAR Buffer,
- IN ULONG BufferLen,
- IN ULONG ulFlags,
- IN HMACHINE hMachine);
+ _In_ DEVINST dnDevInst,
+ _Out_writes_(BufferLen) PCHAR Buffer,
+ _In_ ULONG BufferLen,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Get_Device_ID_ExW(
- IN DEVINST dnDevInst,
- OUT PWCHAR Buffer,
- IN ULONG BufferLen,
- IN ULONG ulFlags,
- IN HMACHINE hMachine);
+ _In_ DEVINST dnDevInst,
+ _Out_writes_(BufferLen) PWCHAR Buffer,
+ _In_ ULONG BufferLen,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Get_Device_IDW(
- IN DEVINST dnDevInst,
- OUT PWCHAR Buffer,
- IN ULONG BufferLen,
- IN ULONG ulFlags);
+ _In_ DEVINST dnDevInst,
+ _Out_writes_(BufferLen) PWCHAR Buffer,
+ _In_ ULONG BufferLen,
+ _In_ ULONG ulFlags);
#ifdef UNICODE
#define CM_Get_Device_ID CM_Get_Device_IDW
CONFIGRET
WINAPI
CM_Get_Device_ID_ListA(
- IN PCSTR pszFilter OPTIONAL,
- OUT PCHAR Buffer,
- IN ULONG BufferLen,
- IN ULONG ulFlags);
+ _In_opt_ PCSTR pszFilter,
+ _Out_writes_(BufferLen) PCHAR Buffer,
+ _In_ ULONG BufferLen,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Get_Device_ID_List_ExA(
- IN PCSTR pszFilter OPTIONAL,
- OUT PCHAR Buffer,
- IN ULONG BufferLen,
- IN ULONG ulFlags,
- IN HMACHINE hMachine);
+ _In_opt_ PCSTR pszFilter,
+ _Out_writes_(BufferLen) PCHAR Buffer,
+ _In_ ULONG BufferLen,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Get_Device_ID_List_ExW(
- IN PCWSTR pszFilter OPTIONAL,
- OUT PWCHAR Buffer,
- IN ULONG BufferLen,
- IN ULONG ulFlags,
- IN HMACHINE hMachine);
+ _In_opt_ PCWSTR pszFilter,
+ _Out_writes_(BufferLen) PWCHAR Buffer,
+ _In_ ULONG BufferLen,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Get_Device_ID_ListW(
- IN PCWSTR pszFilter OPTIONAL,
- OUT PWCHAR Buffer,
- IN ULONG BufferLen,
- IN ULONG ulFlags);
+ _In_opt_ PCWSTR pszFilter,
+ _Out_writes_(BufferLen) PWCHAR Buffer,
+ _In_ ULONG BufferLen,
+ _In_ ULONG ulFlags);
#ifdef UNICODE
#define CM_Get_Device_ID_List CM_Get_Device_ID_ListW
CONFIGRET
WINAPI
CM_Get_Device_ID_List_SizeA(
- OUT PULONG pulLen,
- IN PCSTR pszFilter OPTIONAL,
- IN ULONG ulFlags);
+ _Out_ PULONG pulLen,
+ _In_opt_ PCSTR pszFilter,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Get_Device_ID_List_Size_ExA(
- OUT PULONG pulLen,
- IN PCSTR pszFilter OPTIONAL,
- IN ULONG ulFlags,
- IN HMACHINE hMachine);
+ _Out_ PULONG pulLen,
+ _In_opt_ PCSTR pszFilter,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Get_Device_ID_List_Size_ExW(
- OUT PULONG pulLen,
- IN PCWSTR pszFilter OPTIONAL,
- IN ULONG ulFlags,
- IN HMACHINE hMachine);
+ _Out_ PULONG pulLen,
+ _In_opt_ PCWSTR pszFilter,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Get_Device_ID_List_SizeW(
- OUT PULONG pulLen,
- IN PCWSTR pszFilter OPTIONAL,
- IN ULONG ulFlags);
+ _Out_ PULONG pulLen,
+ _In_opt_ PCWSTR pszFilter,
+ _In_ ULONG ulFlags);
#ifdef UNICODE
#define CM_Get_Device_ID_List_Size CM_Get_Device_ID_List_SizeW
CONFIGRET
WINAPI
CM_Get_Device_ID_Size(
- OUT PULONG pulLen,
- IN DEVINST dnDevInst,
- IN ULONG ulFlags);
+ _Out_ PULONG pulLen,
+ _In_ DEVINST dnDevInst,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Get_Device_ID_Size_Ex(
- OUT PULONG pulLen,
- IN DEVINST dnDevInst,
- IN ULONG ulFlags,
- IN HMACHINE hMachine);
+ _Out_ PULONG pulLen,
+ _In_ DEVINST dnDevInst,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Get_DevNode_Registry_PropertyA(
- IN DEVINST dnDevInst,
- IN ULONG ulProperty,
- OUT PULONG pulRegDataType OPTIONAL,
- OUT PVOID Buffer OPTIONAL,
- IN OUT PULONG pulLength,
- IN ULONG ulFlags);
+ _In_ DEVINST dnDevInst,
+ _In_ ULONG ulProperty,
+ _Out_opt_ PULONG pulRegDataType,
+ _Out_writes_bytes_opt_(*pulLength) PVOID Buffer,
+ _Inout_ PULONG pulLength,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Get_DevNode_Registry_PropertyW(
- IN DEVINST dnDevInst,
- IN ULONG ulProperty,
- OUT PULONG pulRegDataType OPTIONAL,
- OUT PVOID Buffer OPTIONAL,
- IN OUT PULONG pulLength,
- IN ULONG ulFlags);
+ _In_ DEVINST dnDevInst,
+ _In_ ULONG ulProperty,
+ _Out_opt_ PULONG pulRegDataType,
+ _Out_writes_bytes_opt_(*pulLength) PVOID Buffer,
+ _Inout_ PULONG pulLength,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Get_DevNode_Registry_Property_ExA(
- IN DEVINST dnDevInst,
- IN ULONG ulProperty,
- OUT PULONG pulRegDataType OPTIONAL,
- OUT PVOID Buffer OPTIONAL,
- IN OUT PULONG pulLength,
- IN ULONG ulFlags,
- IN HMACHINE hMachine);
+ _In_ DEVINST dnDevInst,
+ _In_ ULONG ulProperty,
+ _Out_opt_ PULONG pulRegDataType,
+ _Out_writes_bytes_opt_(*pulLength) PVOID Buffer,
+ _Inout_ PULONG pulLength,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Get_DevNode_Registry_Property_ExW(
- IN DEVINST dnDevInst,
- IN ULONG ulProperty,
- OUT PULONG pulRegDataType OPTIONAL,
- OUT PVOID Buffer OPTIONAL,
- IN OUT PULONG pulLength,
- IN ULONG ulFlags,
- IN HMACHINE hMachine);
+ _In_ DEVINST dnDevInst,
+ _In_ ULONG ulProperty,
+ _Out_opt_ PULONG pulRegDataType,
+ _Out_writes_bytes_opt_(*pulLength) PVOID Buffer,
+ _Inout_ PULONG pulLength,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
#define CM_Get_DevInst_Registry_PropertyW CM_Get_DevNode_Registry_PropertyW
#define CM_Get_DevInst_Registry_PropertyA CM_Get_DevNode_Registry_PropertyA
CONFIGRET
WINAPI
CM_Get_DevNode_Custom_PropertyA(
- IN DEVINST dnDevInst,
- IN PCSTR pszCustomPropertyName,
- OUT PULONG pulRegDataType OPTIONAL,
- OUT PVOID Buffer OPTIONAL,
- IN OUT PULONG pulLength,
- IN ULONG ulFlags);
+ _In_ DEVINST dnDevInst,
+ _In_ PCSTR pszCustomPropertyName,
+ _Out_opt_ PULONG pulRegDataType,
+ _Out_writes_bytes_opt_(*pulLength) PVOID Buffer,
+ _Inout_ PULONG pulLength,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Get_DevNode_Custom_PropertyW(
- IN DEVINST dnDevInst,
- IN PCWSTR pszCustomPropertyName,
- OUT PULONG pulRegDataType OPTIONAL,
- OUT PVOID Buffer OPTIONAL,
- IN OUT PULONG pulLength,
- IN ULONG ulFlags);
+ _In_ DEVINST dnDevInst,
+ _In_ PCWSTR pszCustomPropertyName,
+ _Out_opt_ PULONG pulRegDataType,
+ _Out_writes_bytes_opt_(*pulLength) PVOID Buffer,
+ _Inout_ PULONG pulLength,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Get_DevNode_Custom_Property_ExA(
- IN DEVINST dnDevInst,
- IN PCSTR pszCustomPropertyName,
- OUT PULONG pulRegDataType OPTIONAL,
- OUT PVOID Buffer OPTIONAL,
- IN OUT PULONG pulLength,
- IN ULONG ulFlags,
- IN HMACHINE hMachine OPTIONAL);
+ _In_ DEVINST dnDevInst,
+ _In_ PCSTR pszCustomPropertyName,
+ _Out_opt_ PULONG pulRegDataType,
+ _Out_writes_bytes_opt_(*pulLength) PVOID Buffer,
+ _Inout_ PULONG pulLength,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Get_DevNode_Custom_Property_ExW(
- IN DEVINST dnDevInst,
- IN PCWSTR pszCustomPropertyName,
- OUT PULONG pulRegDataType OPTIONAL,
- OUT PVOID Buffer OPTIONAL,
- IN OUT PULONG pulLength,
- IN ULONG ulFlags,
- IN HMACHINE hMachine OPTIONAL);
+ _In_ DEVINST dnDevInst,
+ _In_ PCWSTR pszCustomPropertyName,
+ _Out_opt_ PULONG pulRegDataType,
+ _Out_writes_bytes_opt_(*pulLength) PVOID Buffer,
+ _Inout_ PULONG pulLength,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
#define CM_Get_DevInst_Custom_PropertyW CM_Get_DevNode_Custom_PropertyW
#define CM_Get_DevInst_Custom_PropertyA CM_Get_DevNode_Custom_PropertyA
CONFIGRET
WINAPI
CM_Get_DevNode_Status(
- OUT PULONG pulStatus,
- OUT PULONG pulProblemNumber,
- IN DEVINST dnDevInst,
- IN ULONG ulFlags);
+ _Out_ PULONG pulStatus,
+ _Out_ PULONG pulProblemNumber,
+ _In_ DEVINST dnDevInst,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Get_DevNode_Status_Ex(
- OUT PULONG pulStatus,
- OUT PULONG pulProblemNumber,
- IN DEVINST dnDevInst,
- IN ULONG ulFlags,
- IN HMACHINE hMachine);
+ _Out_ PULONG pulStatus,
+ _Out_ PULONG pulProblemNumber,
+ _In_ DEVINST dnDevInst,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
#define CM_Get_DevInst_Status CM_Get_DevNode_Status
#define CM_Get_DevInst_Status_Ex CM_Get_DevNode_Status_Ex
CONFIGRET
WINAPI
CM_Get_First_Log_Conf(
- OUT PLOG_CONF plcLogConf OPTIONAL,
- IN DEVINST dnDevInst,
- IN ULONG ulFlags);
+ _Out_opt_ PLOG_CONF plcLogConf,
+ _In_ DEVINST dnDevInst,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Get_First_Log_Conf_Ex(
- OUT PLOG_CONF plcLogConf OPTIONAL,
- IN DEVINST dnDevInst,
- IN ULONG ulFlags,
- IN HMACHINE hMachine OPTIONAL);
+ _Out_opt_ PLOG_CONF plcLogConf,
+ _In_ DEVINST dnDevInst,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Get_Global_State(
- OUT PULONG pulState,
- IN ULONG ulFlags);
+ _Out_ PULONG pulState,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Get_Global_State_Ex(
- OUT PULONG pulState,
- IN ULONG ulFlags,
- IN HMACHINE hMachine);
+ _Out_ PULONG pulState,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Get_Hardware_Profile_InfoA(
- IN ULONG ulIndex,
- OUT PHWPROFILEINFO_A pHWProfileInfo,
- IN ULONG ulFlags);
+ _In_ ULONG ulIndex,
+ _Out_ PHWPROFILEINFO_A pHWProfileInfo,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Get_Hardware_Profile_Info_ExA(
- IN ULONG ulIndex,
- OUT PHWPROFILEINFO_A pHWProfileInfo,
- IN ULONG ulFlags,
- IN HMACHINE hMachine OPTIONAL);
+ _In_ ULONG ulIndex,
+ _Out_ PHWPROFILEINFO_A pHWProfileInfo,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Get_Hardware_Profile_InfoW(
- IN ULONG ulIndex,
- OUT PHWPROFILEINFO_W pHWProfileInfo,
- IN ULONG ulFlags);
+ _In_ ULONG ulIndex,
+ _Out_ PHWPROFILEINFO_W pHWProfileInfo,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Get_Hardware_Profile_Info_ExW(
- IN ULONG ulIndex,
- OUT PHWPROFILEINFO_W pHWProfileInfo,
- IN ULONG ulFlags,
- IN HMACHINE hMachine OPTIONAL);
+ _In_ ULONG ulIndex,
+ _Out_ PHWPROFILEINFO_W pHWProfileInfo,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
#ifdef UNICODE
#define CM_Get_Hardware_Profile_Info CM_Get_Hardware_Profile_InfoW
CONFIGRET
WINAPI
CM_Get_HW_Prof_FlagsA(
- IN DEVINSTID_A szDevInstName,
- IN ULONG ulHardwareProfile,
- OUT PULONG pulValue,
- IN ULONG ulFlags);
+ _In_ DEVINSTID_A szDevInstName,
+ _In_ ULONG ulHardwareProfile,
+ _Out_ PULONG pulValue,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Get_HW_Prof_FlagsW(
- IN DEVINSTID_W szDevInstName,
- IN ULONG ulHardwareProfile,
- OUT PULONG pulValue,
- IN ULONG ulFlags);
+ _In_ DEVINSTID_W szDevInstName,
+ _In_ ULONG ulHardwareProfile,
+ _Out_ PULONG pulValue,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Get_HW_Prof_Flags_ExA(
- IN DEVINSTID_A szDevInstName,
- IN ULONG ulHardwareProfile,
- OUT PULONG pulValue,
- IN ULONG ulFlags,
- IN HMACHINE hMachine);
+ _In_ DEVINSTID_A szDevInstName,
+ _In_ ULONG ulHardwareProfile,
+ _Out_ PULONG pulValue,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Get_HW_Prof_Flags_ExW(
- IN DEVINSTID_W szDevInstName,
- IN ULONG ulHardwareProfile,
- OUT PULONG pulValue,
- IN ULONG ulFlags,
- IN HMACHINE hMachine);
+ _In_ DEVINSTID_W szDevInstName,
+ _In_ ULONG ulHardwareProfile,
+ _Out_ PULONG pulValue,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
#ifdef UNICODE
#define CM_Get_HW_Prof_Flags CM_Get_HW_Prof_FlagsW
CONFIGRET
WINAPI
CM_Get_Device_Interface_AliasA(
- IN LPCSTR pszDeviceInterface,
- IN LPGUID AliasInterfaceGuid,
- OUT LPSTR pszAliasDeviceInterface,
- IN OUT PULONG pulLength,
- IN ULONG ulFlags);
+ _In_ LPCSTR pszDeviceInterface,
+ _In_ LPGUID AliasInterfaceGuid,
+ _Out_writes_(*pulLength) LPSTR pszAliasDeviceInterface,
+ _Inout_ PULONG pulLength,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Get_Device_Interface_AliasW(
- IN LPCWSTR pszDeviceInterface,
- IN LPGUID AliasInterfaceGuid,
- OUT LPWSTR pszAliasDeviceInterface,
- IN OUT PULONG pulLength,
- IN ULONG ulFlags);
+ _In_ LPCWSTR pszDeviceInterface,
+ _In_ LPGUID AliasInterfaceGuid,
+ _Out_writes_(*pulLength) LPWSTR pszAliasDeviceInterface,
+ _Inout_ PULONG pulLength,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Get_Device_Interface_Alias_ExA(
- IN LPCSTR pszDeviceInterface,
- IN LPGUID AliasInterfaceGuid,
- OUT LPSTR pszAliasDeviceInterface,
- IN OUT PULONG pulLength,
- IN ULONG ulFlags,
- IN HMACHINE hMachine OPTIONAL);
+ _In_ LPCSTR pszDeviceInterface,
+ _In_ LPGUID AliasInterfaceGuid,
+ _Out_writes_(*pulLength) LPSTR pszAliasDeviceInterface,
+ _Inout_ PULONG pulLength,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Get_Device_Interface_Alias_ExW(
- IN LPCWSTR pszDeviceInterface,
- IN LPGUID AliasInterfaceGuid,
- OUT LPWSTR pszAliasDeviceInterface,
- IN OUT PULONG pulLength,
- IN ULONG ulFlags,
- IN HMACHINE hMachine OPTIONAL);
+ _In_ LPCWSTR pszDeviceInterface,
+ _In_ LPGUID AliasInterfaceGuid,
+ _Out_writes_(*pulLength) LPWSTR pszAliasDeviceInterface,
+ _Inout_ PULONG pulLength,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
#ifdef UNICODE
#define CM_Get_Device_Interface_Alias CM_Get_Device_Interface_AliasW
CONFIGRET
WINAPI
CM_Get_Device_Interface_ListA(
- IN LPGUID InterfaceClassGuid,
- IN DEVINSTID_A pDeviceID OPTIONAL,
- OUT PCHAR Buffer,
- IN ULONG BufferLen,
- IN ULONG ulFlags);
+ _In_ LPGUID InterfaceClassGuid,
+ _In_opt_ DEVINSTID_A pDeviceID,
+ _Out_writes_(BufferLen) PCHAR Buffer,
+ _In_ ULONG BufferLen,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Get_Device_Interface_ListW(
- IN LPGUID InterfaceClassGuid,
- IN DEVINSTID_W pDeviceID OPTIONAL,
- OUT PWCHAR Buffer,
- IN ULONG BufferLen,
- IN ULONG ulFlags);
+ _In_ LPGUID InterfaceClassGuid,
+ _In_opt_ DEVINSTID_W pDeviceID,
+ _Out_writes_(BufferLen) PWCHAR Buffer,
+ _In_ ULONG BufferLen,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Get_Device_Interface_List_ExA(
- IN LPGUID InterfaceClassGuid,
- IN DEVINSTID_A pDeviceID OPTIONAL,
- OUT PCHAR Buffer,
- IN ULONG BufferLen,
- IN ULONG ulFlags,
- IN HMACHINE hMachine OPTIONAL);
+ _In_ LPGUID InterfaceClassGuid,
+ _In_opt_ DEVINSTID_A pDeviceID,
+ _Out_writes_(BufferLen) PCHAR Buffer,
+ _In_ ULONG BufferLen,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Get_Device_Interface_List_ExW(
- IN LPGUID InterfaceClassGuid,
- IN DEVINSTID_W pDeviceID OPTIONAL,
- OUT PWCHAR Buffer,
- IN ULONG BufferLen,
- IN ULONG ulFlags,
- IN HMACHINE hMachine OPTIONAL);
+ _In_ LPGUID InterfaceClassGuid,
+ _In_opt_ DEVINSTID_W pDeviceID,
+ _Out_writes_(BufferLen) PWCHAR Buffer,
+ _In_ ULONG BufferLen,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
#ifdef UNICODE
#define CM_Get_Device_Interface_List CM_Get_Device_Interface_ListW
CONFIGRET
WINAPI
CM_Get_Device_Interface_List_SizeA(
- OUT PULONG pulLen,
- IN LPGUID InterfaceClassGuid,
- IN DEVINSTID_A pDeviceID OPTIONAL,
- IN ULONG ulFlags);
+ _Out_ PULONG pulLen,
+ _In_ LPGUID InterfaceClassGuid,
+ _In_opt_ DEVINSTID_A pDeviceID,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Get_Device_Interface_List_SizeW(
- OUT PULONG pulLen,
- IN LPGUID InterfaceClassGuid,
- IN DEVINSTID_W pDeviceID OPTIONAL,
- IN ULONG ulFlags);
+ _Out_ PULONG pulLen,
+ _In_ LPGUID InterfaceClassGuid,
+ _In_opt_ DEVINSTID_W pDeviceID,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Get_Device_Interface_List_Size_ExA(
- OUT PULONG pulLen,
- IN LPGUID InterfaceClassGuid,
- IN DEVINSTID_A pDeviceID OPTIONAL,
- IN ULONG ulFlags,
- IN HMACHINE hMachine OPTIONAL);
+ _Out_ PULONG pulLen,
+ _In_ LPGUID InterfaceClassGuid,
+ _In_opt_ DEVINSTID_A pDeviceID,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Get_Device_Interface_List_Size_ExW(
- OUT PULONG pulLen,
- IN LPGUID InterfaceClassGuid,
- IN DEVINSTID_W pDeviceID OPTIONAL,
- IN ULONG ulFlags,
- IN HMACHINE hMachine OPTIONAL);
+ _Out_ PULONG pulLen,
+ _In_ LPGUID InterfaceClassGuid,
+ _In_opt_ DEVINSTID_W pDeviceID,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
#ifdef UNICODE
#define CM_Get_Device_Interface_List_Size CM_Get_Device_Interface_List_SizeW
CONFIGRET
WINAPI
CM_Get_Log_Conf_Priority(
- IN LOG_CONF lcLogConf,
- OUT PPRIORITY pPriority,
- IN ULONG ulFlags);
+ _In_ LOG_CONF lcLogConf,
+ _Out_ PPRIORITY pPriority,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Get_Log_Conf_Priority_Ex(
- IN LOG_CONF lcLogConf,
- OUT PPRIORITY pPriority,
- IN ULONG ulFlags,
- IN HMACHINE hMachine);
+ _In_ LOG_CONF lcLogConf,
+ _Out_ PPRIORITY pPriority,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Get_Next_Log_Conf(
- OUT PLOG_CONF plcLogConf OPTIONAL,
- IN LOG_CONF lcLogConf,
- IN ULONG ulFlags);
+ _Out_opt_ PLOG_CONF plcLogConf,
+ _In_ LOG_CONF lcLogConf,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Get_Next_Log_Conf_Ex(
- OUT PLOG_CONF plcLogConf OPTIONAL,
- IN LOG_CONF lcLogConf,
- IN ULONG ulFlags,
- IN HMACHINE hMachine);
+ _Out_opt_ PLOG_CONF plcLogConf,
+ _In_ LOG_CONF lcLogConf,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Get_Next_Res_Des(
- OUT PRES_DES prdResDes,
- IN RES_DES rdResDes,
- IN RESOURCEID ForResource,
- OUT PRESOURCEID pResourceID,
- IN ULONG ulFlags);
+ _Out_ PRES_DES prdResDes,
+ _In_ RES_DES rdResDes,
+ _In_ RESOURCEID ForResource,
+ _Out_opt_ PRESOURCEID pResourceID,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Get_Next_Res_Des_Ex(
- OUT PRES_DES prdResDes,
- IN RES_DES rdResDes,
- IN RESOURCEID ForResource,
- OUT PRESOURCEID pResourceID,
- IN ULONG ulFlags,
- IN HMACHINE hMachine);
+ _Out_ PRES_DES prdResDes,
+ _In_ RES_DES rdResDes,
+ _In_ RESOURCEID ForResource,
+ _Out_opt_ PRESOURCEID pResourceID,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Get_Parent(
- OUT PDEVINST pdnDevInst,
- IN DEVINST dnDevInst,
- IN ULONG ulFlags);
+ _Out_ PDEVINST pdnDevInst,
+ _In_ DEVINST dnDevInst,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Get_Parent_Ex(
- OUT PDEVINST pdnDevInst,
- IN DEVINST dnDevInst,
- IN ULONG ulFlags,
- IN HMACHINE hMachine);
+ _Out_ PDEVINST pdnDevInst,
+ _In_ DEVINST dnDevInst,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Get_Res_Des_Data(
- IN RES_DES rdResDes,
- OUT PVOID Buffer,
- IN ULONG BufferLen,
- IN ULONG ulFlags);
+ _In_ RES_DES rdResDes,
+ _Out_writes_bytes_(BufferLen) PVOID Buffer,
+ _In_ ULONG BufferLen,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Get_Res_Des_Data_Ex(
- IN RES_DES rdResDes,
- OUT PVOID Buffer,
- IN ULONG BufferLen,
- IN ULONG ulFlags,
- IN HMACHINE hMachine);
+ _In_ RES_DES rdResDes,
+ _Out_writes_bytes_(BufferLen) PVOID Buffer,
+ _In_ ULONG BufferLen,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Get_Res_Des_Data_Size(
- OUT PULONG pulSize,
- IN RES_DES rdResDes,
- IN ULONG ulFlags);
+ _Out_ PULONG pulSize,
+ _In_ RES_DES rdResDes,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Get_Res_Des_Data_Size_Ex(
- OUT PULONG pulSize,
- IN RES_DES rdResDes,
- IN ULONG ulFlags,
- IN HMACHINE hMachine);
+ _Out_ PULONG pulSize,
+ _In_ RES_DES rdResDes,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Get_Resource_Conflict_Count(
- IN CONFLICT_LIST clConflictList,
- OUT PULONG pulCount);
+ _In_ CONFLICT_LIST clConflictList,
+ _Out_ PULONG pulCount);
CMAPI
CONFIGRET
WINAPI
CM_Get_Resource_Conflict_DetailsA(
- IN CONFLICT_LIST clConflictList,
- IN ULONG ulIndex,
- IN OUT PCONFLICT_DETAILS_A pConflictDetails);
+ _In_ CONFLICT_LIST clConflictList,
+ _In_ ULONG ulIndex,
+ _Inout_ PCONFLICT_DETAILS_A pConflictDetails);
CMAPI
CONFIGRET
WINAPI
CM_Get_Resource_Conflict_DetailsW(
- IN CONFLICT_LIST clConflictList,
- IN ULONG ulIndex,
- IN OUT PCONFLICT_DETAILS_W pConflictDetails);
+ _In_ CONFLICT_LIST clConflictList,
+ _In_ ULONG ulIndex,
+ _Inout_ PCONFLICT_DETAILS_W pConflictDetails);
#ifdef UNICODE
#define CM_Get_Resource_Conflict_Details CM_Get_Resource_Conflict_DetailsW
CONFIGRET
WINAPI
CM_Get_Class_Registry_PropertyW(
- IN LPGUID ClassGuid,
- IN ULONG ulProperty,
- OUT PULONG pulRegDataType OPTIONAL,
- OUT PVOID Buffer OPTIONAL,
- IN OUT PULONG pulLength,
- IN ULONG ulFlags,
- IN HMACHINE hMachine OPTIONAL);
+ _In_ LPGUID ClassGuid,
+ _In_ ULONG ulProperty,
+ _Out_opt_ PULONG pulRegDataType,
+ _Out_writes_bytes_opt_(*pulLength) PVOID Buffer,
+ _Inout_ PULONG pulLength,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Set_Class_Registry_PropertyW(
- IN LPGUID ClassGuid,
- IN ULONG ulProperty,
- IN PCVOID Buffer OPTIONAL,
- IN ULONG ulLength,
- IN ULONG ulFlags,
- IN HMACHINE hMachine OPTIONAL);
+ _In_ LPGUID ClassGuid,
+ _In_ ULONG ulProperty,
+ _In_reads_bytes_opt_(ulLength) PCVOID Buffer,
+ _In_ ULONG ulLength,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Get_Class_Registry_PropertyA(
- IN LPGUID ClassGuid,
- IN ULONG ulProperty,
- OUT PULONG pulRegDataType OPTIONAL,
- OUT PVOID Buffer OPTIONAL,
- IN OUT PULONG pulLength,
- IN ULONG ulFlags,
- IN HMACHINE hMachine OPTIONAL);
+ _In_ LPGUID ClassGuid,
+ _In_ ULONG ulProperty,
+ _Out_opt_ PULONG pulRegDataType,
+ _Out_writes_bytes_opt_(*pulLength) PVOID Buffer,
+ _Inout_ PULONG pulLength,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Set_Class_Registry_PropertyA(
- IN LPGUID ClassGuid,
- IN ULONG ulProperty,
- IN PCVOID Buffer OPTIONAL,
- IN ULONG ulLength,
- IN ULONG ulFlags,
- IN HMACHINE hMachine OPTIONAL);
+ _In_ LPGUID ClassGuid,
+ _In_ ULONG ulProperty,
+ _In_reads_bytes_opt_(ulLength) PCVOID Buffer,
+ _In_ ULONG ulLength,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
#ifdef UNICODE
#define CM_Get_Class_Registry_Property CM_Get_Class_Registry_PropertyW
CONFIGRET
WINAPI
CM_Get_Sibling(
- OUT PDEVINST pdnDevInst,
- IN DEVINST DevInst,
- IN ULONG ulFlags);
+ _Out_ PDEVINST pdnDevInst,
+ _In_ DEVINST DevInst,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Get_Sibling_Ex(
- OUT PDEVINST pdnDevInst,
- IN DEVINST DevInst,
- IN ULONG ulFlags,
- IN HMACHINE hMachine);
+ _Out_ PDEVINST pdnDevInst,
+ _In_ DEVINST DevInst,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
CMAPI
WORD
WORD
WINAPI
CM_Get_Version_Ex(
- IN HMACHINE hMachine);
+ _In_opt_ HMACHINE hMachine);
#if (WINVER >= _WIN32_WINNT_WINXP)
BOOL
WINAPI
CM_Is_Version_Available(
- IN WORD wVersion);
+ _In_ WORD wVersion);
CMAPI
BOOL
WINAPI
CM_Is_Version_Available_Ex(
- IN WORD wVersion,
- IN HMACHINE hMachine OPTIONAL);
+ _In_ WORD wVersion,
+ _In_opt_ HMACHINE hMachine);
#endif /* (WINVER >= _WIN32_WINNT_WINXP) */
CONFIGRET
WINAPI
CM_Intersect_Range_List(
- IN RANGE_LIST rlhOld1,
- IN RANGE_LIST rlhOld2,
- IN RANGE_LIST rlhNew,
- IN ULONG ulFlags);
+ _In_ RANGE_LIST rlhOld1,
+ _In_ RANGE_LIST rlhOld2,
+ _In_ RANGE_LIST rlhNew,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Invert_Range_List(
- IN RANGE_LIST rlhOld,
- IN RANGE_LIST rlhNew,
- IN DWORDLONG ullMaxValue,
- IN ULONG ulFlags);
+ _In_ RANGE_LIST rlhOld,
+ _In_ RANGE_LIST rlhNew,
+ _In_ DWORDLONG ullMaxValue,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Is_Dock_Station_Present(
- OUT PBOOL pbPresent);
+ _Out_ PBOOL pbPresent);
CMAPI
CONFIGRET
WINAPI
CM_Is_Dock_Station_Present_Ex(
- OUT PBOOL pbPresent,
- IN HMACHINE hMachine OPTIONAL);
+ _Out_ PBOOL pbPresent,
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Locate_DevNodeA(
- OUT PDEVINST pdnDevInst,
- IN DEVINSTID_A pDeviceID OPTIONAL,
- IN ULONG ulFlags);
+ _Out_ PDEVINST pdnDevInst,
+ _In_opt_ DEVINSTID_A pDeviceID,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Locate_DevNode_ExA(
- OUT PDEVINST pdnDevInst,
- IN DEVINSTID_A pDeviceID OPTIONAL,
- IN ULONG ulFlags,
- IN HMACHINE hMachine);
+ _Out_ PDEVINST pdnDevInst,
+ _In_opt_ DEVINSTID_A pDeviceID,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Locate_DevNode_ExW(
- OUT PDEVINST pdnDevInst,
- IN DEVINSTID_W pDeviceID OPTIONAL,
- IN ULONG ulFlags,
- IN HMACHINE hMachine);
+ _Out_ PDEVINST pdnDevInst,
+ _In_opt_ DEVINSTID_W pDeviceID,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Locate_DevNodeW(
- OUT PDEVINST pdnDevInst,
- IN DEVINSTID_W pDeviceID OPTIONAL,
- IN ULONG ulFlags);
+ _Out_ PDEVINST pdnDevInst,
+ _In_opt_ DEVINSTID_W pDeviceID,
+ _In_ ULONG ulFlags);
#define CM_Locate_DevInstA CM_Locate_DevNodeA
#define CM_Locate_DevInstW CM_Locate_DevNodeW
CONFIGRET
WINAPI
CM_Merge_Range_List(
- IN RANGE_LIST rlhOld1,
- IN RANGE_LIST rlhOld2,
- IN RANGE_LIST rlhNew,
- IN ULONG ulFlags);
+ _In_ RANGE_LIST rlhOld1,
+ _In_ RANGE_LIST rlhOld2,
+ _In_ RANGE_LIST rlhNew,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Modify_Res_Des(
- OUT PRES_DES prdResDes,
- IN RES_DES rdResDes,
- IN RESOURCEID ResourceID,
- IN PCVOID ResourceData,
- IN ULONG ResourceLen,
- IN ULONG ulFlags);
+ _Out_ PRES_DES prdResDes,
+ _In_ RES_DES rdResDes,
+ _In_ RESOURCEID ResourceID,
+ _In_reads_bytes_(ResourceLen) PCVOID ResourceData,
+ _In_ ULONG ResourceLen,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Modify_Res_Des_Ex(
- OUT PRES_DES prdResDes,
- IN RES_DES rdResDes,
- IN RESOURCEID ResourceID,
- IN PCVOID ResourceData,
- IN ULONG ResourceLen,
- IN ULONG ulFlags,
- IN HMACHINE hMachine);
+ _Out_ PRES_DES prdResDes,
+ _In_ RES_DES rdResDes,
+ _In_ RESOURCEID ResourceID,
+ _In_reads_bytes_(ResourceLen) PCVOID ResourceData,
+ _In_ ULONG ResourceLen,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Move_DevNode(
- IN DEVINST dnFromDevInst,
- IN DEVINST dnToDevInst,
- IN ULONG ulFlags);
+ _In_ DEVINST dnFromDevInst,
+ _In_ DEVINST dnToDevInst,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Move_DevNode_Ex(
- IN DEVINST dnFromDevInst,
- IN DEVINST dnToDevInst,
- IN ULONG ulFlags,
- IN HMACHINE hMachine OPTIONAL);
+ _In_ DEVINST dnFromDevInst,
+ _In_ DEVINST dnToDevInst,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
#define CM_Move_DevInst CM_Move_DevNode
#define CM_Move_DevInst_Ex CM_Move_DevNode_Ex
CONFIGRET
WINAPI
CM_Next_Range(
- IN OUT PRANGE_ELEMENT preElement,
- OUT PDWORDLONG pullStart,
- OUT PDWORDLONG pullEnd,
- IN ULONG ulFlags);
+ _Inout_ PRANGE_ELEMENT preElement,
+ _Out_ PDWORDLONG pullStart,
+ _Out_ PDWORDLONG pullEnd,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Open_Class_KeyA(
- IN LPGUID ClassGuid OPTIONAL,
- IN LPCSTR pszClassName OPTIONAL,
- IN REGSAM samDesired,
- IN REGDISPOSITION Disposition,
- OUT PHKEY phkClass,
- IN ULONG ulFlags);
+ _In_opt_ LPGUID ClassGuid,
+ _In_opt_ LPCSTR pszClassName,
+ _In_ REGSAM samDesired,
+ _In_ REGDISPOSITION Disposition,
+ _Out_ PHKEY phkClass,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Open_Class_KeyW(
- IN LPGUID ClassGuid OPTIONAL,
- IN LPCWSTR pszClassName OPTIONAL,
- IN REGSAM samDesired,
- IN REGDISPOSITION Disposition,
- OUT PHKEY phkClass,
- IN ULONG ulFlags);
+ _In_opt_ LPGUID ClassGuid,
+ _In_opt_ LPCWSTR pszClassName,
+ _In_ REGSAM samDesired,
+ _In_ REGDISPOSITION Disposition,
+ _Out_ PHKEY phkClass,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Open_Class_Key_ExA(
- IN LPGUID pszClassGuid OPTIONAL,
- IN LPCSTR pszClassName OPTIONAL,
- IN REGSAM samDesired,
- IN REGDISPOSITION Disposition,
- OUT PHKEY phkClass,
- IN ULONG ulFlags,
- IN HMACHINE hMachine);
+ _In_opt_ LPGUID pszClassGuid,
+ _In_opt_ LPCSTR pszClassName,
+ _In_ REGSAM samDesired,
+ _In_ REGDISPOSITION Disposition,
+ _Out_ PHKEY phkClass,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Open_Class_Key_ExW(
- IN LPGUID pszClassGuid OPTIONAL,
- IN LPCWSTR pszClassName OPTIONAL,
- IN REGSAM samDesired,
- IN REGDISPOSITION Disposition,
- OUT PHKEY phkClass,
- IN ULONG ulFlags,
- IN HMACHINE hMachine);
+ _In_opt_ LPGUID pszClassGuid,
+ _In_opt_ LPCWSTR pszClassName,
+ _In_ REGSAM samDesired,
+ _In_ REGDISPOSITION Disposition,
+ _Out_ PHKEY phkClass,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
#ifdef UNICODE
#define CM_Open_Class_Key CM_Open_Class_KeyW
CONFIGRET
WINAPI
CM_Open_DevNode_Key(
- IN DEVINST dnDevNode,
- IN REGSAM samDesired,
- IN ULONG ulHardwareProfile,
- IN REGDISPOSITION Disposition,
- OUT PHKEY phkDevice,
- IN ULONG ulFlags);
+ _In_ DEVINST dnDevNode,
+ _In_ REGSAM samDesired,
+ _In_ ULONG ulHardwareProfile,
+ _In_ REGDISPOSITION Disposition,
+ _Out_ PHKEY phkDevice,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Open_DevNode_Key_Ex(
- IN DEVINST dnDevNode,
- IN REGSAM samDesired,
- IN ULONG ulHardwareProfile,
- IN REGDISPOSITION Disposition,
- OUT PHKEY phkDevice,
- IN ULONG ulFlags,
- IN HMACHINE hMachine);
+ _In_ DEVINST dnDevNode,
+ _In_ REGSAM samDesired,
+ _In_ ULONG ulHardwareProfile,
+ _In_ REGDISPOSITION Disposition,
+ _Out_ PHKEY phkDevice,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
#define CM_Open_DevInst_Key CM_Open_DevNode_Key
#define CM_Open_DevInst_Key_Ex CM_Open_DevNode_Key_Ex
CONFIGRET
WINAPI
CM_Open_Device_Interface_KeyA(
- IN LPCSTR pszDeviceInterface,
- IN REGSAM samDesired,
- IN REGDISPOSITION Disposition,
- OUT PHKEY phkDeviceInterface,
- IN ULONG ulFlags);
+ _In_ LPCSTR pszDeviceInterface,
+ _In_ REGSAM samDesired,
+ _In_ REGDISPOSITION Disposition,
+ _Out_ PHKEY phkDeviceInterface,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Open_Device_Interface_KeyW(
- IN LPCWSTR pszDeviceInterface,
- IN REGSAM samDesired,
- IN REGDISPOSITION Disposition,
- OUT PHKEY phkDeviceInterface,
- IN ULONG ulFlags);
+ _In_ LPCWSTR pszDeviceInterface,
+ _In_ REGSAM samDesired,
+ _In_ REGDISPOSITION Disposition,
+ _Out_ PHKEY phkDeviceInterface,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Open_Device_Interface_Key_ExA(
- IN LPCSTR pszDeviceInterface,
- IN REGSAM samDesired,
- IN REGDISPOSITION Disposition,
- OUT PHKEY phkDeviceInterface,
- IN ULONG ulFlags,
- IN HMACHINE hMachine OPTIONAL);
+ _In_ LPCSTR pszDeviceInterface,
+ _In_ REGSAM samDesired,
+ _In_ REGDISPOSITION Disposition,
+ _Out_ PHKEY phkDeviceInterface,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Open_Device_Interface_Key_ExW(
- IN LPCWSTR pszDeviceInterface,
- IN REGSAM samDesired,
- IN REGDISPOSITION Disposition,
- OUT PHKEY phkDeviceInterface,
- IN ULONG ulFlags,
- IN HMACHINE hMachine OPTIONAL);
+ _In_ LPCWSTR pszDeviceInterface,
+ _In_ REGSAM samDesired,
+ _In_ REGDISPOSITION Disposition,
+ _Out_ PHKEY phkDeviceInterface,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
#ifdef UNICODE
#define CM_Open_Device_Interface_Key CM_Open_Device_Interface_KeyW
CONFIGRET
WINAPI
CM_Delete_Device_Interface_KeyA(
- IN LPCSTR pszDeviceInterface,
- IN ULONG ulFlags);
+ _In_ LPCSTR pszDeviceInterface,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Delete_Device_Interface_KeyW(
- IN LPCWSTR pszDeviceInterface,
- IN ULONG ulFlags);
+ _In_ LPCWSTR pszDeviceInterface,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Delete_Device_Interface_Key_ExA(
- IN LPCSTR pszDeviceInterface,
- IN ULONG ulFlags,
- IN HMACHINE hMachine OPTIONAL);
+ _In_ LPCSTR pszDeviceInterface,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Delete_Device_Interface_Key_ExW(
- IN LPCWSTR pszDeviceInterface,
- IN ULONG ulFlags,
- IN HMACHINE hMachine OPTIONAL);
+ _In_ LPCWSTR pszDeviceInterface,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
#ifdef UNICODE
#define CM_Delete_Device_Interface_Key CM_Delete_Device_Interface_KeyW
CONFIGRET
WINAPI
CM_Query_Arbitrator_Free_Data(
- OUT PVOID pData,
- IN ULONG DataLen,
- IN DEVINST dnDevInst,
- IN RESOURCEID ResourceID,
- IN ULONG ulFlags);
+ _Out_writes_bytes_(DataLen) PVOID pData,
+ _In_ ULONG DataLen,
+ _In_ DEVINST dnDevInst,
+ _In_ RESOURCEID ResourceID,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Query_Arbitrator_Free_Data_Ex(
- OUT PVOID pData,
- IN ULONG DataLen,
- IN DEVINST dnDevInst,
- IN RESOURCEID ResourceID,
- IN ULONG ulFlags,
- IN HMACHINE hMachine OPTIONAL);
+ _Out_writes_bytes_(DataLen) PVOID pData,
+ _In_ ULONG DataLen,
+ _In_ DEVINST dnDevInst,
+ _In_ RESOURCEID ResourceID,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Query_Arbitrator_Free_Size(
- OUT PULONG pulSize,
- IN DEVINST dnDevInst,
- IN RESOURCEID ResourceID,
- IN ULONG ulFlags);
+ _Out_ PULONG pulSize,
+ _In_ DEVINST dnDevInst,
+ _In_ RESOURCEID ResourceID,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Query_Arbitrator_Free_Size_Ex(
- OUT PULONG pulSize,
- IN DEVINST dnDevInst,
- IN RESOURCEID ResourceID,
- IN ULONG ulFlags,
- IN HMACHINE hMachine OPTIONAL);
+ _Out_ PULONG pulSize,
+ _In_ DEVINST dnDevInst,
+ _In_ RESOURCEID ResourceID,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Query_Remove_SubTree(
- IN DEVINST dnAncestor,
- IN ULONG ulFlags);
+ _In_ DEVINST dnAncestor,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Query_Remove_SubTree_Ex(
- IN DEVINST dnAncestor,
- IN ULONG ulFlags,
- IN HMACHINE hMachine OPTIONAL);
+ _In_ DEVINST dnAncestor,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Query_And_Remove_SubTreeA(
- IN DEVINST dnAncestor,
- OUT PPNP_VETO_TYPE pVetoType,
- OUT LPSTR pszVetoName,
- IN ULONG ulNameLength,
- IN ULONG ulFlags);
+ _In_ DEVINST dnAncestor,
+ _Out_opt_ PPNP_VETO_TYPE pVetoType,
+ _Out_writes_opt_(ulNameLength) LPSTR pszVetoName,
+ _In_ ULONG ulNameLength,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Query_And_Remove_SubTreeW(
- IN DEVINST dnAncestor,
- OUT PPNP_VETO_TYPE pVetoType,
- OUT LPWSTR pszVetoName,
- IN ULONG ulNameLength,
- IN ULONG ulFlags);
+ _In_ DEVINST dnAncestor,
+ _Out_opt_ PPNP_VETO_TYPE pVetoType,
+ _Out_writes_opt_(ulNameLength) LPWSTR pszVetoName,
+ _In_ ULONG ulNameLength,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Query_And_Remove_SubTree_ExA(
- IN DEVINST dnAncestor,
- OUT PPNP_VETO_TYPE pVetoType,
- OUT LPSTR pszVetoName,
- IN ULONG ulNameLength,
- IN ULONG ulFlags,
- IN HMACHINE hMachine);
+ _In_ DEVINST dnAncestor,
+ _Out_opt_ PPNP_VETO_TYPE pVetoType,
+ _Out_writes_opt_(ulNameLength) LPSTR pszVetoName,
+ _In_ ULONG ulNameLength,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Query_And_Remove_SubTree_ExW(
- IN DEVINST dnAncestor,
- OUT PPNP_VETO_TYPE pVetoType,
- OUT LPWSTR pszVetoName,
- IN ULONG ulNameLength,
- IN ULONG ulFlags,
- IN HMACHINE hMachine);
+ _In_ DEVINST dnAncestor,
+ _Out_opt_ PPNP_VETO_TYPE pVetoType,
+ _Out_writes_opt_(ulNameLength) LPWSTR pszVetoName,
+ _In_ ULONG ulNameLength,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
#ifdef UNICODE
#define CM_Query_And_Remove_SubTree CM_Query_And_Remove_SubTreeW
CONFIGRET
WINAPI
CM_Query_Resource_Conflict_List(
- OUT PCONFLICT_LIST pclConflictList,
- IN DEVINST dnDevInst,
- IN RESOURCEID ResourceID,
- IN PCVOID ResourceData,
- IN ULONG ResourceLen,
- IN ULONG ulFlags,
- IN HMACHINE hMachine OPTIONAL);
+ _Out_ PCONFLICT_LIST pclConflictList,
+ _In_ DEVINST dnDevInst,
+ _In_ RESOURCEID ResourceID,
+ _In_reads_bytes_(ResourceLen) PCVOID ResourceData,
+ _In_ ULONG ResourceLen,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Reenumerate_DevNode(
- IN DEVINST dnDevInst,
- IN ULONG ulFlags);
+ _In_ DEVINST dnDevInst,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Reenumerate_DevNode_Ex(
- IN DEVINST dnDevInst,
- IN ULONG ulFlags,
- IN HMACHINE hMachine);
+ _In_ DEVINST dnDevInst,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
#define CM_Reenumerate_DevInst CM_Reenumerate_DevNode
#define CM_Reenumerate_DevInst_Ex CM_Reenumerate_DevNode_Ex
CONFIGRET
WINAPI
CM_Register_Device_InterfaceA(
- IN DEVINST dnDevInst,
- IN LPGUID InterfaceClassGuid,
- IN LPCSTR pszReference OPTIONAL,
- OUT LPSTR pszDeviceInterface,
- IN OUT PULONG pulLength,
- IN ULONG ulFlags);
+ _In_ DEVINST dnDevInst,
+ _In_ LPGUID InterfaceClassGuid,
+ _In_opt_ LPCSTR pszReference,
+ _Out_writes_(*pulLength) LPSTR pszDeviceInterface,
+ _Inout_ PULONG pulLength,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Register_Device_InterfaceW(
- IN DEVINST dnDevInst,
- IN LPGUID InterfaceClassGuid,
- IN LPCWSTR pszReference OPTIONAL,
- OUT LPWSTR pszDeviceInterface,
- IN OUT PULONG pulLength,
- IN ULONG ulFlags);
+ _In_ DEVINST dnDevInst,
+ _In_ LPGUID InterfaceClassGuid,
+ _In_opt_ LPCWSTR pszReference,
+ _Out_writes_(*pulLength) LPWSTR pszDeviceInterface,
+ _Inout_ PULONG pulLength,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Register_Device_Interface_ExA(
- IN DEVINST dnDevInst,
- IN LPGUID InterfaceClassGuid,
- IN LPCSTR pszReference OPTIONAL,
- OUT LPSTR pszDeviceInterface,
- IN OUT PULONG pulLength,
- IN ULONG ulFlags,
- IN HMACHINE hMachine OPTIONAL);
+ _In_ DEVINST dnDevInst,
+ _In_ LPGUID InterfaceClassGuid,
+ _In_opt_ LPCSTR pszReference,
+ _Out_writes_(*pulLength) LPSTR pszDeviceInterface,
+ _Inout_ PULONG pulLength,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Register_Device_Interface_ExW(
- IN DEVINST dnDevInst,
- IN LPGUID InterfaceClassGuid,
- IN LPCWSTR pszReference OPTIONAL,
- OUT LPWSTR pszDeviceInterface,
- IN OUT PULONG pulLength,
- IN ULONG ulFlags,
- IN HMACHINE hMachine OPTIONAL);
+ _In_ DEVINST dnDevInst,
+ _In_ LPGUID InterfaceClassGuid,
+ _In_opt_ LPCWSTR pszReference,
+ _Out_writes_(*pulLength) LPWSTR pszDeviceInterface,
+ _Inout_ PULONG pulLength,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
#ifdef UNICODE
#define CM_Register_Device_Interface CM_Register_Device_InterfaceW
CONFIGRET
WINAPI
CM_Request_Device_EjectA(
- IN DEVINST dnDevInst,
- OUT PPNP_VETO_TYPE pVetoType,
- OUT LPSTR pszVetoName,
- IN ULONG ulNameLength,
- IN ULONG ulFlags);
+ _In_ DEVINST dnDevInst,
+ _Out_opt_ PPNP_VETO_TYPE pVetoType,
+ _Out_writes_opt_(ulNameLength) LPSTR pszVetoName,
+ _In_ ULONG ulNameLength,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Request_Device_Eject_ExW(
- IN DEVINST dnDevInst,
- OUT PPNP_VETO_TYPE pVetoType,
- OUT LPWSTR pszVetoName,
- IN ULONG ulNameLength,
- IN ULONG ulFlags,
- IN HMACHINE hMachine);
+ _In_ DEVINST dnDevInst,
+ _Out_opt_ PPNP_VETO_TYPE pVetoType,
+ _Out_writes_opt_(ulNameLength) LPWSTR pszVetoName,
+ _In_ ULONG ulNameLength,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Request_Device_Eject_ExA(
- IN DEVINST dnDevInst,
- OUT PPNP_VETO_TYPE pVetoType,
- OUT LPSTR pszVetoName,
- IN ULONG ulNameLength,
- IN ULONG ulFlags,
- IN HMACHINE hMachine);
+ _In_ DEVINST dnDevInst,
+ _Out_opt_ PPNP_VETO_TYPE pVetoType,
+ _Out_writes_opt_(ulNameLength) LPSTR pszVetoName,
+ _In_ ULONG ulNameLength,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Request_Device_EjectW(
- IN DEVINST dnDevInst,
- OUT PPNP_VETO_TYPE pVetoType,
- OUT LPWSTR pszVetoName,
- IN ULONG ulNameLength,
- IN ULONG ulFlags);
+ _In_ DEVINST dnDevInst,
+ _Out_opt_ PPNP_VETO_TYPE pVetoType,
+ _Out_writes_opt_(ulNameLength) LPWSTR pszVetoName,
+ _In_ ULONG ulNameLength,
+ _In_ ULONG ulFlags);
#ifdef UNICODE
#define CM_Request_Device_Eject CM_Request_Device_EjectW
CONFIGRET
WINAPI
CM_Request_Eject_PC_Ex(
- IN HMACHINE hMachine OPTIONAL);
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Run_Detection(
- IN ULONG ulFlags);
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Run_Detection_Ex(
- IN ULONG ulFlags,
- IN HMACHINE hMachine OPTIONAL);
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
#if (WINVER >= _WIN32_WINNT_VISTA)
CONFIGRET
CM_Write_UserPowerKey(
- IN CONST GUID *SchemeGuid OPTIONAL,
- IN CONST GUID *SubGroupOfPowerSettingsGuid OPTIONAL,
- IN CONST GUID *PowerSettingGuid OPTIONAL,
- IN ULONG AccessFlags,
- IN ULONG Type,
- IN UCHAR *Buffer,
- IN DWORD BufferSize,
- OUT PDWORD Error);
+ _In_opt_ CONST GUID *SchemeGuid,
+ _In_opt_ CONST GUID *SubGroupOfPowerSettingsGuid,
+ _In_opt_ CONST GUID *PowerSettingGuid,
+ _In_ ULONG AccessFlags,
+ _In_ ULONG Type,
+ _In_reads_bytes_(BufferSize) UCHAR *Buffer,
+ _In_ DWORD BufferSize,
+ _Out_ PDWORD Error);
CONFIGRET
CM_Set_ActiveScheme(
- IN CONST GUID *SchemeGuid,
- OUT PDWORD Error);
+ _In_ CONST GUID *SchemeGuid,
+ _Out_ PDWORD Error);
CONFIGRET
CM_Restore_DefaultPowerScheme(
- IN CONST GUID *SchemeGuid,
- OUT PDWORD Error);
+ _In_ CONST GUID *SchemeGuid,
+ _Out_ PDWORD Error);
CONFIGRET
CM_RestoreAll_DefaultPowerSchemes(
- OUT PDWORD Error);
+ _Out_ PDWORD Error);
CONFIGRET
CM_Duplicate_PowerScheme(
- IN CONST GUID *SourceSchemeGuid,
- IN GUID **DestinationSchemeGuid,
- OUT PDWORD Error);
+ _In_ CONST GUID *SourceSchemeGuid,
+ _Inout_ GUID **DestinationSchemeGuid,
+ _Out_ PDWORD Error);
CONFIGRET
CM_Delete_PowerScheme(
- IN CONST GUID *SchemeGuid,
- OUT PDWORD Error);
+ _In_ CONST GUID *SchemeGuid,
+ _Out_ PDWORD Error);
CONFIGRET
CM_Import_PowerScheme(
- IN LPCWSTR ImportFileNamePath,
- IN OUT GUID **DestinationSchemeGuid,
- OUT PDWORD Error);
+ _In_ LPCWSTR ImportFileNamePath,
+ _Inout_ GUID **DestinationSchemeGuid,
+ _Out_ PDWORD Error);
#endif /* (WINVER >= _WIN32_WINNT_VISTA) */
CONFIGRET
WINAPI
CM_Set_DevNode_Problem(
- IN DEVINST dnDevInst,
- IN ULONG ulProblem,
- IN ULONG ulFlags);
+ _In_ DEVINST dnDevInst,
+ _In_ ULONG ulProblem,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Set_DevNode_Problem_Ex(
- IN DEVINST dnDevInst,
- IN ULONG ulProblem,
- IN ULONG ulFlags,
- IN HMACHINE hMachine);
+ _In_ DEVINST dnDevInst,
+ _In_ ULONG ulProblem,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
#define CM_Set_DevInst_Problem CM_Set_DevNode_Problem
#define CM_Set_DevInst_Problem_Ex CM_Set_DevNode_Problem_Ex
CONFIGRET
WINAPI
CM_Unregister_Device_InterfaceA(
- IN LPCSTR pszDeviceInterface,
- IN ULONG ulFlags);
+ _In_ LPCSTR pszDeviceInterface,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Unregister_Device_InterfaceW(
- IN LPCWSTR pszDeviceInterface,
- IN ULONG ulFlags);
+ _In_ LPCWSTR pszDeviceInterface,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Unregister_Device_Interface_ExA(
- IN LPCSTR pszDeviceInterface,
- IN ULONG ulFlags,
- IN HMACHINE hMachine OPTIONAL);
+ _In_ LPCSTR pszDeviceInterface,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Unregister_Device_Interface_ExW(
- IN LPCWSTR pszDeviceInterface,
- IN ULONG ulFlags,
- IN HMACHINE hMachine OPTIONAL);
+ _In_ LPCWSTR pszDeviceInterface,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
#ifdef UNICODE
#define CM_Unregister_Device_Interface CM_Unregister_Device_InterfaceW
CONFIGRET
WINAPI
CM_Register_Device_Driver(
- IN DEVINST dnDevInst,
- IN ULONG ulFlags);
+ _In_ DEVINST dnDevInst,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Register_Device_Driver_Ex(
- IN DEVINST dnDevInst,
- IN ULONG ulFlags,
- IN HMACHINE hMachine OPTIONAL);
+ _In_ DEVINST dnDevInst,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Remove_SubTree(
- IN DEVINST dnAncestor,
- IN ULONG ulFlags);
+ _In_ DEVINST dnAncestor,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Remove_SubTree_Ex(
- IN DEVINST dnAncestor,
- IN ULONG ulFlags,
- IN HMACHINE hMachine OPTIONAL);
+ _In_ DEVINST dnAncestor,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Set_DevNode_Registry_PropertyA(
- IN DEVINST dnDevInst,
- IN ULONG ulProperty,
- IN PCVOID Buffer OPTIONAL,
- IN ULONG ulLength,
- IN ULONG ulFlags);
+ _In_ DEVINST dnDevInst,
+ _In_ ULONG ulProperty,
+ _In_reads_bytes_opt_(ulLength) PCVOID Buffer,
+ _In_ ULONG ulLength,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Set_DevNode_Registry_PropertyW(
- IN DEVINST dnDevInst,
- IN ULONG ulProperty,
- IN PCVOID Buffer OPTIONAL,
- IN ULONG ulLength,
- IN ULONG ulFlags);
+ _In_ DEVINST dnDevInst,
+ _In_ ULONG ulProperty,
+ _In_reads_bytes_opt_(ulLength) PCVOID Buffer,
+ _In_ ULONG ulLength,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Set_DevNode_Registry_Property_ExA(
- IN DEVINST dnDevInst,
- IN ULONG ulProperty,
- IN PCVOID Buffer OPTIONAL,
- IN ULONG ulLength,
- IN ULONG ulFlags,
- IN HMACHINE hMachine);
+ _In_ DEVINST dnDevInst,
+ _In_ ULONG ulProperty,
+ _In_reads_bytes_opt_(ulLength) PCVOID Buffer,
+ _In_ ULONG ulLength,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Set_DevNode_Registry_Property_ExW(
- IN DEVINST dnDevInst,
- IN ULONG ulProperty,
- IN PCVOID Buffer OPTIONAL,
- IN ULONG ulLength,
- IN ULONG ulFlags,
- IN HMACHINE hMachine);
+ _In_ DEVINST dnDevInst,
+ _In_ ULONG ulProperty,
+ _In_reads_bytes_opt_(ulLength) PCVOID Buffer,
+ _In_ ULONG ulLength,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
#define CM_Set_DevInst_Registry_PropertyW CM_Set_DevNode_Registry_PropertyW
#define CM_Set_DevInst_Registry_PropertyA CM_Set_DevNode_Registry_PropertyA
CONFIGRET
WINAPI
CM_Set_HW_Prof(
- IN ULONG ulHardwareProfile,
- IN ULONG ulFlags);
+ _In_ ULONG ulHardwareProfile,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Set_HW_Prof_Ex(
- IN ULONG ulHardwareProfile,
- IN ULONG ulFlags,
- IN HMACHINE hMachine);
+ _In_ ULONG ulHardwareProfile,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Set_HW_Prof_FlagsA(
- IN DEVINSTID_A szDevInstName,
- IN ULONG ulConfig,
- IN ULONG ulValue,
- IN ULONG ulFlags);
+ _In_ DEVINSTID_A szDevInstName,
+ _In_ ULONG ulConfig,
+ _In_ ULONG ulValue,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Set_HW_Prof_FlagsW(
- IN DEVINSTID_W szDevInstName,
- IN ULONG ulConfig,
- IN ULONG ulValue,
- IN ULONG ulFlags);
+ _In_ DEVINSTID_W szDevInstName,
+ _In_ ULONG ulConfig,
+ _In_ ULONG ulValue,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Set_HW_Prof_Flags_ExA(
- IN DEVINSTID_A szDevInstName,
- IN ULONG ulConfig,
- IN ULONG ulValue,
- IN ULONG ulFlags,
- IN HMACHINE hMachine);
+ _In_ DEVINSTID_A szDevInstName,
+ _In_ ULONG ulConfig,
+ _In_ ULONG ulValue,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Set_HW_Prof_Flags_ExW(
- IN DEVINSTID_W szDevInstName,
- IN ULONG ulConfig,
- IN ULONG ulValue,
- IN ULONG ulFlags,
- IN HMACHINE hMachine);
+ _In_ DEVINSTID_W szDevInstName,
+ _In_ ULONG ulConfig,
+ _In_ ULONG ulValue,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
#ifdef UNICODE
#define CM_Set_HW_Prof_Flags CM_Set_HW_Prof_FlagsW
CONFIGRET
WINAPI
CM_Setup_DevNode(
- IN DEVINST dnDevInst,
- IN ULONG ulFlags);
+ _In_ DEVINST dnDevInst,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Setup_DevNode_Ex(
- IN DEVINST dnDevInst,
- IN ULONG ulFlags,
- IN HMACHINE hMachine OPTIONAL);
+ _In_ DEVINST dnDevInst,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
#define CM_Setup_DevInst CM_Setup_DevNode
#define CM_Setup_DevInst_Ex CM_Setup_DevNode_Ex
CONFIGRET
WINAPI
CM_Test_Range_Available(
- IN DWORDLONG ullStartValue,
- IN DWORDLONG ullEndValue,
- IN RANGE_LIST rlh,
- IN ULONG ulFlags);
+ _In_ DWORDLONG ullStartValue,
+ _In_ DWORDLONG ullEndValue,
+ _In_ RANGE_LIST rlh,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Uninstall_DevNode(
- IN DEVINST dnPhantom,
- IN ULONG ulFlags);
+ _In_ DEVINST dnPhantom,
+ _In_ ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Uninstall_DevNode_Ex(
- IN DEVINST dnPhantom,
- IN ULONG ulFlags,
- IN HMACHINE hMachine);
+ _In_ DEVINST dnPhantom,
+ _In_ ULONG ulFlags,
+ _In_opt_ HMACHINE hMachine);
#define CM_Uninstall_DevInst CM_Uninstall_DevNode
#define CM_Uninstall_DevInst_Ex CM_Uninstall_DevNode_Ex
DWORD
WINAPI
CMP_WaitNoPendingInstallEvents(
- IN DWORD dwTimeout);
+ _In_ DWORD dwTimeout);
#endif /* (WINVER >= _WIN32_WINNT_WIN2K) */
#ifdef __cplusplus
}
#endif
+
+#endif /* _CFGMGR32_H_ */
* This file is part of the w64 mingw-runtime package.
* No warranty is given; refer to the file DISCLAIMER.PD within this package.
*/
+
#ifndef _INC_COMMCTRL
#define _INC_COMMCTRL
#ifndef _HRESULT_DEFINED
#define _HRESULT_DEFINED
-typedef LONG HRESULT;
+typedef _Return_type_success_(return >= 0) LONG HRESULT;
#endif
#ifndef NOUSER
#define ICC_NATIVEFNTCTL_CLASS 0x2000
#define ICC_STANDARD_CLASSES 0x4000
#define ICC_LINK_CLASS 0x8000
- WINCOMMCTRLAPI WINBOOL WINAPI InitCommonControlsEx(const INITCOMMONCONTROLSEX *);
+
+ WINCOMMCTRLAPI WINBOOL WINAPI InitCommonControlsEx(_In_ const INITCOMMONCONTROLSEX *);
#define ODT_HEADER 100
#define ODT_TAB 101
#define ILC_PERITEMMIRROR 0x8000
WINCOMMCTRLAPI HIMAGELIST WINAPI ImageList_Create(int cx,int cy,UINT flags,int cInitial,int cGrow);
- WINCOMMCTRLAPI WINBOOL WINAPI ImageList_Destroy(HIMAGELIST himl);
- WINCOMMCTRLAPI int WINAPI ImageList_GetImageCount(HIMAGELIST himl);
- WINCOMMCTRLAPI WINBOOL WINAPI ImageList_SetImageCount(HIMAGELIST himl,UINT uNewCount);
- WINCOMMCTRLAPI int WINAPI ImageList_Add(HIMAGELIST himl,HBITMAP hbmImage,HBITMAP hbmMask);
- WINCOMMCTRLAPI int WINAPI ImageList_ReplaceIcon(HIMAGELIST himl,int i,HICON hicon);
- WINCOMMCTRLAPI COLORREF WINAPI ImageList_SetBkColor(HIMAGELIST himl,COLORREF clrBk);
- WINCOMMCTRLAPI COLORREF WINAPI ImageList_GetBkColor(HIMAGELIST himl);
- WINCOMMCTRLAPI WINBOOL WINAPI ImageList_SetOverlayImage(HIMAGELIST himl,int iImage,int iOverlay);
- WINCOMMCTRLAPI HRESULT WINAPI HIMAGELIST_QueryInterface(HIMAGELIST,REFIID,void **);
+ WINCOMMCTRLAPI WINBOOL WINAPI ImageList_Destroy(_In_opt_ HIMAGELIST himl);
+ WINCOMMCTRLAPI int WINAPI ImageList_GetImageCount(_In_ HIMAGELIST himl);
+
+ WINCOMMCTRLAPI
+ WINBOOL
+ WINAPI
+ ImageList_SetImageCount(
+ _In_ HIMAGELIST himl,
+ _In_ UINT uNewCount);
+
+ WINCOMMCTRLAPI
+ int
+ WINAPI
+ ImageList_Add(
+ _In_ HIMAGELIST himl,
+ _In_ HBITMAP hbmImage,
+ _In_opt_ HBITMAP hbmMask);
+
+ WINCOMMCTRLAPI
+ int
+ WINAPI
+ ImageList_ReplaceIcon(
+ _In_ HIMAGELIST himl,
+ _In_ int i,
+ _In_ HICON hicon);
+
+ WINCOMMCTRLAPI
+ COLORREF
+ WINAPI
+ ImageList_SetBkColor(
+ _In_ HIMAGELIST himl,
+ _In_ COLORREF clrBk);
+
+ WINCOMMCTRLAPI COLORREF WINAPI ImageList_GetBkColor(_In_ HIMAGELIST himl);
+
+ WINCOMMCTRLAPI
+ WINBOOL
+ WINAPI
+ ImageList_SetOverlayImage(
+ _In_ HIMAGELIST himl,
+ _In_ int iImage,
+ _In_ int iOverlay);
+
+ WINCOMMCTRLAPI
+ HRESULT
+ WINAPI
+ HIMAGELIST_QueryInterface(
+ _In_ HIMAGELIST,
+ _In_ REFIID,
+ _Outptr_ void **);
+
#define ImageList_AddIcon(himl,hicon) ImageList_ReplaceIcon(himl,-1,hicon)
#define ILD_NORMAL 0x0
#define ILS_SATURATE 0x4
#define ILS_ALPHA 0x8
- WINCOMMCTRLAPI WINBOOL WINAPI ImageList_Draw(HIMAGELIST himl,int i,HDC hdcDst,int x,int y,UINT fStyle);
- WINCOMMCTRLAPI WINBOOL WINAPI ImageList_Replace(HIMAGELIST himl,int i,HBITMAP hbmImage,HBITMAP hbmMask);
- WINCOMMCTRLAPI int WINAPI ImageList_AddMasked(HIMAGELIST himl,HBITMAP hbmImage,COLORREF crMask);
- WINCOMMCTRLAPI WINBOOL WINAPI ImageList_DrawEx(HIMAGELIST himl,int i,HDC hdcDst,int x,int y,int dx,int dy,COLORREF rgbBk,COLORREF rgbFg,UINT fStyle);
- WINCOMMCTRLAPI WINBOOL WINAPI ImageList_DrawIndirect(IMAGELISTDRAWPARAMS *pimldp);
- WINCOMMCTRLAPI WINBOOL WINAPI ImageList_Remove(HIMAGELIST himl,int i);
- WINCOMMCTRLAPI HICON WINAPI ImageList_GetIcon(HIMAGELIST himl,int i,UINT flags);
+ WINCOMMCTRLAPI
+ WINBOOL
+ WINAPI
+ ImageList_Draw(
+ _In_ HIMAGELIST himl,
+ _In_ int i,
+ _In_ HDC hdcDst,
+ _In_ int x,
+ _In_ int y,
+ _In_ UINT fStyle);
+
+ WINCOMMCTRLAPI
+ WINBOOL
+ WINAPI
+ ImageList_Replace(
+ _In_ HIMAGELIST himl,
+ _In_ int i,
+ _In_ HBITMAP hbmImage,
+ _In_opt_ HBITMAP hbmMask);
+
+ WINCOMMCTRLAPI
+ int
+ WINAPI
+ ImageList_AddMasked(
+ _In_ HIMAGELIST himl,
+ _In_ HBITMAP hbmImage,
+ _In_ COLORREF crMask);
+
+ WINCOMMCTRLAPI
+ WINBOOL
+ WINAPI
+ ImageList_DrawEx(
+ _In_ HIMAGELIST himl,
+ _In_ int i,
+ _In_ HDC hdcDst,
+ _In_ int x,
+ _In_ int y,
+ _In_ int dx,
+ _In_ int dy,
+ _In_ COLORREF rgbBk,
+ _In_ COLORREF rgbFg,
+ _In_ UINT fStyle);
+
+ WINCOMMCTRLAPI
+ WINBOOL
+ WINAPI
+ ImageList_DrawIndirect(
+ _In_ IMAGELISTDRAWPARAMS *pimldp);
+
+ WINCOMMCTRLAPI
+ WINBOOL
+ WINAPI
+ ImageList_Remove(
+ _In_ HIMAGELIST himl,
+ _In_ int i);
+
+ WINCOMMCTRLAPI
+ HICON
+ WINAPI
+ ImageList_GetIcon(
+ _In_ HIMAGELIST himl,
+ _In_ int i,
+ _In_ UINT flags);
+
WINCOMMCTRLAPI HIMAGELIST WINAPI ImageList_LoadImageA(HINSTANCE hi,LPCSTR lpbmp,int cx,int cGrow,COLORREF crMask,UINT uType,UINT uFlags);
WINCOMMCTRLAPI HIMAGELIST WINAPI ImageList_LoadImageW(HINSTANCE hi,LPCWSTR lpbmp,int cx,int cGrow,COLORREF crMask,UINT uType,UINT uFlags);
#define ILCF_MOVE 0x0
#define ILCF_SWAP 0x1
- WINCOMMCTRLAPI WINBOOL WINAPI ImageList_Copy(HIMAGELIST himlDst,int iDst,HIMAGELIST himlSrc,int iSrc,UINT uFlags);
- WINCOMMCTRLAPI WINBOOL WINAPI ImageList_BeginDrag(HIMAGELIST himlTrack,int iTrack,int dxHotspot,int dyHotspot);
+
+ WINCOMMCTRLAPI
+ WINBOOL
+ WINAPI
+ ImageList_Copy(
+ _In_ HIMAGELIST himlDst,
+ _In_ int iDst,
+ _In_ HIMAGELIST himlSrc,
+ _In_ int iSrc,
+ _In_ UINT uFlags);
+
+ WINCOMMCTRLAPI
+ WINBOOL
+ WINAPI
+ ImageList_BeginDrag(
+ _In_ HIMAGELIST himlTrack,
+ _In_ int iTrack,
+ _In_ int dxHotspot,
+ _In_ int dyHotspot);
+
WINCOMMCTRLAPI void WINAPI ImageList_EndDrag(void);
WINCOMMCTRLAPI WINBOOL WINAPI ImageList_DragEnter(HWND hwndLock,int x,int y);
WINCOMMCTRLAPI WINBOOL WINAPI ImageList_DragLeave(HWND hwndLock);
WINCOMMCTRLAPI WINBOOL WINAPI ImageList_DragMove(int x,int y);
- WINCOMMCTRLAPI WINBOOL WINAPI ImageList_SetDragCursorImage(HIMAGELIST himlDrag,int iDrag,int dxHotspot,int dyHotspot);
+
+ WINCOMMCTRLAPI
+ WINBOOL
+ WINAPI
+ ImageList_SetDragCursorImage(
+ _In_ HIMAGELIST himlDrag,
+ _In_ int iDrag,
+ _In_ int dxHotspot,
+ _In_ int dyHotspot);
+
WINCOMMCTRLAPI WINBOOL WINAPI ImageList_DragShowNolock(WINBOOL fShow);
- WINCOMMCTRLAPI HIMAGELIST WINAPI ImageList_GetDragImage(POINT *ppt,POINT *pptHotspot);
+
+ _Success_(return != NULL)
+ WINCOMMCTRLAPI
+ HIMAGELIST
+ WINAPI
+ ImageList_GetDragImage(
+ _Out_opt_ POINT *ppt,
+ _Out_opt_ POINT *pptHotspot);
+
#define ImageList_RemoveAll(himl) ImageList_Remove(himl,-1)
#define ImageList_ExtractIcon(hi,himl,i) ImageList_GetIcon(himl,i,0)
#define ImageList_LoadBitmap(hi,lpbmp,cx,cGrow,crMask) ImageList_LoadImage(hi,lpbmp,cx,cGrow,crMask,IMAGE_BITMAP,0)
#ifdef __IStream_INTERFACE_DEFINED__
- WINCOMMCTRLAPI HIMAGELIST WINAPI ImageList_Read(LPSTREAM pstm);
- WINCOMMCTRLAPI WINBOOL WINAPI ImageList_Write(HIMAGELIST himl,LPSTREAM pstm);
+ WINCOMMCTRLAPI HIMAGELIST WINAPI ImageList_Read(_In_ LPSTREAM pstm);
+ WINCOMMCTRLAPI WINBOOL WINAPI ImageList_Write(_In_ HIMAGELIST himl, _In_ LPSTREAM pstm);
#define ILP_NORMAL 0
#define ILP_DOWNLEVEL 1
- WINCOMMCTRLAPI HRESULT WINAPI ImageList_ReadEx(DWORD dwFlags,LPSTREAM pstm,REFIID riid,PVOID *ppv);
- WINCOMMCTRLAPI HRESULT WINAPI ImageList_WriteEx(HIMAGELIST himl,DWORD dwFlags,LPSTREAM pstm);
+ WINCOMMCTRLAPI HRESULT WINAPI ImageList_ReadEx(_In_ DWORD dwFlags, _In_ LPSTREAM pstm, _In_ REFIID riid, _Outptr_ PVOID *ppv);
+ WINCOMMCTRLAPI HRESULT WINAPI ImageList_WriteEx(_In_ HIMAGELIST himl, _In_ DWORD dwFlags, _In_ LPSTREAM pstm);
#endif
#ifndef IMAGEINFO
} IMAGEINFO,*LPIMAGEINFO;
#endif
- WINCOMMCTRLAPI WINBOOL WINAPI ImageList_GetIconSize(HIMAGELIST himl,int *cx,int *cy);
- WINCOMMCTRLAPI WINBOOL WINAPI ImageList_SetIconSize(HIMAGELIST himl,int cx,int cy);
- WINCOMMCTRLAPI WINBOOL WINAPI ImageList_GetImageInfo(HIMAGELIST himl,int i,IMAGEINFO *pImageInfo);
- WINCOMMCTRLAPI HIMAGELIST WINAPI ImageList_Merge(HIMAGELIST himl1,int i1,HIMAGELIST himl2,int i2,int dx,int dy);
- WINCOMMCTRLAPI HIMAGELIST WINAPI ImageList_Duplicate(HIMAGELIST himl);
+ _Success_(return != 0)
+ WINCOMMCTRLAPI
+ WINBOOL
+ WINAPI
+ ImageList_GetIconSize(
+ _In_ HIMAGELIST himl,
+ _Out_opt_ int *cx,
+ _Out_opt_ int *cy);
+
+ _Success_(return != 0)
+ WINCOMMCTRLAPI
+ WINBOOL
+ WINAPI
+ ImageList_SetIconSize(
+ _In_ HIMAGELIST himl,
+ _In_ int cx,
+ _In_ int cy);
+
+ _Success_(return != 0)
+ WINCOMMCTRLAPI
+ WINBOOL
+ WINAPI
+ ImageList_GetImageInfo(
+ _In_ HIMAGELIST himl,
+ _In_ int i,
+ _Out_ IMAGEINFO *pImageInfo);
+
+ WINCOMMCTRLAPI
+ HIMAGELIST
+ WINAPI
+ ImageList_Merge(
+ _In_ HIMAGELIST himl1,
+ _In_ int i1,
+ _In_ HIMAGELIST himl2,
+ _In_ int i2,
+ _In_ int dx,
+ _In_ int dy);
+
+ WINCOMMCTRLAPI HIMAGELIST WINAPI ImageList_Duplicate(_In_ HIMAGELIST himl);
+
#endif
#ifndef NOHEADER
#ifndef NOMENUHELP
WINCOMMCTRLAPI void WINAPI MenuHelp(UINT uMsg,WPARAM wParam,LPARAM lParam,HMENU hMainMenu,HINSTANCE hInst,HWND hwndStatus,UINT *lpwIDs);
- WINCOMMCTRLAPI WINBOOL WINAPI ShowHideMenuCtl(HWND hWnd,UINT_PTR uFlags,LPINT lpInfo);
- WINCOMMCTRLAPI void WINAPI GetEffectiveClientRect(HWND hWnd,LPRECT lprc,const INT *lpInfo);
+
+ WINCOMMCTRLAPI
+ WINBOOL
+ WINAPI
+ ShowHideMenuCtl(
+ _In_ HWND hWnd,
+ _In_ UINT_PTR uFlags,
+ _In_z_ LPINT lpInfo);
+
+ WINCOMMCTRLAPI
+ void
+ WINAPI
+ GetEffectiveClientRect(
+ _In_ HWND hWnd,
+ _Out_ LPRECT lprc,
+ _In_z_ const INT *lpInfo);
#define MINSYSCOMMAND SC_SIZE
#endif
typedef int (CALLBACK *PFNDSAENUMCALLBACK)(void *p,void *pData);
WINCOMMCTRLAPI HDSA WINAPI DSA_Create(int cbItem,int cItemGrow);
- WINCOMMCTRLAPI WINBOOL WINAPI DSA_Destroy(HDSA hdsa);
- WINCOMMCTRLAPI void WINAPI DSA_DestroyCallback(HDSA hdsa,PFNDSAENUMCALLBACK pfnCB,void *pData);
- WINCOMMCTRLAPI PVOID WINAPI DSA_GetItemPtr(HDSA hdsa,int i);
- WINCOMMCTRLAPI int WINAPI DSA_InsertItem(HDSA hdsa,int i,void *pitem);
+ WINCOMMCTRLAPI WINBOOL WINAPI DSA_Destroy(_Inout_opt_ HDSA hdsa);
+
+ WINCOMMCTRLAPI
+ void
+ WINAPI
+ DSA_DestroyCallback(
+ _Inout_opt_ HDSA hdsa,
+ _In_ PFNDSAENUMCALLBACK pfnCB,
+ _In_opt_ void *pData);
+
+ WINCOMMCTRLAPI PVOID WINAPI DSA_GetItemPtr(_In_ HDSA hdsa, int i);
+
+ WINCOMMCTRLAPI
+ int
+ WINAPI
+ DSA_InsertItem(
+ _Inout_ HDSA hdsa,
+ _In_ int i,
+ _In_ void *pitem);
typedef struct _DPA *HDPA;
WINCOMMCTRLAPI HDPA WINAPI DPA_Create(int cItemGrow);
- WINCOMMCTRLAPI WINBOOL WINAPI DPA_Destroy(HDPA hdpa);
- WINCOMMCTRLAPI PVOID WINAPI DPA_DeletePtr(HDPA hdpa,int i);
- WINCOMMCTRLAPI WINBOOL WINAPI DPA_DeleteAllPtrs(HDPA hdpa);
- WINCOMMCTRLAPI void WINAPI DPA_EnumCallback(HDPA hdpa,PFNDPAENUMCALLBACK pfnCB,void *pData);
- WINCOMMCTRLAPI void WINAPI DPA_DestroyCallback(HDPA hdpa,PFNDPAENUMCALLBACK pfnCB,void *pData);
- WINCOMMCTRLAPI WINBOOL WINAPI DPA_SetPtr(HDPA hdpa,int i,void *p);
- WINCOMMCTRLAPI int WINAPI DPA_InsertPtr(HDPA hdpa,int i,void *p);
- WINCOMMCTRLAPI PVOID WINAPI DPA_GetPtr(HDPA hdpa,INT_PTR i);
+ WINCOMMCTRLAPI WINBOOL WINAPI DPA_Destroy(_Inout_opt_ HDPA hdpa);
+ WINCOMMCTRLAPI PVOID WINAPI DPA_DeletePtr(_Inout_ HDPA hdpa, _In_ int i);
+ WINCOMMCTRLAPI WINBOOL WINAPI DPA_DeleteAllPtrs(_Inout_ HDPA hdpa);
+
+ WINCOMMCTRLAPI
+ void
+ WINAPI
+ DPA_EnumCallback(
+ _In_opt_ HDPA hdpa,
+ _In_opt_ PFNDPAENUMCALLBACK pfnCB,
+ _In_opt_ void *pData);
+
+ WINCOMMCTRLAPI
+ void
+ WINAPI
+ DPA_DestroyCallback(
+ _Inout_opt_ HDPA hdpa,
+ _In_ PFNDPAENUMCALLBACK pfnCB,
+ _In_opt_ void *pData);
typedef int (CALLBACK *PFNDPACOMPARE)(void *p1,void *p2,LPARAM lParam);
- WINCOMMCTRLAPI WINBOOL WINAPI DPA_Sort(HDPA hdpa,PFNDPACOMPARE pfnCompare,LPARAM lParam);
+ WINCOMMCTRLAPI
+ WINBOOL
+ WINAPI
+ DPA_Sort(
+ _Inout_ HDPA hdpa,
+ _In_ PFNDPACOMPARE pfnCompare,
+ _In_ LPARAM lParam);
#define DPAS_SORTED 0x1
#define DPAS_INSERTBEFORE 0x2
#define DPAS_INSERTAFTER 0x4
- WINCOMMCTRLAPI int WINAPI DPA_Search(HDPA hdpa,void *pFind,int iStart,PFNDPACOMPARE pfnCompare,LPARAM lParam,UINT options);
- WINCOMMCTRLAPI WINBOOL WINAPI Str_SetPtrW(LPWSTR *ppsz,LPCWSTR psz);
+ WINCOMMCTRLAPI
+ int
+ WINAPI
+ DPA_Search(
+ _In_ HDPA hdpa,
+ _In_opt_ void *pFind,
+ _In_ int iStart,
+ _In_ PFNDPACOMPARE pfnCompare,
+ _In_ LPARAM lParam,
+ _In_ UINT options);
+
+ WINCOMMCTRLAPI
+ WINBOOL
+ WINAPI Str_SetPtrW(
+ _Inout_ LPWSTR *ppsz,
+ _In_opt_ LPCWSTR psz);
typedef struct _DPASTREAMINFO {
int iPos;
} DPASTREAMINFO;
struct IStream;
-typedef HRESULT (CALLBACK *PFNDPASTREAM)(DPASTREAMINFO*, struct IStream*, void*);
-typedef void* (CALLBACK *PFNDPAMERGE)(UINT, void*, void*, LPARAM);
-typedef const void* (CALLBACK *PFNDPAMERGECONST)(UINT, const void*, const void*, LPARAM);
-
- WINCOMMCTRLAPI HRESULT WINAPI DPA_LoadStream(HDPA * phdpa, PFNDPASTREAM pfn, struct IStream * pstream, void *pvInstData);
- WINCOMMCTRLAPI HRESULT WINAPI DPA_SaveStream(HDPA hdpa, PFNDPASTREAM pfn, struct IStream * pstream, void *pvInstData);
- WINCOMMCTRLAPI WINBOOL WINAPI DPA_Grow(HDPA pdpa, int cp);
- WINCOMMCTRLAPI int WINAPI DPA_InsertPtr(HDPA hdpa, int i, void *p);
- WINCOMMCTRLAPI PVOID WINAPI DPA_GetPtr(HDPA hdpa, INT_PTR i);
- WINCOMMCTRLAPI WINBOOL WINAPI DPA_SetPtr(HDPA hdpa, int i, void *p);
- WINCOMMCTRLAPI int WINAPI DPA_GetPtrIndex(HDPA hdpa, const void *p);
+
+typedef HRESULT
+(CALLBACK *PFNDPASTREAM)(
+ _In_ DPASTREAMINFO*,
+ _In_ struct IStream*,
+ _In_opt_ void*);
+
+typedef void*
+(CALLBACK *PFNDPAMERGE)(
+ _In_ UINT,
+ _In_ void*,
+ _In_ void*,
+ _In_ LPARAM);
+
+typedef const void*
+(CALLBACK *PFNDPAMERGECONST)(
+ _In_ UINT,
+ _In_ const void*,
+ _In_ const void*,
+ _In_ LPARAM);
+
+ WINCOMMCTRLAPI
+ HRESULT
+ WINAPI
+ DPA_LoadStream(
+ _Outptr_ HDPA * phdpa,
+ _In_ PFNDPASTREAM pfn,
+ _In_ struct IStream * pstream,
+ _In_opt_ void *pvInstData);
+
+ WINCOMMCTRLAPI
+ HRESULT
+ WINAPI
+ DPA_SaveStream(
+ _In_ HDPA hdpa,
+ _In_ PFNDPASTREAM pfn,
+ _In_ struct IStream * pstream,
+ _In_opt_ void *pvInstData);
+
+ WINCOMMCTRLAPI WINBOOL WINAPI DPA_Grow(_Inout_ HDPA pdpa, _In_ int cp);
+
+ WINCOMMCTRLAPI
+ int
+ WINAPI
+ DPA_InsertPtr(
+ _Inout_ HDPA hdpa,
+ _In_ int i,
+ _In_opt_ void *p);
+
+ WINCOMMCTRLAPI PVOID WINAPI DPA_GetPtr(_In_ HDPA hdpa, _In_ INT_PTR i);
+
+ WINCOMMCTRLAPI
+ WINBOOL
+ WINAPI
+ DPA_SetPtr(
+ _Inout_ HDPA hdpa,
+ _In_ int i,
+ _In_opt_ void *p);
+
+ WINCOMMCTRLAPI
+ int
+ WINAPI
+ DPA_GetPtrIndex(
+ _In_ HDPA hdpa,
+ _In_opt_ const void *p);
#define DPA_GetPtrCount(hdpa) (*(int *)(hdpa))
#define DPA_SetPtrCount(hdpa, cItems) (*(int *)(hdpa) = (cItems))
} TRACKMOUSEEVENT,*LPTRACKMOUSEEVENT;
#endif
- WINCOMMCTRLAPI WINBOOL WINAPI _TrackMouseEvent(LPTRACKMOUSEEVENT lpEventTrack);
+ WINCOMMCTRLAPI
+ WINBOOL
+ WINAPI
+ _TrackMouseEvent(
+ _Inout_ LPTRACKMOUSEEVENT lpEventTrack);
+
#endif
#ifndef NOFLATSBAPIS
typedef LRESULT (CALLBACK *SUBCLASSPROC)(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam,UINT_PTR uIdSubclass,DWORD_PTR dwRefData);
- WINBOOL WINAPI SetWindowSubclass(HWND hWnd,SUBCLASSPROC pfnSubclass,UINT_PTR uIdSubclass,DWORD_PTR dwRefData);
- WINBOOL WINAPI GetWindowSubclass(HWND hWnd,SUBCLASSPROC pfnSubclass,UINT_PTR uIdSubclass,DWORD_PTR *pdwRefData);
- WINBOOL WINAPI RemoveWindowSubclass(HWND hWnd,SUBCLASSPROC pfnSubclass,UINT_PTR uIdSubclass);
+ _Success_(return != 0)
+ WINBOOL
+ WINAPI
+ SetWindowSubclass(
+ _In_ HWND hWnd,
+ _In_ SUBCLASSPROC pfnSubclass,
+ _In_ UINT_PTR uIdSubclass,
+ _In_ DWORD_PTR dwRefData);
+
+ _Success_(return != 0)
+ WINBOOL
+ WINAPI
+ GetWindowSubclass(
+ _In_ HWND hWnd,
+ _In_ SUBCLASSPROC pfnSubclass,
+ _In_ UINT_PTR uIdSubclass,
+ _Out_opt_ DWORD_PTR *pdwRefData);
+
+ _Success_(return != 0)
+ WINBOOL
+ WINAPI
+ RemoveWindowSubclass(
+ _In_ HWND hWnd,
+ _In_ SUBCLASSPROC pfnSubclass,
+ _In_ UINT_PTR uIdSubclass);
+
LRESULT WINAPI DefSubclassProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam);
- int WINAPI DrawShadowText(HDC hdc,LPCWSTR pszText,UINT cch,RECT *prc,DWORD dwFlags,COLORREF crText,COLORREF crShadow,int ixOffset,int iyOffset);
+
+ int
+ WINAPI
+ DrawShadowText(
+ _In_ HDC hdc,
+ _In_reads_(cch) LPCWSTR pszText,
+ _In_ UINT cch,
+ _In_ RECT *prc,
+ _In_ DWORD dwFlags,
+ _In_ COLORREF crText,
+ _In_ COLORREF crShadow,
+ _In_ int ixOffset,
+ _In_ int iyOffset);
#ifndef NOTASKDIALOG
PCWSTR pszButtonText;
} TASKDIALOG_BUTTON;
-typedef HRESULT (CALLBACK *PFTASKDIALOGCALLBACK)(HWND, UINT, WPARAM, LPARAM, LONG_PTR);
+typedef HRESULT
+(CALLBACK *PFTASKDIALOGCALLBACK)(
+ _In_ HWND,
+ _In_ UINT,
+ _In_ WPARAM,
+ _In_ LPARAM,
+ _In_ LONG_PTR);
typedef struct _TASKDIALOGCONFIG
{
UINT cxWidth;
} TASKDIALOGCONFIG;
-HRESULT WINAPI TaskDialogIndirect(const TASKDIALOGCONFIG *, int *, int *, BOOL *);
+HRESULT
+WINAPI
+TaskDialogIndirect(
+ _In_ const TASKDIALOGCONFIG *,
+ _Out_opt_ int *,
+ _Out_opt_ int *,
+ _Out_opt_ BOOL *);
#include <poppack.h>
#ifdef __cplusplus
}
#endif
+
#endif
#endif
} DUMMYUNIONNAME;
} MINIDUMP_CALLBACK_OUTPUT, *PMINIDUMP_CALLBACK_OUTPUT;
-typedef BOOL (WINAPI* MINIDUMP_CALLBACK_ROUTINE)(PVOID, const PMINIDUMP_CALLBACK_INPUT, PMINIDUMP_CALLBACK_OUTPUT);
+typedef BOOL
+(WINAPI* MINIDUMP_CALLBACK_ROUTINE)(
+ _Inout_ PVOID,
+ _In_ const PMINIDUMP_CALLBACK_INPUT,
+ _Inout_ PMINIDUMP_CALLBACK_OUTPUT);
typedef struct _MINIDUMP_CALLBACK_INFORMATION
{
LastReservedStream = 0xffff
} MINIDUMP_STREAM_TYPE;
-BOOL WINAPI MiniDumpWriteDump(HANDLE, DWORD, HANDLE, MINIDUMP_TYPE,
- const PMINIDUMP_EXCEPTION_INFORMATION,
- const PMINIDUMP_USER_STREAM_INFORMATION,
- const PMINIDUMP_CALLBACK_INFORMATION);
-BOOL WINAPI MiniDumpReadDumpStream(PVOID, ULONG, PMINIDUMP_DIRECTORY*, PVOID*,
- ULONG*);
+BOOL
+WINAPI
+MiniDumpWriteDump(
+ _In_ HANDLE,
+ _In_ DWORD,
+ _In_ HANDLE,
+ _In_ MINIDUMP_TYPE,
+ _In_opt_ const PMINIDUMP_EXCEPTION_INFORMATION,
+ _In_opt_ const PMINIDUMP_USER_STREAM_INFORMATION,
+ _In_opt_ const PMINIDUMP_CALLBACK_INFORMATION);
+
+BOOL
+WINAPI
+MiniDumpReadDumpStream(
+ _In_ PVOID,
+ _In_ ULONG,
+ _Outptr_result_maybenull_ PMINIDUMP_DIRECTORY*,
+ _Outptr_result_maybenull_ PVOID*,
+ _Out_opt_ ULONG*);
#include <poppack.h>
#define SLMFLAG_VIRTUAL 0x1
#define SLMFLAG_NO_SYMBOLS 0x4
-typedef BOOL (CALLBACK *PENUMLOADED_MODULES_CALLBACK64)(PCSTR, DWORD64, ULONG, PVOID);
-BOOL WINAPI EnumerateLoadedModules64(HANDLE, PENUMLOADED_MODULES_CALLBACK64, PVOID);
-typedef BOOL (CALLBACK *PENUMLOADED_MODULES_CALLBACKW64)(PCWSTR, DWORD64, ULONG, PVOID);
-BOOL WINAPI EnumerateLoadedModulesW64(HANDLE, PENUMLOADED_MODULES_CALLBACKW64, PVOID);
-typedef BOOL (CALLBACK *PSYM_ENUMMODULES_CALLBACK64)(PCSTR, DWORD64, PVOID);
-BOOL WINAPI SymEnumerateModules64(HANDLE, PSYM_ENUMMODULES_CALLBACK64, PVOID);
-typedef BOOL (CALLBACK *PSYM_ENUMMODULES_CALLBACKW64)(PCWSTR, DWORD64, PVOID);
-BOOL WINAPI SymEnumerateModulesW64(HANDLE, PSYM_ENUMMODULES_CALLBACKW64, PVOID);
-BOOL WINAPI SymGetModuleInfo64(HANDLE, DWORD64, PIMAGEHLP_MODULE64);
-BOOL WINAPI SymGetModuleInfoW64(HANDLE, DWORD64, PIMAGEHLP_MODULEW64);
-DWORD64 WINAPI SymGetModuleBase64(HANDLE, DWORD64);
-DWORD64 WINAPI SymLoadModule64(HANDLE, HANDLE, PCSTR, PCSTR, DWORD64, DWORD);
-DWORD64 WINAPI SymLoadModuleEx(HANDLE, HANDLE, PCSTR, PCSTR, DWORD64, DWORD,
- PMODLOAD_DATA, DWORD);
-DWORD64 WINAPI SymLoadModuleExW(HANDLE, HANDLE, PCWSTR, PCWSTR, DWORD64, DWORD,
- PMODLOAD_DATA, DWORD);
-BOOL WINAPI SymUnloadModule64(HANDLE, DWORD64);
+typedef BOOL
+(CALLBACK *PENUMLOADED_MODULES_CALLBACK64)(
+ _In_ PCSTR,
+ _In_ DWORD64,
+ _In_ ULONG,
+ _In_opt_ PVOID);
+
+BOOL
+WINAPI
+EnumerateLoadedModules64(
+ _In_ HANDLE,
+ _In_ PENUMLOADED_MODULES_CALLBACK64,
+ _In_opt_ PVOID);
+
+typedef BOOL
+(CALLBACK *PENUMLOADED_MODULES_CALLBACKW64)(
+ _In_ PCWSTR,
+ _In_ DWORD64,
+ _In_ ULONG,
+ _In_opt_ PVOID);
+
+BOOL
+WINAPI
+EnumerateLoadedModulesW64(
+ _In_ HANDLE,
+ _In_ PENUMLOADED_MODULES_CALLBACKW64,
+ _In_opt_ PVOID);
+
+typedef BOOL
+(CALLBACK *PSYM_ENUMMODULES_CALLBACK64)(
+ _In_ PCSTR,
+ _In_ DWORD64,
+ _In_opt_ PVOID);
+
+BOOL
+WINAPI
+SymEnumerateModules64(
+ _In_ HANDLE,
+ _In_ PSYM_ENUMMODULES_CALLBACK64,
+ _In_opt_ PVOID);
+
+typedef BOOL
+(CALLBACK *PSYM_ENUMMODULES_CALLBACKW64)(
+ _In_ PCWSTR,
+ _In_ DWORD64,
+ _In_opt_ PVOID);
+
+BOOL
+WINAPI
+SymEnumerateModulesW64(
+ _In_ HANDLE,
+ _In_ PSYM_ENUMMODULES_CALLBACKW64,
+ _In_opt_ PVOID);
+
+BOOL
+WINAPI
+SymGetModuleInfo64(
+ _In_ HANDLE,
+ _In_ DWORD64,
+ _Out_ PIMAGEHLP_MODULE64);
+
+BOOL
+WINAPI
+SymGetModuleInfoW64(
+ _In_ HANDLE,
+ _In_ DWORD64,
+ _Out_ PIMAGEHLP_MODULEW64);
+
+DWORD64 WINAPI SymGetModuleBase64(_In_ HANDLE, _In_ DWORD64);
+
+DWORD64
+WINAPI
+SymLoadModule64(
+ _In_ HANDLE,
+ _In_opt_ HANDLE,
+ _In_opt_ PCSTR,
+ _In_opt_ PCSTR,
+ _In_ DWORD64,
+ _In_ DWORD);
+
+DWORD64
+WINAPI
+SymLoadModuleEx(
+ _In_ HANDLE,
+ _In_opt_ HANDLE,
+ _In_opt_ PCSTR,
+ _In_opt_ PCSTR,
+ _In_ DWORD64,
+ _In_ DWORD,
+ _In_opt_ PMODLOAD_DATA,
+ _In_opt_ DWORD);
+
+DWORD64
+WINAPI
+SymLoadModuleExW(
+ _In_ HANDLE,
+ _In_opt_ HANDLE,
+ _In_opt_ PCWSTR,
+ _In_opt_ PCWSTR,
+ _In_ DWORD64,
+ _In_ DWORD,
+ _In_opt_ PMODLOAD_DATA,
+ _In_opt_ DWORD);
+
+BOOL WINAPI SymUnloadModule64(_In_ HANDLE, _In_ DWORD64);
/*************************
* Symbol Handling *
#define SYMSEARCH_RECURSE 0x02
#define SYMSEARCH_GLOBALSONLY 0x04
-BOOL WINAPI SymGetTypeInfo(HANDLE, DWORD64, ULONG, IMAGEHLP_SYMBOL_TYPE_INFO, PVOID);
-BOOL WINAPI SymGetTypeInfoEx(HANDLE, DWORD64, PIMAGEHLP_GET_TYPE_INFO_PARAMS);
-typedef BOOL (CALLBACK *PSYM_ENUMERATESYMBOLS_CALLBACK)(PSYMBOL_INFO, ULONG, PVOID);
-typedef BOOL (CALLBACK *PSYM_ENUMERATESYMBOLS_CALLBACKW)(PSYMBOL_INFOW, ULONG, PVOID);
-BOOL WINAPI SymEnumTypes(HANDLE, ULONG64, PSYM_ENUMERATESYMBOLS_CALLBACK, PVOID);
-BOOL WINAPI SymEnumTypesW(HANDLE, ULONG64, PSYM_ENUMERATESYMBOLS_CALLBACKW, PVOID);
-BOOL WINAPI SymFromAddr(HANDLE, DWORD64, DWORD64*, SYMBOL_INFO*);
-BOOL WINAPI SymFromAddrW(HANDLE, DWORD64, DWORD64*, SYMBOL_INFOW*);
-BOOL WINAPI SymFromToken(HANDLE, DWORD64, DWORD, PSYMBOL_INFO);
-BOOL WINAPI SymFromTokenW(HANDLE, DWORD64, DWORD, PSYMBOL_INFOW);
-BOOL WINAPI SymFromName(HANDLE, PCSTR, PSYMBOL_INFO);
-BOOL WINAPI SymFromNameW(HANDLE, PCWSTR, PSYMBOL_INFOW);
-BOOL WINAPI SymGetSymFromAddr64(HANDLE, DWORD64, PDWORD64, PIMAGEHLP_SYMBOL64);
-BOOL WINAPI SymGetSymFromName64(HANDLE, PCSTR, PIMAGEHLP_SYMBOL64);
-BOOL WINAPI SymGetTypeFromName(HANDLE, ULONG64, PCSTR, PSYMBOL_INFO);
-BOOL WINAPI SymGetTypeFromNameW(HANDLE, ULONG64, PCWSTR, PSYMBOL_INFOW);
-BOOL WINAPI SymGetSymNext64(HANDLE, PIMAGEHLP_SYMBOL64);
-BOOL WINAPI SymGetSymNextW64(HANDLE, PIMAGEHLP_SYMBOLW64);
-BOOL WINAPI SymGetSymPrev64(HANDLE, PIMAGEHLP_SYMBOL64);
-BOOL WINAPI SymGetSymPrevW64(HANDLE, PIMAGEHLP_SYMBOLW64);
-BOOL WINAPI SymEnumSym(HANDLE,ULONG64,PSYM_ENUMERATESYMBOLS_CALLBACK,PVOID);
-BOOL WINAPI SymEnumSymbols(HANDLE, ULONG64, PCSTR, PSYM_ENUMERATESYMBOLS_CALLBACK,
- PVOID);
-BOOL WINAPI SymEnumSymbolsW(HANDLE, ULONG64, PCWSTR, PSYM_ENUMERATESYMBOLS_CALLBACKW,
- PVOID);
-typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK64)(PCSTR, DWORD64, ULONG, PVOID);
-typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK64W)(PCWSTR, DWORD64, ULONG, PVOID);
-BOOL WINAPI SymEnumerateSymbols64(HANDLE, ULONG64, PSYM_ENUMSYMBOLS_CALLBACK64, PVOID);
-BOOL WINAPI SymEnumerateSymbolsW64(HANDLE, ULONG64, PSYM_ENUMSYMBOLS_CALLBACK64W, PVOID);
-BOOL WINAPI SymEnumSymbolsForAddr(HANDLE, DWORD64, PSYM_ENUMERATESYMBOLS_CALLBACK, PVOID);
-BOOL WINAPI SymEnumSymbolsForAddrW(HANDLE, DWORD64, PSYM_ENUMERATESYMBOLS_CALLBACKW, PVOID);
-typedef BOOL (CALLBACK *PSYMBOL_REGISTERED_CALLBACK64)(HANDLE, ULONG, ULONG64, ULONG64);
-BOOL WINAPI SymRegisterCallback64(HANDLE, PSYMBOL_REGISTERED_CALLBACK64, ULONG64);
-BOOL WINAPI SymRegisterCallbackW64(HANDLE, PSYMBOL_REGISTERED_CALLBACK64, ULONG64);
-BOOL WINAPI SymUnDName64(PIMAGEHLP_SYMBOL64, PSTR, DWORD);
-BOOL WINAPI SymMatchString(PCSTR, PCSTR, BOOL);
-BOOL WINAPI SymMatchStringA(PCSTR, PCSTR, BOOL);
-BOOL WINAPI SymMatchStringW(PCWSTR, PCWSTR, BOOL);
-BOOL WINAPI SymSearch(HANDLE, ULONG64, DWORD, DWORD, PCSTR, DWORD64, PSYM_ENUMERATESYMBOLS_CALLBACK, PVOID, DWORD);
-BOOL WINAPI SymSearchW(HANDLE, ULONG64, DWORD, DWORD, PCWSTR, DWORD64, PSYM_ENUMERATESYMBOLS_CALLBACKW, PVOID, DWORD);
-DWORD WINAPI UnDecorateSymbolName(PCSTR, PSTR, DWORD, DWORD);
-DWORD WINAPI UnDecorateSymbolNameW(PCWSTR, PWSTR, DWORD, DWORD);
-BOOL WINAPI SymGetScope(HANDLE, ULONG64, DWORD, PSYMBOL_INFO);
-BOOL WINAPI SymGetScopeW(HANDLE, ULONG64, DWORD, PSYMBOL_INFOW);
-BOOL WINAPI SymFromIndex(HANDLE, ULONG64, DWORD, PSYMBOL_INFO);
-BOOL WINAPI SymFromIndexW(HANDLE, ULONG64, DWORD, PSYMBOL_INFOW);
-BOOL WINAPI SymAddSymbol(HANDLE, ULONG64, PCSTR, DWORD64, DWORD, DWORD);
-BOOL WINAPI SymAddSymbolW(HANDLE, ULONG64, PCWSTR, DWORD64, DWORD, DWORD);
-BOOL WINAPI SymDeleteSymbol(HANDLE, ULONG64, PCSTR, DWORD64, DWORD);
-BOOL WINAPI SymDeleteSymbolW(HANDLE, ULONG64, PCWSTR, DWORD64, DWORD);
+BOOL
+WINAPI
+SymGetTypeInfo(
+ _In_ HANDLE,
+ _In_ DWORD64,
+ _In_ ULONG,
+ _In_ IMAGEHLP_SYMBOL_TYPE_INFO,
+ _Out_ PVOID);
+
+BOOL
+WINAPI
+SymGetTypeInfoEx(
+ _In_ HANDLE,
+ _In_ DWORD64,
+ _Inout_ PIMAGEHLP_GET_TYPE_INFO_PARAMS);
+
+typedef BOOL
+(CALLBACK *PSYM_ENUMERATESYMBOLS_CALLBACK)(
+ _In_ PSYMBOL_INFO,
+ _In_ ULONG,
+ _In_opt_ PVOID);
+
+typedef BOOL
+(CALLBACK *PSYM_ENUMERATESYMBOLS_CALLBACKW)(
+ _In_ PSYMBOL_INFOW,
+ _In_ ULONG,
+ _In_opt_ PVOID);
+
+BOOL
+WINAPI
+SymEnumTypes(
+ _In_ HANDLE,
+ _In_ ULONG64,
+ _In_ PSYM_ENUMERATESYMBOLS_CALLBACK,
+ _In_opt_ PVOID);
+
+BOOL
+WINAPI
+SymEnumTypesW(
+ _In_ HANDLE,
+ _In_ ULONG64,
+ _In_ PSYM_ENUMERATESYMBOLS_CALLBACKW,
+ _In_opt_ PVOID);
+
+BOOL
+WINAPI
+SymFromAddr(
+ _In_ HANDLE,
+ _In_ DWORD64,
+ _Out_opt_ DWORD64*,
+ _Inout_ SYMBOL_INFO*);
+
+BOOL
+WINAPI
+SymFromAddrW(
+ _In_ HANDLE,
+ _In_ DWORD64,
+ _Out_opt_ DWORD64*,
+ _Inout_ SYMBOL_INFOW*);
+
+BOOL
+WINAPI
+SymFromToken(
+ _In_ HANDLE,
+ _In_ DWORD64,
+ _In_ DWORD,
+ _Inout_ PSYMBOL_INFO);
+
+BOOL
+WINAPI
+SymFromTokenW(
+ _In_ HANDLE,
+ _In_ DWORD64,
+ _In_ DWORD,
+ _Inout_ PSYMBOL_INFOW);
+
+BOOL WINAPI SymFromName(_In_ HANDLE, _In_ PCSTR, _Inout_ PSYMBOL_INFO);
+BOOL WINAPI SymFromNameW(_In_ HANDLE, _In_ PCWSTR, _Inout_ PSYMBOL_INFOW);
+
+BOOL
+WINAPI
+SymGetSymFromAddr64(
+ _In_ HANDLE,
+ _In_ DWORD64,
+ _Out_opt_ PDWORD64,
+ _Inout_ PIMAGEHLP_SYMBOL64);
+
+BOOL
+WINAPI
+SymGetSymFromName64(
+ _In_ HANDLE,
+ _In_ PCSTR,
+ _Inout_ PIMAGEHLP_SYMBOL64);
+
+BOOL
+WINAPI
+SymGetTypeFromName(
+ _In_ HANDLE,
+ _In_ ULONG64,
+ _In_ PCSTR,
+ _Inout_ PSYMBOL_INFO);
+
+BOOL
+WINAPI
+SymGetTypeFromNameW(
+ _In_ HANDLE,
+ _In_ ULONG64,
+ _In_ PCWSTR,
+ _Inout_ PSYMBOL_INFOW);
+
+BOOL WINAPI SymGetSymNext64(_In_ HANDLE, _Inout_ PIMAGEHLP_SYMBOL64);
+BOOL WINAPI SymGetSymNextW64(_In_ HANDLE, _Inout_ PIMAGEHLP_SYMBOLW64);
+BOOL WINAPI SymGetSymPrev64(_In_ HANDLE, _Inout_ PIMAGEHLP_SYMBOL64);
+BOOL WINAPI SymGetSymPrevW64(_In_ HANDLE, _Inout_ PIMAGEHLP_SYMBOLW64);
+
+BOOL
+WINAPI
+SymEnumSym(
+ _In_ HANDLE,
+ _In_ ULONG64,
+ _In_ PSYM_ENUMERATESYMBOLS_CALLBACK,
+ _In_opt_ PVOID);
+
+BOOL
+WINAPI
+SymEnumSymbols(
+ _In_ HANDLE,
+ _In_ ULONG64,
+ _In_opt_ PCSTR,
+ _In_ PSYM_ENUMERATESYMBOLS_CALLBACK,
+ _In_opt_ PVOID);
+
+BOOL
+WINAPI
+SymEnumSymbolsW(
+ _In_ HANDLE,
+ _In_ ULONG64,
+ _In_opt_ PCWSTR,
+ _In_ PSYM_ENUMERATESYMBOLS_CALLBACKW,
+ _In_opt_ PVOID);
+
+typedef BOOL
+(CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK64)(
+ _In_ PCSTR,
+ _In_ DWORD64,
+ _In_ ULONG,
+ _In_opt_ PVOID);
+
+typedef BOOL
+(CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK64W)(
+ _In_ PCWSTR,
+ _In_ DWORD64,
+ _In_ ULONG,
+ _In_opt_ PVOID);
+
+BOOL
+WINAPI
+SymEnumerateSymbols64(
+ _In_ HANDLE,
+ _In_ ULONG64,
+ _In_ PSYM_ENUMSYMBOLS_CALLBACK64,
+ _In_opt_ PVOID);
+
+BOOL
+WINAPI
+SymEnumerateSymbolsW64(
+ _In_ HANDLE,
+ _In_ ULONG64,
+ _In_ PSYM_ENUMSYMBOLS_CALLBACK64W,
+ _In_opt_ PVOID);
+
+BOOL
+WINAPI
+SymEnumSymbolsForAddr(
+ _In_ HANDLE,
+ _In_ DWORD64,
+ _In_ PSYM_ENUMERATESYMBOLS_CALLBACK,
+ _In_opt_ PVOID);
+
+BOOL
+WINAPI
+SymEnumSymbolsForAddrW(
+ _In_ HANDLE,
+ _In_ DWORD64,
+ _In_ PSYM_ENUMERATESYMBOLS_CALLBACKW,
+ _In_opt_ PVOID);
+
+typedef BOOL
+(CALLBACK *PSYMBOL_REGISTERED_CALLBACK64)(
+ _In_ HANDLE,
+ _In_ ULONG,
+ _In_opt_ ULONG64,
+ _In_opt_ ULONG64);
+
+BOOL
+WINAPI
+SymRegisterCallback64(
+ _In_ HANDLE,
+ _In_ PSYMBOL_REGISTERED_CALLBACK64,
+ _In_ ULONG64);
+
+BOOL
+WINAPI
+SymRegisterCallbackW64(
+ _In_ HANDLE,
+ _In_ PSYMBOL_REGISTERED_CALLBACK64,
+ _In_ ULONG64);
+
+BOOL
+WINAPI
+SymUnDName64(
+ _In_ PIMAGEHLP_SYMBOL64,
+ _Out_writes_(UnDecNameLength) PSTR,
+ _In_ DWORD UnDecNameLength);
+
+BOOL WINAPI SymMatchString(_In_ PCSTR, _In_ PCSTR, _In_ BOOL);
+BOOL WINAPI SymMatchStringA(_In_ PCSTR, _In_ PCSTR, _In_ BOOL);
+BOOL WINAPI SymMatchStringW(_In_ PCWSTR, _In_ PCWSTR, _In_ BOOL);
+
+BOOL
+WINAPI
+SymSearch(
+ _In_ HANDLE,
+ _In_ ULONG64,
+ _In_opt_ DWORD,
+ _In_opt_ DWORD,
+ _In_opt_ PCSTR,
+ _In_opt_ DWORD64,
+ _In_ PSYM_ENUMERATESYMBOLS_CALLBACK,
+ _In_opt_ PVOID,
+ _In_ DWORD);
+
+BOOL
+WINAPI
+SymSearchW(
+ _In_ HANDLE,
+ _In_ ULONG64,
+ _In_opt_ DWORD,
+ _In_opt_ DWORD,
+ _In_opt_ PCWSTR,
+ _In_opt_ DWORD64,
+ _In_ PSYM_ENUMERATESYMBOLS_CALLBACKW,
+ _In_opt_ PVOID,
+ _In_ DWORD);
+
+DWORD
+WINAPI
+UnDecorateSymbolName(
+ _In_ PCSTR,
+ _Out_writes_(maxStringLength) PSTR,
+ _In_ DWORD maxStringLength,
+ _In_ DWORD);
+
+DWORD
+WINAPI
+UnDecorateSymbolNameW(
+ _In_ PCWSTR,
+ _Out_writes_(maxStringLength) PWSTR,
+ _In_ DWORD maxStringLength,
+ _In_ DWORD);
+
+BOOL
+WINAPI
+SymGetScope(
+ _In_ HANDLE,
+ _In_ ULONG64,
+ _In_ DWORD,
+ _Inout_ PSYMBOL_INFO);
+
+BOOL
+WINAPI
+SymGetScopeW(
+ _In_ HANDLE,
+ _In_ ULONG64,
+ _In_ DWORD,
+ _Inout_ PSYMBOL_INFOW);
+
+BOOL
+WINAPI
+SymFromIndex(
+ _In_ HANDLE,
+ _In_ ULONG64,
+ _In_ DWORD,
+ _Inout_ PSYMBOL_INFO);
+
+BOOL
+WINAPI
+SymFromIndexW(
+ _In_ HANDLE,
+ _In_ ULONG64,
+ _In_ DWORD,
+ _Inout_ PSYMBOL_INFOW);
+
+BOOL
+WINAPI
+SymAddSymbol(
+ _In_ HANDLE,
+ _In_ ULONG64,
+ _In_ PCSTR,
+ _In_ DWORD64,
+ _In_ DWORD,
+ _In_ DWORD);
+
+BOOL
+WINAPI
+SymAddSymbolW(
+ _In_ HANDLE,
+ _In_ ULONG64,
+ _In_ PCWSTR,
+ _In_ DWORD64,
+ _In_ DWORD,
+ _In_ DWORD);
+
+BOOL
+WINAPI
+SymDeleteSymbol(
+ _In_ HANDLE,
+ _In_ ULONG64,
+ _In_opt_ PCSTR,
+ _In_ DWORD64,
+ _In_ DWORD);
+
+BOOL
+WINAPI
+SymDeleteSymbolW(
+ _In_ HANDLE,
+ _In_ ULONG64,
+ _In_opt_ PCWSTR,
+ _In_ DWORD64,
+ _In_ DWORD);
/*************************
* Source Files *
*************************/
-typedef BOOL (CALLBACK *PSYM_ENUMSOURCEFILES_CALLBACK)(PSOURCEFILE, PVOID);
-typedef BOOL (CALLBACK *PSYM_ENUMSOURCEFILES_CALLBACKW)(PSOURCEFILEW, PVOID);
-
-BOOL WINAPI SymEnumSourceFiles(HANDLE, ULONG64, PCSTR, PSYM_ENUMSOURCEFILES_CALLBACK,
- PVOID);
-BOOL WINAPI SymEnumSourceFilesW(HANDLE, ULONG64, PCWSTR, PSYM_ENUMSOURCEFILES_CALLBACKW, PVOID);
-BOOL WINAPI SymGetLineFromAddr64(HANDLE, DWORD64, PDWORD, PIMAGEHLP_LINE64);
-BOOL WINAPI SymGetLineFromAddrW64(HANDLE, DWORD64, PDWORD, PIMAGEHLP_LINEW64);
-BOOL WINAPI SymGetLinePrev64(HANDLE, PIMAGEHLP_LINE64);
-BOOL WINAPI SymGetLinePrevW64(HANDLE, PIMAGEHLP_LINEW64);
-BOOL WINAPI SymGetLineNext64(HANDLE, PIMAGEHLP_LINE64);
-BOOL WINAPI SymGetLineNextW64(HANDLE, PIMAGEHLP_LINEW64);
-BOOL WINAPI SymGetLineFromName64(HANDLE, PCSTR, PCSTR, DWORD, PLONG, PIMAGEHLP_LINE64);
-BOOL WINAPI SymGetLineFromNameW64(HANDLE, PCWSTR, PCWSTR, DWORD, PLONG, PIMAGEHLP_LINEW64);
-ULONG WINAPI SymGetFileLineOffsets64(HANDLE, PCSTR, PCSTR, PDWORD64, ULONG);
-BOOL WINAPI SymGetSourceFile(HANDLE, ULONG64, PCSTR, PCSTR, PSTR, DWORD);
-BOOL WINAPI SymGetSourceFileW(HANDLE, ULONG64, PCWSTR, PCWSTR, PWSTR, DWORD);
-BOOL WINAPI SymGetSourceFileToken(HANDLE, ULONG64, PCSTR, PVOID*, DWORD*);
-BOOL WINAPI SymGetSourceFileTokenW(HANDLE, ULONG64, PCWSTR, PVOID*, DWORD*);
-BOOL WINAPI SymGetSourceFileFromToken(HANDLE, PVOID, PCSTR, PSTR, DWORD);
-BOOL WINAPI SymGetSourceFileFromTokenW(HANDLE, PVOID, PCWSTR, PWSTR, DWORD);
-BOOL WINAPI SymGetSourceVarFromToken(HANDLE, PVOID, PCSTR, PCSTR, PSTR, DWORD);
-BOOL WINAPI SymGetSourceVarFromTokenW(HANDLE, PVOID, PCWSTR, PCWSTR, PWSTR, DWORD);
+
+typedef BOOL
+(CALLBACK *PSYM_ENUMSOURCEFILES_CALLBACK)(
+ _In_ PSOURCEFILE,
+ _In_opt_ PVOID);
+
+typedef BOOL
+(CALLBACK *PSYM_ENUMSOURCEFILES_CALLBACKW)(
+ _In_ PSOURCEFILEW,
+ _In_opt_ PVOID);
+
+BOOL
+WINAPI
+SymEnumSourceFiles(
+ _In_ HANDLE,
+ _In_ ULONG64,
+ _In_opt_ PCSTR,
+ _In_ PSYM_ENUMSOURCEFILES_CALLBACK,
+ _In_opt_ PVOID);
+
+BOOL
+WINAPI
+SymEnumSourceFilesW(
+ _In_ HANDLE,
+ _In_ ULONG64,
+ _In_opt_ PCWSTR,
+ _In_ PSYM_ENUMSOURCEFILES_CALLBACKW,
+ _In_opt_ PVOID);
+
+BOOL
+WINAPI
+SymGetLineFromAddr64(
+ _In_ HANDLE,
+ _In_ DWORD64,
+ _Out_ PDWORD,
+ _Out_ PIMAGEHLP_LINE64);
+
+BOOL
+WINAPI
+SymGetLineFromAddrW64(
+ _In_ HANDLE,
+ _In_ DWORD64,
+ _Out_ PDWORD,
+ _Out_ PIMAGEHLP_LINEW64);
+
+BOOL WINAPI SymGetLinePrev64(_In_ HANDLE, _Inout_ PIMAGEHLP_LINE64);
+BOOL WINAPI SymGetLinePrevW64(_In_ HANDLE, _Inout_ PIMAGEHLP_LINEW64);
+BOOL WINAPI SymGetLineNext64(_In_ HANDLE, _Inout_ PIMAGEHLP_LINE64);
+BOOL WINAPI SymGetLineNextW64(_In_ HANDLE, _Inout_ PIMAGEHLP_LINEW64);
+
+BOOL
+WINAPI
+SymGetLineFromName64(
+ _In_ HANDLE,
+ _In_opt_ PCSTR,
+ _In_opt_ PCSTR,
+ _In_ DWORD,
+ _Out_ PLONG,
+ _Inout_ PIMAGEHLP_LINE64);
+
+BOOL
+WINAPI
+SymGetLineFromNameW64(
+ _In_ HANDLE,
+ _In_opt_ PCWSTR,
+ _In_opt_ PCWSTR,
+ _In_ DWORD,
+ _Out_ PLONG,
+ _Inout_ PIMAGEHLP_LINEW64);
+
+ULONG
+WINAPI
+SymGetFileLineOffsets64(
+ _In_ HANDLE,
+ _In_opt_ PCSTR,
+ _In_ PCSTR,
+ _Out_writes_(BufferLines) PDWORD64,
+ _In_ ULONG BufferLines);
+
+BOOL
+WINAPI
+SymGetSourceFile(
+ _In_ HANDLE,
+ _In_ ULONG64,
+ _In_opt_ PCSTR,
+ _In_ PCSTR,
+ _Out_writes_(Size) PSTR,
+ _In_ DWORD Size);
+
+BOOL
+WINAPI
+SymGetSourceFileW(
+ _In_ HANDLE,
+ _In_ ULONG64,
+ _In_opt_ PCWSTR,
+ _In_ PCWSTR,
+ _Out_writes_(Size) PWSTR,
+ _In_ DWORD Size);
+
+BOOL
+WINAPI
+SymGetSourceFileToken(
+ _In_ HANDLE,
+ _In_ ULONG64,
+ _In_ PCSTR,
+ _Outptr_ PVOID*,
+ _Out_ DWORD*);
+
+BOOL
+WINAPI
+SymGetSourceFileTokenW(
+ _In_ HANDLE,
+ _In_ ULONG64,
+ _In_ PCWSTR,
+ _Outptr_ PVOID*,
+ _Out_ DWORD*);
+
+BOOL
+WINAPI
+SymGetSourceFileFromToken(
+ _In_ HANDLE,
+ _In_ PVOID,
+ _In_opt_ PCSTR,
+ _Out_writes_(Size) PSTR,
+ _In_ DWORD Size);
+
+BOOL
+WINAPI
+SymGetSourceFileFromTokenW(
+ _In_ HANDLE,
+ _In_ PVOID,
+ _In_opt_ PCWSTR,
+ _Out_writes_(Size) PWSTR,
+ _In_ DWORD Size);
+
+BOOL
+WINAPI
+SymGetSourceVarFromToken(
+ _In_ HANDLE,
+ _In_ PVOID,
+ _In_opt_ PCSTR,
+ _In_ PCSTR,
+ _Out_writes_(Size) PSTR,
+ _In_ DWORD Size);
+
+BOOL
+WINAPI
+SymGetSourceVarFromTokenW(
+ _In_ HANDLE,
+ _In_ PVOID,
+ _In_opt_ PCWSTR,
+ _In_ PCWSTR,
+ _Out_writes_(Size) PWSTR,
+ _In_ DWORD Size);
typedef struct _SRCCODEINFO
{
DWORD64 Address;
} SRCCODEINFOW, *PSRCCODEINFOW;
-typedef BOOL (CALLBACK* PSYM_ENUMLINES_CALLBACK)(PSRCCODEINFO, PVOID);
-typedef BOOL (CALLBACK* PSYM_ENUMLINES_CALLBACKW)(PSRCCODEINFOW, PVOID);
-BOOL WINAPI SymEnumLines(HANDLE, ULONG64, PCSTR, PCSTR, PSYM_ENUMLINES_CALLBACK, PVOID);
-BOOL WINAPI SymEnumLinesW(HANDLE, ULONG64, PCWSTR, PCWSTR, PSYM_ENUMLINES_CALLBACKW, PVOID);
-BOOL WINAPI SymEnumSourceLines(HANDLE, ULONG64, PCSTR, PCSTR, DWORD, DWORD, PSYM_ENUMLINES_CALLBACK, PVOID);
-BOOL WINAPI SymEnumSourceLinesW(HANDLE, ULONG64, PCWSTR, PCWSTR, DWORD, DWORD, PSYM_ENUMLINES_CALLBACKW, PVOID);
+typedef BOOL
+(CALLBACK* PSYM_ENUMLINES_CALLBACK)(
+ _In_ PSRCCODEINFO,
+ _In_opt_ PVOID);
+
+typedef BOOL
+(CALLBACK* PSYM_ENUMLINES_CALLBACKW)(
+ _In_ PSRCCODEINFOW,
+ _In_opt_ PVOID);
+
+BOOL
+WINAPI
+SymEnumLines(
+ _In_ HANDLE,
+ _In_ ULONG64,
+ _In_opt_ PCSTR,
+ _In_opt_ PCSTR,
+ _In_ PSYM_ENUMLINES_CALLBACK,
+ _In_opt_ PVOID);
+
+BOOL
+WINAPI
+SymEnumLinesW(
+ _In_ HANDLE,
+ _In_ ULONG64,
+ _In_opt_ PCWSTR,
+ _In_opt_ PCWSTR,
+ _In_ PSYM_ENUMLINES_CALLBACKW,
+ _In_opt_ PVOID);
+
+BOOL
+WINAPI
+SymEnumSourceLines(
+ _In_ HANDLE,
+ _In_ ULONG64,
+ _In_opt_ PCSTR,
+ _In_opt_ PCSTR,
+ _In_opt_ DWORD,
+ _In_ DWORD,
+ _In_ PSYM_ENUMLINES_CALLBACK,
+ _In_opt_ PVOID);
+
+BOOL
+WINAPI
+SymEnumSourceLinesW(
+ _In_ HANDLE,
+ _In_ ULONG64,
+ _In_opt_ PCWSTR,
+ _In_opt_ PCWSTR,
+ _In_opt_ DWORD,
+ _In_ DWORD,
+ _In_ PSYM_ENUMLINES_CALLBACKW,
+ _In_opt_ PVOID);
/*************************
* File & image handling *
*************************/
-BOOL WINAPI SymInitialize(HANDLE, PCSTR, BOOL);
-BOOL WINAPI SymInitializeW(HANDLE, PCWSTR, BOOL);
-BOOL WINAPI SymCleanup(HANDLE);
-
-HANDLE WINAPI FindDebugInfoFile(PCSTR, PCSTR, PSTR);
-typedef BOOL (CALLBACK *PFIND_DEBUG_FILE_CALLBACK)(HANDLE, PCSTR, PVOID);
-typedef BOOL (CALLBACK *PFIND_DEBUG_FILE_CALLBACKW)(HANDLE, PCWSTR, PVOID);
-HANDLE WINAPI FindDebugInfoFileEx(PCSTR, PCSTR, PSTR, PFIND_DEBUG_FILE_CALLBACK, PVOID);
-HANDLE WINAPI FindDebugInfoFileExW(PCWSTR, PCWSTR, PWSTR, PFIND_DEBUG_FILE_CALLBACKW, PVOID);
-HANDLE WINAPI SymFindDebugInfoFile(HANDLE, PCSTR, PSTR, PFIND_DEBUG_FILE_CALLBACK, PVOID);
-HANDLE WINAPI SymFindDebugInfoFileW(HANDLE, PCWSTR, PWSTR, PFIND_DEBUG_FILE_CALLBACKW, PVOID);
-typedef BOOL (CALLBACK *PFINDFILEINPATHCALLBACK)(PCSTR, PVOID);
-typedef BOOL (CALLBACK *PFINDFILEINPATHCALLBACKW)(PCWSTR, PVOID);
+
+BOOL WINAPI SymInitialize(_In_ HANDLE, _In_opt_ PCSTR, _In_ BOOL);
+BOOL WINAPI SymInitializeW(_In_ HANDLE, _In_opt_ PCWSTR, _In_ BOOL);
+BOOL WINAPI SymCleanup(_In_ HANDLE);
+
+HANDLE
+WINAPI
+FindDebugInfoFile(
+ _In_ PCSTR,
+ _In_ PCSTR,
+ _Out_writes_(MAX_PATH + 1) PSTR);
+
+typedef BOOL
+(CALLBACK *PFIND_DEBUG_FILE_CALLBACK)(
+ _In_ HANDLE,
+ _In_ PCSTR,
+ _In_ PVOID);
+
+typedef BOOL
+(CALLBACK *PFIND_DEBUG_FILE_CALLBACKW)(
+ _In_ HANDLE,
+ _In_ PCWSTR,
+ _In_ PVOID);
+
+HANDLE
+WINAPI
+FindDebugInfoFileEx(
+ _In_ PCSTR,
+ _In_ PCSTR,
+ _Out_writes_(MAX_PATH + 1) PSTR,
+ _In_opt_ PFIND_DEBUG_FILE_CALLBACK,
+ _In_opt_ PVOID);
+
+HANDLE
+WINAPI
+FindDebugInfoFileExW(
+ _In_ PCWSTR,
+ _In_ PCWSTR,
+ _Out_writes_(MAX_PATH + 1) PWSTR,
+ _In_opt_ PFIND_DEBUG_FILE_CALLBACKW,
+ _In_opt_ PVOID);
+
+HANDLE
+WINAPI
+SymFindDebugInfoFile(
+ _In_ HANDLE,
+ _In_ PCSTR,
+ _Out_writes_(MAX_PATH + 1) PSTR,
+ _In_opt_ PFIND_DEBUG_FILE_CALLBACK,
+ _In_opt_ PVOID);
+
+HANDLE
+WINAPI
+SymFindDebugInfoFileW(
+ _In_ HANDLE,
+ _In_ PCWSTR,
+ _Out_writes_(MAX_PATH + 1) PWSTR,
+ _In_opt_ PFIND_DEBUG_FILE_CALLBACKW,
+ _In_opt_ PVOID);
+
+typedef BOOL
+(CALLBACK *PFINDFILEINPATHCALLBACK)(
+ _In_ PCSTR,
+ _In_ PVOID);
+
+typedef BOOL
+(CALLBACK *PFINDFILEINPATHCALLBACKW)(
+ _In_ PCWSTR,
+ _In_ PVOID);
+
BOOL WINAPI FindFileInPath(HANDLE, PCSTR, PCSTR, PVOID, DWORD, DWORD, DWORD,
PSTR, PFINDFILEINPATHCALLBACK, PVOID);
-BOOL WINAPI SymFindFileInPath(HANDLE, PCSTR, PCSTR, PVOID, DWORD, DWORD, DWORD,
- PSTR, PFINDFILEINPATHCALLBACK, PVOID);
-BOOL WINAPI SymFindFileInPathW(HANDLE, PCWSTR, PCWSTR, PVOID, DWORD, DWORD, DWORD,
- PWSTR, PFINDFILEINPATHCALLBACKW, PVOID);
-HANDLE WINAPI FindExecutableImage(PCSTR, PCSTR, PSTR);
-typedef BOOL (CALLBACK *PFIND_EXE_FILE_CALLBACK)(HANDLE, PCSTR, PVOID);
-typedef BOOL (CALLBACK *PFIND_EXE_FILE_CALLBACKW)(HANDLE, PCWSTR, PVOID);
-HANDLE WINAPI FindExecutableImageEx(PCSTR, PCSTR, PSTR, PFIND_EXE_FILE_CALLBACK, PVOID);
-HANDLE WINAPI FindExecutableImageExW(PCWSTR, PCWSTR, PWSTR, PFIND_EXE_FILE_CALLBACKW, PVOID);
-HANDLE WINAPI SymFindExecutableImage(HANDLE, PCSTR, PSTR, PFIND_EXE_FILE_CALLBACK, PVOID);
-HANDLE WINAPI SymFindExecutableImageW(HANDLE, PCWSTR, PWSTR, PFIND_EXE_FILE_CALLBACKW, PVOID);
-PIMAGE_NT_HEADERS WINAPI ImageNtHeader(PVOID);
-PVOID WINAPI ImageDirectoryEntryToDataEx(PVOID, BOOLEAN, USHORT, PULONG,
- PIMAGE_SECTION_HEADER *);
-PVOID WINAPI ImageDirectoryEntryToData(PVOID, BOOLEAN, USHORT, PULONG);
-PIMAGE_SECTION_HEADER WINAPI ImageRvaToSection(PIMAGE_NT_HEADERS, PVOID, ULONG);
-PVOID WINAPI ImageRvaToVa(PIMAGE_NT_HEADERS, PVOID, ULONG, PIMAGE_SECTION_HEADER*);
-BOOL WINAPI SymGetSearchPath(HANDLE, PSTR, DWORD);
-BOOL WINAPI SymGetSearchPathW(HANDLE, PWSTR, DWORD);
-BOOL WINAPI SymSetSearchPath(HANDLE, PCSTR);
-BOOL WINAPI SymSetSearchPathW(HANDLE, PCWSTR);
-DWORD WINAPI GetTimestampForLoadedLibrary(HMODULE);
-BOOL WINAPI MakeSureDirectoryPathExists(PCSTR);
-BOOL WINAPI SearchTreeForFile(PCSTR, PCSTR, PSTR);
-BOOL WINAPI SearchTreeForFileW(PCWSTR, PCWSTR, PWSTR);
-typedef BOOL (CALLBACK *PENUMDIRTREE_CALLBACK)(PCSTR, PVOID);
-typedef BOOL (CALLBACK *PENUMDIRTREE_CALLBACKW)(PCWSTR, PVOID);
-BOOL WINAPI EnumDirTree(HANDLE, PCSTR, PCSTR, PSTR, PENUMDIRTREE_CALLBACK, PVOID);
-BOOL WINAPI EnumDirTreeW(HANDLE, PCWSTR, PCWSTR, PWSTR, PENUMDIRTREE_CALLBACKW, PVOID);
-BOOL WINAPI SymMatchFileName(PCSTR, PCSTR, PSTR*, PSTR*);
-BOOL WINAPI SymMatchFileNameW(PCWSTR, PCWSTR, PWSTR*, PWSTR*);
-PCHAR WINAPI SymSetHomeDirectory(HANDLE, PCSTR);
-PWSTR WINAPI SymSetHomeDirectoryW(HANDLE, PCWSTR);
-PCHAR WINAPI SymGetHomeDirectory(DWORD, PSTR, size_t);
-PWSTR WINAPI SymGetHomeDirectoryW(DWORD, PWSTR, size_t);
+
+BOOL
+WINAPI
+SymFindFileInPath(
+ _In_ HANDLE,
+ _In_opt_ PCSTR,
+ _In_ PCSTR,
+ _In_opt_ PVOID,
+ _In_ DWORD,
+ _In_ DWORD,
+ _In_ DWORD,
+ _Out_writes_(MAX_PATH + 1) PSTR,
+ _In_opt_ PFINDFILEINPATHCALLBACK,
+ _In_opt_ PVOID);
+
+BOOL
+WINAPI
+SymFindFileInPathW(
+ _In_ HANDLE,
+ _In_opt_ PCWSTR,
+ _In_ PCWSTR,
+ _In_opt_ PVOID,
+ _In_ DWORD,
+ _In_ DWORD,
+ _In_ DWORD,
+ _Out_writes_(MAX_PATH + 1) PWSTR,
+ _In_opt_ PFINDFILEINPATHCALLBACKW,
+ _In_opt_ PVOID);
+
+HANDLE
+WINAPI
+FindExecutableImage(
+ _In_ PCSTR,
+ _In_ PCSTR,
+ _Out_writes_(MAX_PATH + 1) PSTR);
+
+typedef BOOL
+(CALLBACK *PFIND_EXE_FILE_CALLBACK)(
+ _In_ HANDLE,
+ _In_ PCSTR,
+ _In_opt_ PVOID);
+
+typedef BOOL
+(CALLBACK *PFIND_EXE_FILE_CALLBACKW)(
+ _In_ HANDLE,
+ _In_ PCWSTR,
+ _In_opt_ PVOID);
+
+HANDLE
+WINAPI
+FindExecutableImageEx(
+ _In_ PCSTR,
+ _In_ PCSTR,
+ _Out_writes_(MAX_PATH + 1) PSTR,
+ _In_opt_ PFIND_EXE_FILE_CALLBACK,
+ _In_opt_ PVOID);
+
+HANDLE
+WINAPI
+FindExecutableImageExW(
+ _In_ PCWSTR,
+ _In_ PCWSTR,
+ _Out_writes_(MAX_PATH + 1) PWSTR,
+ _In_opt_ PFIND_EXE_FILE_CALLBACKW,
+ _In_opt_ PVOID);
+
+HANDLE
+WINAPI
+SymFindExecutableImage(
+ _In_ HANDLE,
+ _In_ PCSTR,
+ _Out_writes_(MAX_PATH + 1) PSTR,
+ _In_ PFIND_EXE_FILE_CALLBACK,
+ _In_ PVOID);
+
+HANDLE
+WINAPI
+SymFindExecutableImageW(
+ _In_ HANDLE,
+ _In_ PCWSTR,
+ _Out_writes_(MAX_PATH + 1) PWSTR,
+ _In_ PFIND_EXE_FILE_CALLBACKW,
+ _In_ PVOID);
+
+PIMAGE_NT_HEADERS WINAPI ImageNtHeader(_In_ PVOID);
+
+PVOID
+WINAPI
+ImageDirectoryEntryToDataEx(
+ _In_ PVOID,
+ _In_ BOOLEAN,
+ _In_ USHORT,
+ _Out_ PULONG,
+ _Out_opt_ PIMAGE_SECTION_HEADER *);
+
+PVOID
+WINAPI
+ImageDirectoryEntryToData(
+ _In_ PVOID,
+ _In_ BOOLEAN,
+ _In_ USHORT,
+ _Out_ PULONG);
+
+PIMAGE_SECTION_HEADER
+WINAPI
+ImageRvaToSection(
+ _In_ PIMAGE_NT_HEADERS,
+ _In_ PVOID,
+ _In_ ULONG);
+
+PVOID
+WINAPI
+ImageRvaToVa(
+ _In_ PIMAGE_NT_HEADERS,
+ _In_ PVOID,
+ _In_ ULONG,
+ _In_opt_ PIMAGE_SECTION_HEADER*);
+
+BOOL
+WINAPI
+SymGetSearchPath(
+ _In_ HANDLE,
+ _Out_writes_(SearchPathLength) PSTR,
+ _In_ DWORD SearchPathLength);
+
+BOOL
+WINAPI
+SymGetSearchPathW(
+ _In_ HANDLE,
+ _Out_writes_(SearchPathLength) PWSTR,
+ _In_ DWORD SearchPathLength);
+
+BOOL WINAPI SymSetSearchPath(_In_ HANDLE, _In_opt_ PCSTR);
+BOOL WINAPI SymSetSearchPathW(_In_ HANDLE, _In_opt_ PCWSTR);
+DWORD WINAPI GetTimestampForLoadedLibrary(_In_ HMODULE);
+BOOL WINAPI MakeSureDirectoryPathExists(_In_ PCSTR);
+
+BOOL
+WINAPI
+SearchTreeForFile(
+ _In_ PCSTR,
+ _In_ PCSTR,
+ _Out_writes_(MAX_PATH + 1) PSTR);
+
+BOOL
+WINAPI
+SearchTreeForFileW(
+ _In_ PCWSTR,
+ _In_ PCWSTR,
+ _Out_writes_(MAX_PATH + 1) PWSTR);
+
+typedef BOOL
+(CALLBACK *PENUMDIRTREE_CALLBACK)(
+ _In_ PCSTR,
+ _In_opt_ PVOID);
+
+typedef BOOL
+(CALLBACK *PENUMDIRTREE_CALLBACKW)(
+ _In_ PCWSTR,
+ _In_opt_ PVOID);
+
+BOOL
+WINAPI
+EnumDirTree(
+ _In_opt_ HANDLE,
+ _In_ PCSTR,
+ _In_ PCSTR,
+ _Out_writes_opt_(MAX_PATH + 1) PSTR,
+ _In_opt_ PENUMDIRTREE_CALLBACK,
+ _In_opt_ PVOID);
+
+BOOL
+WINAPI
+EnumDirTreeW(
+ _In_opt_ HANDLE,
+ _In_ PCWSTR,
+ _In_ PCWSTR,
+ _Out_writes_opt_(MAX_PATH + 1) PWSTR,
+ _In_opt_ PENUMDIRTREE_CALLBACKW,
+ _In_opt_ PVOID);
+
+BOOL
+WINAPI
+SymMatchFileName(
+ _In_ PCSTR,
+ _In_ PCSTR,
+ _Outptr_opt_ PSTR*,
+ _Outptr_opt_ PSTR*);
+
+BOOL
+WINAPI
+SymMatchFileNameW(
+ _In_ PCWSTR,
+ _In_ PCWSTR,
+ _Outptr_opt_ PWSTR*,
+ _Outptr_opt_ PWSTR*);
+
+PCHAR WINAPI SymSetHomeDirectory(_In_opt_ HANDLE, _In_opt_ PCSTR);
+PWSTR WINAPI SymSetHomeDirectoryW(_In_opt_ HANDLE, _In_opt_ PCWSTR);
+
+PCHAR
+WINAPI
+SymGetHomeDirectory(
+ _In_ DWORD,
+ _Out_writes_(size) PSTR,
+ _In_ size_t size);
+
+PWSTR
+WINAPI
+SymGetHomeDirectoryW(
+ _In_ DWORD,
+ _Out_writes_(size) PWSTR,
+ _In_ size_t size);
+
#define hdBase 0
#define hdSym 1
#define hdSrc 2
/*************************
* Context management *
*************************/
-BOOL WINAPI SymSetContext(HANDLE, PIMAGEHLP_STACK_FRAME, PIMAGEHLP_CONTEXT);
+
+BOOL
+WINAPI
+SymSetContext(
+ _In_ HANDLE,
+ _In_ PIMAGEHLP_STACK_FRAME,
+ _In_opt_ PIMAGEHLP_CONTEXT);
/*************************
KDHELP64 KdHelp;
} STACKFRAME64, *LPSTACKFRAME64;
-typedef BOOL (CALLBACK *PREAD_PROCESS_MEMORY_ROUTINE64)
- (HANDLE, DWORD64, PVOID, DWORD, PDWORD);
-typedef PVOID (CALLBACK *PFUNCTION_TABLE_ACCESS_ROUTINE64)(HANDLE, DWORD64);
-typedef DWORD64 (CALLBACK *PGET_MODULE_BASE_ROUTINE64)(HANDLE, DWORD64);
-typedef DWORD64 (CALLBACK *PTRANSLATE_ADDRESS_ROUTINE64)(HANDLE, HANDLE, LPADDRESS64);
-BOOL WINAPI StackWalk64(DWORD, HANDLE, HANDLE, LPSTACKFRAME64, PVOID,
- PREAD_PROCESS_MEMORY_ROUTINE64,
- PFUNCTION_TABLE_ACCESS_ROUTINE64,
- PGET_MODULE_BASE_ROUTINE64,
- PTRANSLATE_ADDRESS_ROUTINE64);
-
-PVOID WINAPI SymFunctionTableAccess64(HANDLE, DWORD64);
-
-typedef PVOID (CALLBACK *PSYMBOL_FUNCENTRY_CALLBACK64)(HANDLE, ULONG64, ULONG64);
-
-BOOL WINAPI SymRegisterFunctionEntryCallback64(HANDLE, PSYMBOL_FUNCENTRY_CALLBACK64, ULONG64);
+typedef BOOL
+(CALLBACK *PREAD_PROCESS_MEMORY_ROUTINE64)(
+ _In_ HANDLE,
+ _In_ DWORD64,
+ _Out_writes_bytes_(nSize) PVOID,
+ _In_ DWORD nSize,
+ _Out_ PDWORD);
+
+typedef PVOID
+(CALLBACK *PFUNCTION_TABLE_ACCESS_ROUTINE64)(
+ _In_ HANDLE,
+ _In_ DWORD64);
+
+typedef DWORD64
+(CALLBACK *PGET_MODULE_BASE_ROUTINE64)(
+ _In_ HANDLE,
+ _In_ DWORD64);
+
+typedef DWORD64
+(CALLBACK *PTRANSLATE_ADDRESS_ROUTINE64)(
+ _In_ HANDLE,
+ _In_ HANDLE,
+ _In_ LPADDRESS64);
+
+BOOL
+WINAPI
+StackWalk64(
+ _In_ DWORD,
+ _In_ HANDLE,
+ _In_ HANDLE,
+ _Inout_ LPSTACKFRAME64,
+ _Inout_ PVOID,
+ _In_opt_ PREAD_PROCESS_MEMORY_ROUTINE64,
+ _In_opt_ PFUNCTION_TABLE_ACCESS_ROUTINE64,
+ _In_opt_ PGET_MODULE_BASE_ROUTINE64,
+ _In_opt_ PTRANSLATE_ADDRESS_ROUTINE64);
+
+PVOID WINAPI SymFunctionTableAccess64(_In_ HANDLE, _In_ DWORD64);
+
+typedef PVOID
+(CALLBACK *PSYMBOL_FUNCENTRY_CALLBACK64)(
+ _In_ HANDLE,
+ _In_ ULONG64,
+ _In_ ULONG64);
+
+BOOL
+WINAPI
+SymRegisterFunctionEntryCallback64(
+ _In_ HANDLE,
+ _In_ PSYMBOL_FUNCENTRY_CALLBACK64,
+ _In_ ULONG64);
/*************************
* Version, global stuff *
} API_VERSION, *LPAPI_VERSION;
LPAPI_VERSION WINAPI ImagehlpApiVersion(void);
-LPAPI_VERSION WINAPI ImagehlpApiVersionEx(LPAPI_VERSION);
+LPAPI_VERSION WINAPI ImagehlpApiVersionEx(_In_ LPAPI_VERSION);
typedef struct _IMAGE_DEBUG_INFORMATION
{
} IMAGE_DEBUG_INFORMATION, *PIMAGE_DEBUG_INFORMATION;
-PIMAGE_DEBUG_INFORMATION WINAPI MapDebugInformation(HANDLE, PCSTR, PCSTR, ULONG);
+PIMAGE_DEBUG_INFORMATION
+WINAPI
+MapDebugInformation(
+ _In_opt_ HANDLE,
+ _In_ PCSTR,
+ _In_opt_ PCSTR,
+ _In_ ULONG);
-BOOL WINAPI UnmapDebugInformation(PIMAGE_DEBUG_INFORMATION);
+BOOL WINAPI UnmapDebugInformation(_Out_ PIMAGE_DEBUG_INFORMATION);
-DWORD WINAPI SymGetOptions(void);
-DWORD WINAPI SymSetOptions(DWORD);
+DWORD WINAPI SymGetOptions(void);
+DWORD WINAPI SymSetOptions(_In_ DWORD);
-BOOL WINAPI SymSetParentWindow(HWND);
+BOOL WINAPI SymSetParentWindow(_In_ HWND);
/*************************
* Version, global stuff *
#else
-typedef BOOL (CALLBACK *PENUMLOADED_MODULES_CALLBACK)(PCSTR, ULONG, ULONG, PVOID);
-typedef PVOID (CALLBACK *PFUNCTION_TABLE_ACCESS_ROUTINE)(HANDLE, DWORD);
-typedef DWORD (CALLBACK *PGET_MODULE_BASE_ROUTINE)(HANDLE, DWORD);
-typedef BOOL (CALLBACK *PREAD_PROCESS_MEMORY_ROUTINE)(HANDLE, DWORD, PVOID, DWORD, PDWORD);
-typedef BOOL (CALLBACK *PSYM_ENUMMODULES_CALLBACK)(PCSTR, ULONG, PVOID);
-typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK)(PCSTR, ULONG, ULONG, PVOID);
-typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACKW)(PCWSTR, ULONG, ULONG, PVOID);
-typedef BOOL (CALLBACK *PSYMBOL_REGISTERED_CALLBACK)(HANDLE, ULONG, PVOID, PVOID);
-typedef PVOID (CALLBACK *PSYMBOL_FUNCENTRY_CALLBACK)(HANDLE, DWORD, PVOID);
-typedef DWORD (CALLBACK *PTRANSLATE_ADDRESS_ROUTINE)(HANDLE, HANDLE, LPADDRESS);
-
-BOOL WINAPI EnumerateLoadedModules(HANDLE, PENUMLOADED_MODULES_CALLBACK, PVOID);
-BOOL WINAPI StackWalk(DWORD, HANDLE, HANDLE, LPSTACKFRAME, PVOID, PREAD_PROCESS_MEMORY_ROUTINE, PFUNCTION_TABLE_ACCESS_ROUTINE, PGET_MODULE_BASE_ROUTINE, PTRANSLATE_ADDRESS_ROUTINE);
-BOOL WINAPI SymEnumerateModules(HANDLE, PSYM_ENUMMODULES_CALLBACK, PVOID);
-BOOL WINAPI SymEnumerateSymbols(HANDLE, ULONG, PSYM_ENUMSYMBOLS_CALLBACK, PVOID);
-BOOL WINAPI SymEnumerateSymbolsW(HANDLE, ULONG, PSYM_ENUMSYMBOLS_CALLBACKW, PVOID);
-PVOID WINAPI SymFunctionTableAccess(HANDLE, DWORD);
-BOOL WINAPI SymGetLineFromAddr(HANDLE, DWORD, PDWORD, PIMAGEHLP_LINE);
-BOOL WINAPI SymGetLineFromAddrW(HANDLE, DWORD, PDWORD, PIMAGEHLP_LINEW);
-BOOL WINAPI SymGetLineFromName(HANDLE, PCSTR, PCSTR, DWORD, PLONG, PIMAGEHLP_LINE);
-BOOL WINAPI SymGetLineNext(HANDLE, PIMAGEHLP_LINE);
-BOOL WINAPI SymGetLineNextW(HANDLE, PIMAGEHLP_LINEW);
-BOOL WINAPI SymGetLinePrev(HANDLE, PIMAGEHLP_LINE);
-BOOL WINAPI SymGetLinePrevW(HANDLE, PIMAGEHLP_LINEW);
-DWORD WINAPI SymGetModuleBase(HANDLE, DWORD);
-BOOL WINAPI SymGetModuleInfo(HANDLE, DWORD, PIMAGEHLP_MODULE);
-BOOL WINAPI SymGetModuleInfoW(HANDLE, DWORD, PIMAGEHLP_MODULEW);
-BOOL WINAPI SymGetSymFromAddr(HANDLE, DWORD, PDWORD, PIMAGEHLP_SYMBOL);
-BOOL WINAPI SymGetSymFromName(HANDLE, PCSTR, PIMAGEHLP_SYMBOL);
-BOOL WINAPI SymGetSymNext(HANDLE, PIMAGEHLP_SYMBOL);
-BOOL WINAPI SymGetSymNextW(HANDLE, PIMAGEHLP_SYMBOLW);
-BOOL WINAPI SymGetSymPrev(HANDLE, PIMAGEHLP_SYMBOL);
-BOOL WINAPI SymGetSymPrevW(HANDLE, PIMAGEHLP_SYMBOLW);
-DWORD WINAPI SymLoadModule(HANDLE, HANDLE, PCSTR, PCSTR, DWORD, DWORD);
-BOOL WINAPI SymRegisterCallback(HANDLE, PSYMBOL_REGISTERED_CALLBACK, PVOID);
-BOOL WINAPI SymRegisterFunctionEntryCallback(HANDLE, PSYMBOL_FUNCENTRY_CALLBACK, PVOID);
-BOOL WINAPI SymRefreshModuleList(HANDLE);
-BOOL WINAPI SymUnDName(PIMAGEHLP_SYMBOL, PSTR, DWORD);
-BOOL WINAPI SymUnloadModule(HANDLE, DWORD);
+typedef BOOL
+(CALLBACK *PENUMLOADED_MODULES_CALLBACK)(
+ _In_ PCSTR,
+ _In_ ULONG,
+ _In_ ULONG,
+ _In_opt_ PVOID);
+
+typedef PVOID
+(CALLBACK *PFUNCTION_TABLE_ACCESS_ROUTINE)(
+ _In_ HANDLE,
+ _In_ DWORD);
+
+typedef DWORD
+(CALLBACK *PGET_MODULE_BASE_ROUTINE)(
+ _In_ HANDLE,
+ _In_ DWORD);
+
+typedef BOOL
+(CALLBACK *PREAD_PROCESS_MEMORY_ROUTINE)(
+ _In_ HANDLE,
+ _In_ DWORD,
+ _Out_writes_bytes_(nSize) PVOID,
+ _In_ DWORD nSize,
+ _Out_ PDWORD);
+
+typedef BOOL
+(CALLBACK *PSYM_ENUMMODULES_CALLBACK)(
+ _In_ PCSTR,
+ _In_ ULONG,
+ _In_opt_ PVOID);
+
+typedef BOOL
+(CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK)(
+ _In_ PCSTR,
+ _In_ ULONG,
+ _In_ ULONG,
+ _In_opt_ PVOID);
+
+typedef BOOL
+(CALLBACK *PSYM_ENUMSYMBOLS_CALLBACKW)(
+ _In_ PCWSTR,
+ _In_ ULONG,
+ _In_ ULONG,
+ _In_opt_ PVOID);
+
+typedef BOOL
+(CALLBACK *PSYMBOL_REGISTERED_CALLBACK)(
+ _In_ HANDLE,
+ _In_ ULONG,
+ _In_opt_ PVOID,
+ _In_opt_ PVOID);
+
+typedef PVOID
+(CALLBACK *PSYMBOL_FUNCENTRY_CALLBACK)(
+ _In_ HANDLE,
+ _In_ DWORD,
+ _In_opt_ PVOID);
+
+typedef DWORD
+(CALLBACK *PTRANSLATE_ADDRESS_ROUTINE)(
+ _In_ HANDLE,
+ _In_ HANDLE,
+ _Out_ LPADDRESS);
+
+BOOL
+WINAPI
+EnumerateLoadedModules(
+ _In_ HANDLE,
+ _In_ PENUMLOADED_MODULES_CALLBACK,
+ _In_opt_ PVOID);
+
+BOOL
+WINAPI
+StackWalk(
+ _In_ DWORD,
+ _In_ HANDLE,
+ _In_ HANDLE,
+ _Inout_ LPSTACKFRAME,
+ _Inout_ PVOID,
+ _In_opt_ PREAD_PROCESS_MEMORY_ROUTINE,
+ _In_opt_ PFUNCTION_TABLE_ACCESS_ROUTINE,
+ _In_opt_ PGET_MODULE_BASE_ROUTINE,
+ _In_opt_ PTRANSLATE_ADDRESS_ROUTINE);
+
+BOOL
+WINAPI
+SymEnumerateModules(
+ _In_ HANDLE,
+ _In_ PSYM_ENUMMODULES_CALLBACK,
+ _In_opt_ PVOID);
+
+BOOL
+WINAPI
+SymEnumerateSymbols(
+ _In_ HANDLE,
+ _In_ ULONG,
+ _In_ PSYM_ENUMSYMBOLS_CALLBACK,
+ _In_opt_ PVOID);
+
+BOOL
+WINAPI
+SymEnumerateSymbolsW(
+ _In_ HANDLE,
+ _In_ ULONG,
+ _In_ PSYM_ENUMSYMBOLS_CALLBACKW,
+ _In_opt_ PVOID);
+
+PVOID WINAPI SymFunctionTableAccess(_In_ HANDLE, _In_ DWORD);
+
+BOOL
+WINAPI
+SymGetLineFromAddr(
+ _In_ HANDLE,
+ _In_ DWORD,
+ _Out_ PDWORD,
+ _Out_ PIMAGEHLP_LINE);
+
+BOOL
+WINAPI
+SymGetLineFromAddrW(
+ _In_ HANDLE,
+ _In_ DWORD,
+ _Out_ PDWORD,
+ _Out_ PIMAGEHLP_LINEW);
+
+BOOL
+WINAPI
+SymGetLineFromName(
+ _In_ HANDLE,
+ _In_opt_ PCSTR,
+ _In_opt_ PCSTR,
+ _In_ DWORD,
+ _Out_ PLONG,
+ _Inout_ PIMAGEHLP_LINE);
+
+BOOL WINAPI SymGetLineNext(_In_ HANDLE, _Inout_ PIMAGEHLP_LINE);
+BOOL WINAPI SymGetLineNextW(_In_ HANDLE, _Inout_ PIMAGEHLP_LINEW);
+BOOL WINAPI SymGetLinePrev(_In_ HANDLE, _Inout_ PIMAGEHLP_LINE);
+BOOL WINAPI SymGetLinePrevW(_In_ HANDLE, _Inout_ PIMAGEHLP_LINEW);
+DWORD WINAPI SymGetModuleBase(_In_ HANDLE, _In_ DWORD);
+
+BOOL
+WINAPI
+SymGetModuleInfo(
+ _In_ HANDLE,
+ _In_ DWORD,
+ _Out_ PIMAGEHLP_MODULE);
+
+BOOL
+WINAPI
+SymGetModuleInfoW(
+ _In_ HANDLE,
+ _In_ DWORD,
+ _Out_ PIMAGEHLP_MODULEW);
+
+BOOL
+WINAPI
+SymGetSymFromAddr(
+ _In_ HANDLE,
+ _In_ DWORD,
+ _Out_opt_ PDWORD,
+ _Inout_ PIMAGEHLP_SYMBOL);
+
+BOOL
+WINAPI
+SymGetSymFromName(
+ _In_ HANDLE,
+ _In_ PCSTR,
+ _Inout_ PIMAGEHLP_SYMBOL);
+
+BOOL WINAPI SymGetSymNext(_In_ HANDLE, _Inout_ PIMAGEHLP_SYMBOL);
+BOOL WINAPI SymGetSymNextW(_In_ HANDLE, _Inout_ PIMAGEHLP_SYMBOLW);
+BOOL WINAPI SymGetSymPrev(_In_ HANDLE, _Inout_ PIMAGEHLP_SYMBOL);
+BOOL WINAPI SymGetSymPrevW(_In_ HANDLE, _Inout_ PIMAGEHLP_SYMBOLW);
+
+DWORD
+WINAPI
+SymLoadModule(
+ _In_ HANDLE,
+ _In_opt_ HANDLE,
+ _In_opt_ PCSTR,
+ _In_opt_ PCSTR,
+ _In_ DWORD,
+ _In_ DWORD);
+
+BOOL
+WINAPI
+SymRegisterCallback(
+ _In_ HANDLE,
+ _In_ PSYMBOL_REGISTERED_CALLBACK,
+ _In_opt_ PVOID);
+
+BOOL
+WINAPI
+SymRegisterFunctionEntryCallback(
+ _In_ HANDLE,
+ _In_ PSYMBOL_FUNCENTRY_CALLBACK,
+ _In_opt_ PVOID);
+
+BOOL WINAPI SymRefreshModuleList(_In_ HANDLE);
+
+BOOL
+WINAPI
+SymUnDName(
+ _In_ PIMAGEHLP_SYMBOL,
+ _Out_writes_(UnDecNameLength) PSTR,
+ _In_ DWORD UnDecNameLength);
+
+BOOL WINAPI SymUnloadModule(_In_ HANDLE, _In_ DWORD);
#endif
#define KSSTRING_AllocatorEx L"{091BB63B-603F-11D1-B067-00A0C9062802}"
#define KSSTRING_TopologyNode L"{0621061A-EE75-11D0-B915-00A0C9223196}"
-#define KSDATAFORMAT_BIT_ATTRIBUTES 1
-#define KSDATAFORMAT_ATTRIBUTES (1 << KSDATAFORMAT_BIT_ATTRIBUTES)
+#define KSDATAFORMAT_BIT_ATTRIBUTES 1
+#define KSDATAFORMAT_ATTRIBUTES (1 << KSDATAFORMAT_BIT_ATTRIBUTES)
#if defined(_NTDDK_)
typedef PVOID PKSWORKER;
#endif
#ifndef SIZEOF_ARRAY
- #define SIZEOF_ARRAY(a) (sizeof(a)/sizeof((a)[0]))
+#define SIZEOF_ARRAY(a) (sizeof(a)/sizeof((a)[0]))
#endif
/* ===============================================================
*/
#ifndef _NTRTL_
- #ifndef DEFINE_GUIDEX
- #ifdef _MSC_VER
- #define DEFINE_GUIDEX(name) EXTERN_C const CDECL GUID name
- #else
- #define DEFINE_GUIDEX(name) EXTERN_C const GUID name
- #endif
- #endif
-
- #ifndef STATICGUIDOF
- #define STATICGUIDOF(guid) STATIC_##guid
- #endif
+
+#ifndef DEFINE_GUIDEX
+#ifdef _MSC_VER
+#define DEFINE_GUIDEX(name) EXTERN_C const CDECL GUID name
+#else
+#define DEFINE_GUIDEX(name) EXTERN_C const GUID name
+#endif
+#endif /* !DEFINE_GUIDEX */
+
+#ifndef STATICGUIDOF
+#define STATICGUIDOF(guid) STATIC_##guid
#endif
+#endif /* !_NTRTL_ */
+
#if defined(__cplusplus)
- #if _MSC_VER >= 1100
- #define DEFINE_GUIDSTRUCT(guid, name) struct __declspec(uuid(guid)) name
- #define DEFINE_GUIDNAMED(name) __uuidof(struct name)
- #else
- #define DEFINE_GUIDSTRUCT(guid, name) \
- extern const DECLSPEC_SELECTANY GUID __uuid__##name={STATIC_##name};
- #define DEFINE_GUIDNAMED(name) __uuid__##name
- #endif
+
+#if _MSC_VER >= 1100
+#define DEFINE_GUIDSTRUCT(guid, name) struct __declspec(uuid(guid)) name
+#define DEFINE_GUIDNAMED(name) __uuidof(struct name)
#else
- #define DEFINE_GUIDSTRUCT(guid, name) DEFINE_GUIDEX(name)
- #define DEFINE_GUIDNAMED(name) name
+#define DEFINE_GUIDSTRUCT(guid, name) \
+ extern const DECLSPEC_SELECTANY GUID __uuid__##name={STATIC_##name};
+#define DEFINE_GUIDNAMED(name) __uuid__##name
#endif
+#else /* __cplusplus */
+
+#define DEFINE_GUIDSTRUCT(guid, name) DEFINE_GUIDEX(name)
+#define DEFINE_GUIDNAMED(name) name
+
+#endif /* __cplusplus */
#define STATIC_GUID_NULL \
0x00000000L, 0x0000, 0x0000, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
METHOD_NEITHER, \
FILE_ANY_ACCESS)
-
/* ===============================================================
Categories
*/
Common
*/
-typedef struct
-{
- GUID Set;
- ULONG Id;
- ULONG Flags;
+typedef struct {
+ GUID Set;
+ ULONG Id;
+ ULONG Flags;
} KSIDENTIFIER, *PKSIDENTIFIER;
typedef KSIDENTIFIER KSPROPERTY, *PKSPROPERTY;
typedef KSIDENTIFIER KSPIN_MEDIUM, *PKSPIN_MEDIUM;
typedef union {
- struct {
- ULONG FormatSize;
- ULONG Flags;
- ULONG SampleSize;
- ULONG Reserved;
- GUID MajorFormat;
- GUID SubFormat;
- GUID Specifier;
- };
- LONGLONG Alignment;
+ struct {
+ ULONG FormatSize;
+ ULONG Flags;
+ ULONG SampleSize;
+ ULONG Reserved;
+ GUID MajorFormat;
+ GUID SubFormat;
+ GUID Specifier;
+ };
+ LONGLONG Alignment;
} KSDATAFORMAT, *PKSDATAFORMAT, KSDATARANGE, *PKSDATARANGE;
-
-typedef struct
-{
- ULONG Size;
- ULONG Flags;
- GUID Attribute;
+typedef struct {
+ ULONG Size;
+ ULONG Flags;
+ GUID Attribute;
} KSATTRIBUTE, *PKSATTRIBUTE;
-
/* ===============================================================
Interface Sets - TODO
*/
#if 0
#define KSINTERFACESETID_Media
-
#define KSINTERFACE_STANDARD_STREAMING
#define KSINTERFACE_STANDARD_LOOPED_STREAMING
#define KSINTERFACE_STANDARD_CONTROL
#endif
#define STATIC_KSINTERFACESETID_Standard \
- 0x1A8766A0L, 0x62CE, 0x11CF, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
+ 0x1A8766A0L, 0x62CE, 0x11CF, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
DEFINE_GUIDSTRUCT("1A8766A0-62CE-11CF-A5D6-28DB04C10000", KSINTERFACESETID_Standard);
#define KSINTERFACESETID_Standard DEFINE_GUIDNAMED(KSINTERFACESETID_Standard)
-typedef enum
-{
- KSINTERFACE_STANDARD_STREAMING,
- KSINTERFACE_STANDARD_LOOPED_STREAMING,
- KSINTERFACE_STANDARD_CONTROL
+typedef enum {
+ KSINTERFACE_STANDARD_STREAMING,
+ KSINTERFACE_STANDARD_LOOPED_STREAMING,
+ KSINTERFACE_STANDARD_CONTROL
} KSINTERFACE_STANDARD;
#define STATIC_KSINTERFACESETID_FileIo \
- 0x8C6F932CL, 0xE771, 0x11D0, {0xB8, 0xFF, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
+ 0x8C6F932CL, 0xE771, 0x11D0, {0xB8, 0xFF, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
DEFINE_GUIDSTRUCT("8C6F932C-E771-11D0-B8FF-00A0C9223196", KSINTERFACESETID_FileIo);
#define KSINTERFACESETID_FileIo DEFINE_GUIDNAMED(KSINTERFACESETID_FileIo)
-
-
-
/* ===============================================================
Mediums
*/
-typedef enum
-{
- KSINTERFACE_FILEIO_STREAMING
+typedef enum {
+ KSINTERFACE_FILEIO_STREAMING
} KSINTERFACE_FILEIO;
#define KSMEDIUM_TYPE_ANYINSTANCE 0
#define STATIC_KSMEDIUMSETID_Standard \
- 0x4747B320L, 0x62CE, 0x11CF, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
+ 0x4747B320L, 0x62CE, 0x11CF, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
DEFINE_GUIDSTRUCT("4747B320-62CE-11CF-A5D6-28DB04C10000", KSMEDIUMSETID_Standard);
#define KSMEDIUMSETID_Standard DEFINE_GUIDNAMED(KSMEDIUMSETID_Standard)
-
/* ===============================================================
Clock Properties/Methods/Events
*/
#define STATIC_KSPROPSETID_Clock \
- 0xDF12A4C0L, 0xAC17, 0x11CF, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
+ 0xDF12A4C0L, 0xAC17, 0x11CF, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
DEFINE_GUIDSTRUCT("DF12A4C0-AC17-11CF-A5D6-28DB04C10000", KSPROPSETID_Clock);
#define KSPROPSETID_Clock DEFINE_GUIDNAMED(KSPROPSETID_Clock)
-typedef enum
-{
- KSPROPERTY_CLOCK_TIME,
- KSPROPERTY_CLOCK_PHYSICALTIME,
- KSPROPERTY_CLOCK_CORRELATEDTIME,
- KSPROPERTY_CLOCK_CORRELATEDPHYSICALTIME,
- KSPROPERTY_CLOCK_RESOLUTION,
- KSPROPERTY_CLOCK_STATE,
+typedef enum {
+ KSPROPERTY_CLOCK_TIME,
+ KSPROPERTY_CLOCK_PHYSICALTIME,
+ KSPROPERTY_CLOCK_CORRELATEDTIME,
+ KSPROPERTY_CLOCK_CORRELATEDPHYSICALTIME,
+ KSPROPERTY_CLOCK_RESOLUTION,
+ KSPROPERTY_CLOCK_STATE,
#if defined(_NTDDK_)
- KSPROPERTY_CLOCK_FUNCTIONTABLE
+ KSPROPERTY_CLOCK_FUNCTIONTABLE
#endif // defined(_NTDDK_)
} KSPROPERTY_CLOCK;
#define STATIC_KSEVENTSETID_Clock \
- 0x364D8E20L, 0x62C7, 0x11CF, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
+ 0x364D8E20L, 0x62C7, 0x11CF, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
DEFINE_GUIDSTRUCT("364D8E20-62C7-11CF-A5D6-28DB04C10000", KSEVENTSETID_Clock);
#define KSEVENTSETID_Clock DEFINE_GUIDNAMED(KSEVENTSETID_Clock)
-typedef enum
-{
- KSEVENT_CLOCK_INTERVAL_MARK,
- KSEVENT_CLOCK_POSITION_MARK
+typedef enum {
+ KSEVENT_CLOCK_INTERVAL_MARK,
+ KSEVENT_CLOCK_POSITION_MARK
} KSEVENT_CLOCK_POSITION;
-
/* ===============================================================
Connection Properties/Methods/Events
*/
#define STATIC_KSPROPSETID_Connection \
- 0x1D58C920L, 0xAC9B, 0x11CF, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
+ 0x1D58C920L, 0xAC9B, 0x11CF, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
DEFINE_GUIDSTRUCT("1D58C920-AC9B-11CF-A5D6-28DB04C10000", KSPROPSETID_Connection);
#define KSPROPSETID_Connection DEFINE_GUIDNAMED(KSPROPSETID_Connection)
-
-typedef enum
-{
- KSPROPERTY_CONNECTION_STATE,
- KSPROPERTY_CONNECTION_PRIORITY,
- KSPROPERTY_CONNECTION_DATAFORMAT,
- KSPROPERTY_CONNECTION_ALLOCATORFRAMING,
- KSPROPERTY_CONNECTION_PROPOSEDATAFORMAT,
- KSPROPERTY_CONNECTION_ACQUIREORDERING,
- KSPROPERTY_CONNECTION_ALLOCATORFRAMING_EX,
- KSPROPERTY_CONNECTION_STARTAT
+typedef enum {
+ KSPROPERTY_CONNECTION_STATE,
+ KSPROPERTY_CONNECTION_PRIORITY,
+ KSPROPERTY_CONNECTION_DATAFORMAT,
+ KSPROPERTY_CONNECTION_ALLOCATORFRAMING,
+ KSPROPERTY_CONNECTION_PROPOSEDATAFORMAT,
+ KSPROPERTY_CONNECTION_ACQUIREORDERING,
+ KSPROPERTY_CONNECTION_ALLOCATORFRAMING_EX,
+ KSPROPERTY_CONNECTION_STARTAT
} KSPROPERTY_CONNECTION;
#define DEFINE_KSPROPERTY_ITEM_CONNECTION_STATE(GetHandler, SetHandler)\
(Handler),\
NULL, 0, NULL, NULL, 0)
-
-typedef enum
-{
- KSEVENT_CONNECTION_POSITIONUPDATE,
- KSEVENT_CONNECTION_DATADISCONTINUITY,
- KSEVENT_CONNECTION_TIMEDISCONTINUITY,
- KSEVENT_CONNECTION_PRIORITY,
- KSEVENT_CONNECTION_ENDOFSTREAM
+typedef enum {
+ KSEVENT_CONNECTION_POSITIONUPDATE,
+ KSEVENT_CONNECTION_DATADISCONTINUITY,
+ KSEVENT_CONNECTION_TIMEDISCONTINUITY,
+ KSEVENT_CONNECTION_PRIORITY,
+ KSEVENT_CONNECTION_ENDOFSTREAM
} KSEVENT_CONNECTION;
-
/* ===============================================================
General
Properties/Methods/Events
*/
#define STATIC_KSPROPSETID_General\
- 0x1464EDA5L, 0x6A8F, 0x11D1, {0x9A, 0xA7, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
+ 0x1464EDA5L, 0x6A8F, 0x11D1, {0x9A, 0xA7, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
DEFINE_GUIDSTRUCT("1464EDA5-6A8F-11D1-9AA7-00A0C9223196", KSPROPSETID_General);
#define KSPROPSETID_General DEFINE_GUIDNAMED(KSPROPSETID_General)
-
-typedef enum
-{
- KSPROPERTY_GENERAL_COMPONENTID
+typedef enum {
+ KSPROPERTY_GENERAL_COMPONENTID
} KSPROPERTY_GENERAL;
-
/* ===============================================================
Graph Manager
Properties/Methods/Events
*/
#define KSPROPSETID_GM \
- 0xAF627536L, 0xE719, 0x11D2, {0x8A, 0x1D, 0x00, 0x60, 0x97, 0xD2, 0xDF, 0x5D}
+ 0xAF627536L, 0xE719, 0x11D2, {0x8A, 0x1D, 0x00, 0x60, 0x97, 0xD2, 0xDF, 0x5D}
-typedef enum
-{
- KSPROPERTY_GM_GRAPHMANAGER,
- KSPROPERTY_GM_TIMESTAMP_CLOCK,
- KSPROPERTY_GM_RATEMATCH,
- KSPROPERTY_GM_RENDERCLOCK
+typedef enum {
+ KSPROPERTY_GM_GRAPHMANAGER,
+ KSPROPERTY_GM_TIMESTAMP_CLOCK,
+ KSPROPERTY_GM_RATEMATCH,
+ KSPROPERTY_GM_RENDERCLOCK
} KSPROPERTY_GM;
-
/* ===============================================================
Media Seeking
Properties/Methods/Events
*/
#define STATIC_KSPROPSETID_MediaSeeking\
- 0xEE904F0CL, 0xD09B, 0x11D0, {0xAB, 0xE9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
+ 0xEE904F0CL, 0xD09B, 0x11D0, {0xAB, 0xE9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
DEFINE_GUIDSTRUCT("EE904F0C-D09B-11D0-ABE9-00A0C9223196", KSPROPSETID_MediaSeeking);
#define KSPROPSETID_MediaSeeking DEFINE_GUIDNAMED(KSPROPSETID_MediaSeeking)
typedef enum {
- KSPROPERTY_MEDIASEEKING_CAPABILITIES,
- KSPROPERTY_MEDIASEEKING_FORMATS,
- KSPROPERTY_MEDIASEEKING_TIMEFORMAT,
- KSPROPERTY_MEDIASEEKING_POSITION,
- KSPROPERTY_MEDIASEEKING_STOPPOSITION,
- KSPROPERTY_MEDIASEEKING_POSITIONS,
- KSPROPERTY_MEDIASEEKING_DURATION,
- KSPROPERTY_MEDIASEEKING_AVAILABLE,
- KSPROPERTY_MEDIASEEKING_PREROLL,
- KSPROPERTY_MEDIASEEKING_CONVERTTIMEFORMAT
+ KSPROPERTY_MEDIASEEKING_CAPABILITIES,
+ KSPROPERTY_MEDIASEEKING_FORMATS,
+ KSPROPERTY_MEDIASEEKING_TIMEFORMAT,
+ KSPROPERTY_MEDIASEEKING_POSITION,
+ KSPROPERTY_MEDIASEEKING_STOPPOSITION,
+ KSPROPERTY_MEDIASEEKING_POSITIONS,
+ KSPROPERTY_MEDIASEEKING_DURATION,
+ KSPROPERTY_MEDIASEEKING_AVAILABLE,
+ KSPROPERTY_MEDIASEEKING_PREROLL,
+ KSPROPERTY_MEDIASEEKING_CONVERTTIMEFORMAT
} KSPROPERTY_MEDIASEEKING;
typedef enum {
- KS_SEEKING_NoPositioning,
- KS_SEEKING_AbsolutePositioning,
- KS_SEEKING_RelativePositioning,
- KS_SEEKING_IncrementalPositioning,
- KS_SEEKING_PositioningBitsMask = 0x3,
- KS_SEEKING_SeekToKeyFrame,
- KS_SEEKING_ReturnTime = 0x8
+ KS_SEEKING_NoPositioning,
+ KS_SEEKING_AbsolutePositioning,
+ KS_SEEKING_RelativePositioning,
+ KS_SEEKING_IncrementalPositioning,
+ KS_SEEKING_PositioningBitsMask = 0x3,
+ KS_SEEKING_SeekToKeyFrame,
+ KS_SEEKING_ReturnTime = 0x8
} KS_SEEKING_FLAGS;
typedef enum {
- KS_SEEKING_CanSeekAbsolute = 0x1,
- KS_SEEKING_CanSeekForwards = 0x2,
- KS_SEEKING_CanSeekBackwards = 0x4,
- KS_SEEKING_CanGetCurrentPos = 0x8,
- KS_SEEKING_CanGetStopPos = 0x10,
- KS_SEEKING_CanGetDuration = 0x20,
- KS_SEEKING_CanPlayBackwards = 0x40
+ KS_SEEKING_CanSeekAbsolute = 0x1,
+ KS_SEEKING_CanSeekForwards = 0x2,
+ KS_SEEKING_CanSeekBackwards = 0x4,
+ KS_SEEKING_CanGetCurrentPos = 0x8,
+ KS_SEEKING_CanGetStopPos = 0x10,
+ KS_SEEKING_CanGetDuration = 0x20,
+ KS_SEEKING_CanPlayBackwards = 0x40
} KS_SEEKING_CAPABILITIES;
typedef struct {
- LONGLONG Current;
- LONGLONG Stop;
- KS_SEEKING_FLAGS CurrentFlags;
- KS_SEEKING_FLAGS StopFlags;
+ LONGLONG Current;
+ LONGLONG Stop;
+ KS_SEEKING_FLAGS CurrentFlags;
+ KS_SEEKING_FLAGS StopFlags;
} KSPROPERTY_POSITIONS, *PKSPROPERTY_POSITIONS;
typedef struct {
- LONGLONG Earliest;
- LONGLONG Latest;
+ LONGLONG Earliest;
+ LONGLONG Latest;
} KSPROPERTY_MEDIAAVAILABLE, *PKSPROPERTY_MEDIAAVAILABLE;
typedef struct {
- KSPROPERTY Property;
- GUID SourceFormat;
- GUID TargetFormat;
- LONGLONG Time;
+ KSPROPERTY Property;
+ GUID SourceFormat;
+ GUID TargetFormat;
+ LONGLONG Time;
} KSP_TIMEFORMAT, *PKSP_TIMEFORMAT;
#define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_CAPABILITIES(Handler)\
*/
#define STATIC_KSPROPSETID_Pin\
- 0x8C134960L, 0x51AD, 0x11CF, {0x87, 0x8A, 0x94, 0xF8, 0x01, 0xC1, 0x00, 0x00}
+ 0x8C134960L, 0x51AD, 0x11CF, {0x87, 0x8A, 0x94, 0xF8, 0x01, 0xC1, 0x00, 0x00}
DEFINE_GUIDSTRUCT("8C134960-51AD-11CF-878A-94F801C10000", KSPROPSETID_Pin);
#define KSPROPSETID_Pin DEFINE_GUIDNAMED(KSPROPSETID_Pin)
#define STATIC_KSNAME_Pin\
- 0x146F1A80L, 0x4791, 0x11D0, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
+ 0x146F1A80L, 0x4791, 0x11D0, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
DEFINE_GUIDSTRUCT("146F1A80-4791-11D0-A5D6-28DB04C10000", KSNAME_Pin);
#define KSNAME_Pin DEFINE_GUIDNAMED(KSNAME_Pin)
-
-typedef enum
-{
- KSPROPERTY_PIN_CINSTANCES,
- KSPROPERTY_PIN_CTYPES,
- KSPROPERTY_PIN_DATAFLOW,
- KSPROPERTY_PIN_DATARANGES,
- KSPROPERTY_PIN_DATAINTERSECTION,
- KSPROPERTY_PIN_INTERFACES,
- KSPROPERTY_PIN_MEDIUMS,
- KSPROPERTY_PIN_COMMUNICATION,
- KSPROPERTY_PIN_GLOBALCINSTANCES,
- KSPROPERTY_PIN_NECESSARYINSTANCES,
- KSPROPERTY_PIN_PHYSICALCONNECTION,
- KSPROPERTY_PIN_CATEGORY,
- KSPROPERTY_PIN_NAME,
- KSPROPERTY_PIN_CONSTRAINEDDATARANGES,
- KSPROPERTY_PIN_PROPOSEDATAFORMAT
+typedef enum {
+ KSPROPERTY_PIN_CINSTANCES,
+ KSPROPERTY_PIN_CTYPES,
+ KSPROPERTY_PIN_DATAFLOW,
+ KSPROPERTY_PIN_DATARANGES,
+ KSPROPERTY_PIN_DATAINTERSECTION,
+ KSPROPERTY_PIN_INTERFACES,
+ KSPROPERTY_PIN_MEDIUMS,
+ KSPROPERTY_PIN_COMMUNICATION,
+ KSPROPERTY_PIN_GLOBALCINSTANCES,
+ KSPROPERTY_PIN_NECESSARYINSTANCES,
+ KSPROPERTY_PIN_PHYSICALCONNECTION,
+ KSPROPERTY_PIN_CATEGORY,
+ KSPROPERTY_PIN_NAME,
+ KSPROPERTY_PIN_CONSTRAINEDDATARANGES,
+ KSPROPERTY_PIN_PROPOSEDATAFORMAT
} KSPROPERTY_PIN;
-typedef struct
-{
- KSPROPERTY Property;
- ULONG PinId;
- ULONG Reserved;
+typedef struct {
+ KSPROPERTY Property;
+ ULONG PinId;
+ ULONG Reserved;
} KSP_PIN, *PKSP_PIN;
-#define KSINSTANCE_INDETERMINATE ((ULONG)-1)
+#define KSINSTANCE_INDETERMINATE ((ULONG)-1)
-typedef struct
-{
- ULONG PossibleCount;
- ULONG CurrentCount;
+typedef struct {
+ ULONG PossibleCount;
+ ULONG CurrentCount;
} KSPIN_CINSTANCES, *PKSPIN_CINSTANCES;
-typedef struct
-{
- ULONG Size;
- ULONG Pin;
- WCHAR SymbolicLinkName[1];
+typedef struct {
+ ULONG Size;
+ ULONG Pin;
+ WCHAR SymbolicLinkName[1];
} KSPIN_PHYSICALCONNECTION, *PKSPIN_PHYSICALCONNECTION;
-
/* ===============================================================
Quality
Properties/Methods/Events
*/
#define KSPROPSETID_Quality \
- 0xD16AD380L, 0xAC1A, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
+ 0xD16AD380L, 0xAC1A, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
-typedef enum
-{
- KSPROPERTY_QUALITY_REPORT,
- KSPROPERTY_QUALITY_ERROR
+typedef enum {
+ KSPROPERTY_QUALITY_REPORT,
+ KSPROPERTY_QUALITY_ERROR
} KSPROPERTY_QUALITY;
-
/* ===============================================================
Stream
Properties/Methods/Events
*/
#define STATIC_KSPROPSETID_Stream\
- 0x65aaba60L, 0x98ae, 0x11cf, {0xa1, 0x0d, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4}
+ 0x65aaba60L, 0x98ae, 0x11cf, {0xa1, 0x0d, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4}
DEFINE_GUIDSTRUCT("65aaba60-98ae-11cf-a10d-0020afd156e4", KSPROPSETID_Stream);
#define KSPROPSETID_Stream DEFINE_GUIDNAMED(KSPROPSETID_Stream)
-typedef enum
-{
- KSPROPERTY_STREAM_ALLOCATOR,
- KSPROPERTY_STREAM_QUALITY,
- KSPROPERTY_STREAM_DEGRADATION,
- KSPROPERTY_STREAM_MASTERCLOCK,
- KSPROPERTY_STREAM_TIMEFORMAT,
- KSPROPERTY_STREAM_PRESENTATIONTIME,
- KSPROPERTY_STREAM_PRESENTATIONEXTENT,
- KSPROPERTY_STREAM_FRAMETIME,
- KSPROPERTY_STREAM_RATECAPABILITY,
- KSPROPERTY_STREAM_RATE,
- KSPROPERTY_STREAM_PIPE_ID
+typedef enum {
+ KSPROPERTY_STREAM_ALLOCATOR,
+ KSPROPERTY_STREAM_QUALITY,
+ KSPROPERTY_STREAM_DEGRADATION,
+ KSPROPERTY_STREAM_MASTERCLOCK,
+ KSPROPERTY_STREAM_TIMEFORMAT,
+ KSPROPERTY_STREAM_PRESENTATIONTIME,
+ KSPROPERTY_STREAM_PRESENTATIONEXTENT,
+ KSPROPERTY_STREAM_FRAMETIME,
+ KSPROPERTY_STREAM_RATECAPABILITY,
+ KSPROPERTY_STREAM_RATE,
+ KSPROPERTY_STREAM_PIPE_ID
} KSPROPERTY_STREAM;
#define DEFINE_KSPROPERTY_ITEM_STREAM_ALLOCATOR(GetHandler, SetHandler)\
*/
#define STATIC_KSPROPSETID_StreamAllocator\
- 0xcf6e4342L, 0xec87, 0x11cf, {0xa1, 0x30, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4}
+ 0xcf6e4342L, 0xec87, 0x11cf, {0xa1, 0x30, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4}
DEFINE_GUIDSTRUCT("cf6e4342-ec87-11cf-a130-0020afd156e4", KSPROPSETID_StreamAllocator);
#define KSPROPSETID_StreamAllocator DEFINE_GUIDNAMED(KSPROPSETID_StreamAllocator)
-typedef enum
-{
- KSPROPERTY_STREAMALLOCATOR_FUNCTIONTABLE,
- KSPROPERTY_STREAMALLOCATOR_STATUS
+typedef enum {
+ KSPROPERTY_STREAMALLOCATOR_FUNCTIONTABLE,
+ KSPROPERTY_STREAMALLOCATOR_STATUS
} KSPROPERTY_STREAMALLOCATOR;
#define KSMETHODSETID_StreamAllocator \
- 0xcf6e4341L, 0xec87, 0x11cf, {0xa1, 0x30, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4}
+ 0xcf6e4341L, 0xec87, 0x11cf, {0xa1, 0x30, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4}
-typedef enum
-{
- KSMETHOD_STREAMALLOCATOR_ALLOC,
- KSMETHOD_STREAMALLOCATOR_FREE
+typedef enum {
+ KSMETHOD_STREAMALLOCATOR_ALLOC,
+ KSMETHOD_STREAMALLOCATOR_FREE
} KSMETHOD_STREAMALLOCATOR;
-
#define KSEVENTSETID_StreamAllocator
-typedef enum
-{
- KSEVENT_STREAMALLOCATOR_INTERNAL_FREEFRAME,
- KSEVENT_STREAMALLOCATOR_FREEFRAME
+typedef enum {
+ KSEVENT_STREAMALLOCATOR_INTERNAL_FREEFRAME,
+ KSEVENT_STREAMALLOCATOR_FREEFRAME
} KSEVENT_STREAMALLOCATOR;
-
/* ===============================================================
StreamInterface
Properties/Methods/Events
*/
#define KSPROPSETID_StreamInterface \
- 0x1fdd8ee1L, 0x9cd3, 0x11d0, 0x82, 0xaa, 0x00, 0x00, 0xf8, 0x22, 0xfe, 0x8a
+ 0x1fdd8ee1L, 0x9cd3, 0x11d0, 0x82, 0xaa, 0x00, 0x00, 0xf8, 0x22, 0xfe, 0x8a
-typedef enum
-{
- KSPROPERTY_STREAMINTERFACE_HEADERSIZE
+typedef enum {
+ KSPROPERTY_STREAMINTERFACE_HEADERSIZE
} KSPROPERTY_STREAMINTERFACE;
-
/* ===============================================================
Topology
Properties/Methods/Events
*/
#define STATIC_KSPROPSETID_Topology\
- 0x720D4AC0L, 0x7533, 0x11D0, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
+ 0x720D4AC0L, 0x7533, 0x11D0, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
DEFINE_GUIDSTRUCT("720D4AC0-7533-11D0-A5D6-28DB04C10000", KSPROPSETID_Topology);
#define KSPROPSETID_Topology DEFINE_GUIDNAMED(KSPROPSETID_Topology)
typedef enum {
- KSPROPERTY_TOPOLOGY_CATEGORIES,
- KSPROPERTY_TOPOLOGY_NODES,
- KSPROPERTY_TOPOLOGY_CONNECTIONS,
- KSPROPERTY_TOPOLOGY_NAME
+ KSPROPERTY_TOPOLOGY_CATEGORIES,
+ KSPROPERTY_TOPOLOGY_NODES,
+ KSPROPERTY_TOPOLOGY_CONNECTIONS,
+ KSPROPERTY_TOPOLOGY_NAME
} KSPROPERTY_TOPOLOGY;
/* ===============================================================
*/
#define STATIC_KSPROPTYPESETID_General \
- 0x97E99BA0L, 0xBDEA, 0x11CF, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
+ 0x97E99BA0L, 0xBDEA, 0x11CF, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
DEFINE_GUIDSTRUCT("97E99BA0-BDEA-11CF-A5D6-28DB04C10000", KSPROPTYPESETID_General);
#define KSPROPTYPESETID_General DEFINE_GUIDNAMED(KSPROPTYPESETID_General)
KSNODETYPE_VOLUME
*/
-
-typedef PVOID KSDEVICE_HEADER,
- KSOBJECT_HEADER,
- KSOBJECT_BAG;
-
-
-
+typedef PVOID KSDEVICE_HEADER, KSOBJECT_HEADER, KSOBJECT_BAG;
/* ===============================================================
Method Types
*/
-#define KSMETHOD_TYPE_NONE 0x00000000
-#define KSMETHOD_TYPE_READ 0x00000001
-#define KSMETHOD_TYPE_WRITE 0x00000002
-#define KSMETHOD_TYPE_MODIFY 0x00000003
-#define KSMETHOD_TYPE_SOURCE 0x00000004
-#define KSMETHOD_TYPE_SEND 0x00000001
-#define KSMETHOD_TYPE_SETSUPPORT 0x00000100
-#define KSMETHOD_TYPE_BASICSUPPORT 0x00000200
-
+#define KSMETHOD_TYPE_NONE 0x00000000
+#define KSMETHOD_TYPE_READ 0x00000001
+#define KSMETHOD_TYPE_WRITE 0x00000002
+#define KSMETHOD_TYPE_MODIFY 0x00000003
+#define KSMETHOD_TYPE_SOURCE 0x00000004
+#define KSMETHOD_TYPE_SEND 0x00000001
+#define KSMETHOD_TYPE_SETSUPPORT 0x00000100
+#define KSMETHOD_TYPE_BASICSUPPORT 0x00000200
/* ===============================================================
Property Types
*/
-#define KSPROPERTY_TYPE_GET 0x00000001
-#define KSPROPERTY_TYPE_SET 0x00000002
-#define KSPROPERTY_TYPE_SETSUPPORT 0x00000100
-#define KSPROPERTY_TYPE_BASICSUPPORT 0x00000200
-#define KSPROPERTY_TYPE_RELATIONS 0x00000400
-#define KSPROPERTY_TYPE_SERIALIZESET 0x00000800
-#define KSPROPERTY_TYPE_UNSERIALIZESET 0x00001000
-#define KSPROPERTY_TYPE_SERIALIZERAW 0x00002000
-#define KSPROPERTY_TYPE_UNSERIALIZERAW 0x00004000
-#define KSPROPERTY_TYPE_SERIALIZESIZE 0x00008000
-#define KSPROPERTY_TYPE_DEFAULT_VALUES 0x00010000
-
+#define KSPROPERTY_TYPE_GET 0x00000001
+#define KSPROPERTY_TYPE_SET 0x00000002
+#define KSPROPERTY_TYPE_SETSUPPORT 0x00000100
+#define KSPROPERTY_TYPE_BASICSUPPORT 0x00000200
+#define KSPROPERTY_TYPE_RELATIONS 0x00000400
+#define KSPROPERTY_TYPE_SERIALIZESET 0x00000800
+#define KSPROPERTY_TYPE_UNSERIALIZESET 0x00001000
+#define KSPROPERTY_TYPE_SERIALIZERAW 0x00002000
+#define KSPROPERTY_TYPE_UNSERIALIZERAW 0x00004000
+#define KSPROPERTY_TYPE_SERIALIZESIZE 0x00008000
+#define KSPROPERTY_TYPE_DEFAULT_VALUES 0x00010000
/* ===============================================================
Topology Methods/Properties
*/
-#define KSMETHOD_TYPE_TOPOLOGY 0x10000000
-#define KSPROPERTY_TYPE_TOPOLOGY 0x10000000
+#define KSMETHOD_TYPE_TOPOLOGY 0x10000000
+#define KSPROPERTY_TYPE_TOPOLOGY 0x10000000
/*
#define DEFINE_KS_GUID(GA,GB,GC,GD,GE,GF,GG,GH,GI,GJ,GK) \
*/
#define STATIC_KSDATAFORMAT_SPECIFIER_NONE\
- 0x0F6417D6L, 0xC318, 0x11D0, {0xA4, 0x3F, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
+ 0x0F6417D6L, 0xC318, 0x11D0, {0xA4, 0x3F, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
DEFINE_GUIDSTRUCT("0F6417D6-C318-11D0-A43F-00A0C9223196", KSDATAFORMAT_SPECIFIER_NONE);
#define KSDATAFORMAT_SPECIFIER_NONE DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_NONE)
-
/* ===============================================================
KSMEMORY_TYPE_xxx
#endif
-
-typedef enum
-{
- KsObjectTypeDevice,
- KsObjectTypeFilterFactory,
- KsObjectTypeFilter,
- KsObjectTypePin
+typedef enum {
+ KsObjectTypeDevice,
+ KsObjectTypeFilterFactory,
+ KsObjectTypeFilter,
+ KsObjectTypePin
} KSOBJECTTYPE;
-typedef enum
-{
- KSSTATE_STOP,
- KSSTATE_ACQUIRE,
- KSSTATE_PAUSE,
- KSSTATE_RUN
+typedef enum {
+ KSSTATE_STOP,
+ KSSTATE_ACQUIRE,
+ KSSTATE_PAUSE,
+ KSSTATE_RUN
} KSSTATE, *PKSSTATE;
-typedef enum
-{
- KSTARGET_STATE_DISABLED,
- KSTARGET_STATE_ENABLED
+typedef enum {
+ KSTARGET_STATE_DISABLED,
+ KSTARGET_STATE_ENABLED
} KSTARGET_STATE;
-typedef enum
-{
- KSRESET_BEGIN,
- KSRESET_END
+typedef enum {
+ KSRESET_BEGIN,
+ KSRESET_END
} KSRESET;
-typedef enum
-{
- KSEVENTS_NONE,
- KSEVENTS_SPINLOCK,
- KSEVENTS_MUTEX,
- KSEVENTS_FMUTEX,
- KSEVENTS_FMUTEXUNSAFE,
- KSEVENTS_INTERRUPT,
- KSEVENTS_ERESOURCE
+typedef enum {
+ KSEVENTS_NONE,
+ KSEVENTS_SPINLOCK,
+ KSEVENTS_MUTEX,
+ KSEVENTS_FMUTEX,
+ KSEVENTS_FMUTEXUNSAFE,
+ KSEVENTS_INTERRUPT,
+ KSEVENTS_ERESOURCE
} KSEVENTS_LOCKTYPE;
-typedef enum
-{
- KSDEGRADE_STANDARD_SIMPLE,
- KSDEGRADE_STANDARD_QUALITY,
- KSDEGRADE_STANDARD_COMPUTATION,
- KSDEGRADE_STANDARD_SKIP
+typedef enum {
+ KSDEGRADE_STANDARD_SIMPLE,
+ KSDEGRADE_STANDARD_QUALITY,
+ KSDEGRADE_STANDARD_COMPUTATION,
+ KSDEGRADE_STANDARD_SKIP
} KSDEGRADE_STANDARD;
-typedef enum
-{
- KSPIN_DATAFLOW_IN = 1,
- KSPIN_DATAFLOW_OUT
+typedef enum {
+ KSPIN_DATAFLOW_IN = 1,
+ KSPIN_DATAFLOW_OUT
} KSPIN_DATAFLOW, *PKSPIN_DATAFLOW;
-typedef enum
-{
- KSPIN_COMMUNICATION_NONE,
- KSPIN_COMMUNICATION_SINK,
- KSPIN_COMMUNICATION_SOURCE,
- KSPIN_COMMUNICATION_BOTH,
- KSPIN_COMMUNICATION_BRIDGE
+typedef enum {
+ KSPIN_COMMUNICATION_NONE,
+ KSPIN_COMMUNICATION_SINK,
+ KSPIN_COMMUNICATION_SOURCE,
+ KSPIN_COMMUNICATION_BOTH,
+ KSPIN_COMMUNICATION_BRIDGE
} KSPIN_COMMUNICATION, *PKSPIN_COMMUNICATION;
-typedef enum
-{
- KsListEntryTail,
- KsListEntryHead
+typedef enum {
+ KsListEntryTail,
+ KsListEntryHead
} KSLIST_ENTRY_LOCATION;
-typedef enum
-{
- KsStackCopyToNewLocation,
- KsStackReuseCurrentLocation,
- KsStackUseNewLocation
+typedef enum {
+ KsStackCopyToNewLocation,
+ KsStackReuseCurrentLocation,
+ KsStackUseNewLocation
} KSSTACK_USE;
-typedef enum
-{
- KsAcquireOnly,
- KsAcquireAndRemove,
- KsAcquireOnlySingleItem,
- KsAcquireAndRemoveOnlySingleItem
+typedef enum {
+ KsAcquireOnly,
+ KsAcquireAndRemove,
+ KsAcquireOnlySingleItem,
+ KsAcquireAndRemoveOnlySingleItem
} KSIRP_REMOVAL_OPERATION;
-typedef enum
-{
- KsInvokeOnSuccess = 1,
- KsInvokeOnError = 2,
- KsInvokeOnCancel = 4
+typedef enum {
+ KsInvokeOnSuccess = 1,
+ KsInvokeOnError = 2,
+ KsInvokeOnCancel = 4
} KSCOMPLETION_INVOCATION;
-
-#if defined(_NTDDK_)
-/* MOVE ME */
-typedef NTSTATUS (NTAPI *PFNKSCONTEXT_DISPATCH)(
- IN PVOID Context,
- IN PIRP Irp);
-#endif
-
#if defined(_NTDDK_) && !defined(__wtypes_h__)
enum VARENUM {
- VT_EMPTY = 0,
- VT_NULL = 1,
- VT_I2 = 2,
- VT_I4 = 3,
- VT_R4 = 4,
- VT_R8 = 5,
- VT_CY = 6,
- VT_DATE = 7,
- VT_BSTR = 8,
- VT_DISPATCH = 9,
- VT_ERROR = 10,
- VT_BOOL = 11,
- VT_VARIANT = 12,
- VT_UNKNOWN = 13,
- VT_DECIMAL = 14,
- VT_I1 = 16,
- VT_UI1 = 17,
- VT_UI2 = 18,
- VT_UI4 = 19,
- VT_I8 = 20,
- VT_UI8 = 21,
- VT_INT = 22,
- VT_UINT = 23,
- VT_VOID = 24,
- VT_HRESULT = 25,
- VT_PTR = 26,
- VT_SAFEARRAY = 27,
- VT_CARRAY = 28,
- VT_USERDEFINED = 29,
- VT_LPSTR = 30,
- VT_LPWSTR = 31,
- VT_FILETIME = 64,
- VT_BLOB = 65,
- VT_STREAM = 66,
- VT_STORAGE = 67,
- VT_STREAMED_OBJECT = 68,
- VT_STORED_OBJECT = 69,
- VT_BLOB_OBJECT = 70,
- VT_CF = 71,
- VT_CLSID = 72,
- VT_VECTOR = 0x1000,
- VT_ARRAY = 0x2000,
- VT_BYREF = 0x4000,
- VT_RESERVED = 0x8000,
- VT_ILLEGAL = 0xffff,
- VT_ILLEGALMASKED = 0xfff,
- VT_TYPEMASK = 0xfff
+ VT_EMPTY = 0,
+ VT_NULL = 1,
+ VT_I2 = 2,
+ VT_I4 = 3,
+ VT_R4 = 4,
+ VT_R8 = 5,
+ VT_CY = 6,
+ VT_DATE = 7,
+ VT_BSTR = 8,
+ VT_DISPATCH = 9,
+ VT_ERROR = 10,
+ VT_BOOL = 11,
+ VT_VARIANT = 12,
+ VT_UNKNOWN = 13,
+ VT_DECIMAL = 14,
+ VT_I1 = 16,
+ VT_UI1 = 17,
+ VT_UI2 = 18,
+ VT_UI4 = 19,
+ VT_I8 = 20,
+ VT_UI8 = 21,
+ VT_INT = 22,
+ VT_UINT = 23,
+ VT_VOID = 24,
+ VT_HRESULT = 25,
+ VT_PTR = 26,
+ VT_SAFEARRAY = 27,
+ VT_CARRAY = 28,
+ VT_USERDEFINED = 29,
+ VT_LPSTR = 30,
+ VT_LPWSTR = 31,
+ VT_FILETIME = 64,
+ VT_BLOB = 65,
+ VT_STREAM = 66,
+ VT_STORAGE = 67,
+ VT_STREAMED_OBJECT = 68,
+ VT_STORED_OBJECT = 69,
+ VT_BLOB_OBJECT = 70,
+ VT_CF = 71,
+ VT_CLSID = 72,
+ VT_VECTOR = 0x1000,
+ VT_ARRAY = 0x2000,
+ VT_BYREF = 0x4000,
+ VT_RESERVED = 0x8000,
+ VT_ILLEGAL = 0xffff,
+ VT_ILLEGALMASKED = 0xfff,
+ VT_TYPEMASK = 0xfff
};
#endif
-#define STATIC_KSDATAFORMAT_TYPE_WILDCARD STATIC_GUID_NULL
-#define KSDATAFORMAT_TYPE_WILDCARD GUID_NULL
+#define STATIC_KSDATAFORMAT_TYPE_WILDCARD STATIC_GUID_NULL
+#define KSDATAFORMAT_TYPE_WILDCARD GUID_NULL
-#define STATIC_KSDATAFORMAT_SUBTYPE_WILDCARD STATIC_GUID_NULL
-#define KSDATAFORMAT_SUBTYPE_WILDCARD GUID_NULL
+#define STATIC_KSDATAFORMAT_SUBTYPE_WILDCARD STATIC_GUID_NULL
+#define KSDATAFORMAT_SUBTYPE_WILDCARD GUID_NULL
-#define STATIC_KSDATAFORMAT_SPECIFIER_WILDCARD STATIC_GUID_NULL
-#define KSDATAFORMAT_SPECIFIER_WILDCARD GUID_NULL
+#define STATIC_KSDATAFORMAT_SPECIFIER_WILDCARD STATIC_GUID_NULL
+#define KSDATAFORMAT_SPECIFIER_WILDCARD GUID_NULL
/* ===============================================================
Framing
*/
-typedef struct
-{
- ULONG MinFrameSize;
- ULONG MaxFrameSize;
- ULONG Stepping;
+typedef struct {
+ ULONG MinFrameSize;
+ ULONG MaxFrameSize;
+ ULONG Stepping;
} KS_FRAMING_RANGE, *PKS_FRAMING_RANGE;
-typedef struct
-{
- KS_FRAMING_RANGE Range;
- ULONG InPlaceWeight;
- ULONG NotInPlaceWeight;
+typedef struct {
+ KS_FRAMING_RANGE Range;
+ ULONG InPlaceWeight;
+ ULONG NotInPlaceWeight;
} KS_FRAMING_RANGE_WEIGHTED, *PKS_FRAMING_RANGE_WEIGHTED;
-typedef struct
-{
- GUID MemoryType;
- GUID BusType;
- ULONG MemoryFlags;
- ULONG BusFlags;
- ULONG Flags;
- ULONG Frames;
- ULONG FileAlignment;
- ULONG MemoryTypeWeight;
- KS_FRAMING_RANGE PhysicalRange;
- KS_FRAMING_RANGE_WEIGHTED FramingRange;
+typedef struct {
+ GUID MemoryType;
+ GUID BusType;
+ ULONG MemoryFlags;
+ ULONG BusFlags;
+ ULONG Flags;
+ ULONG Frames;
+ ULONG FileAlignment;
+ ULONG MemoryTypeWeight;
+ KS_FRAMING_RANGE PhysicalRange;
+ KS_FRAMING_RANGE_WEIGHTED FramingRange;
} KS_FRAMING_ITEM, *PKS_FRAMING_ITEM;
-typedef struct
-{
- ULONG RatioNumerator;
- ULONG RatioDenominator;
- ULONG RatioConstantMargin;
+typedef struct {
+ ULONG RatioNumerator;
+ ULONG RatioDenominator;
+ ULONG RatioConstantMargin;
} KS_COMPRESSION, *PKS_COMPRESSION;
-
/* ===============================================================
Priorities
*/
-#define KSPRIORITY_LOW 0x00000001
-#define KSPRIORITY_NORMAL 0x40000000
-#define KSPRIORITY_HIGH 0x80000000
-#define KSPRIORITY_EXCLUSIVE 0xFFFFFFFF
+#define KSPRIORITY_LOW 0x00000001
+#define KSPRIORITY_NORMAL 0x40000000
+#define KSPRIORITY_HIGH 0x80000000
+#define KSPRIORITY_EXCLUSIVE 0xFFFFFFFF
-typedef struct
-{
- ULONG PriorityClass;
- ULONG PrioritySubClass;
+typedef struct {
+ ULONG PriorityClass;
+ ULONG PrioritySubClass;
} KSPRIORITY, *PKSPRIORITY;
-
/* ===============================================================
Dispatch Table
http://www.osronline.com/DDKx/stream/ks-struct_494j.htm
*/
+
#if defined(_NTDDK_)
-typedef struct
-{
- PDRIVER_DISPATCH DeviceIoControl;
- PDRIVER_DISPATCH Read;
- PDRIVER_DISPATCH Write;
- PDRIVER_DISPATCH Flush;
- PDRIVER_DISPATCH Close;
- PDRIVER_DISPATCH QuerySecurity;
- PDRIVER_DISPATCH SetSecurity;
- PFAST_IO_DEVICE_CONTROL FastDeviceIoControl;
- PFAST_IO_READ FastRead;
- PFAST_IO_WRITE FastWrite;
-} KSDISPATCH_TABLE, *PKSDISPATCH_TABLE;
+typedef struct {
+ PDRIVER_DISPATCH DeviceIoControl;
+ PDRIVER_DISPATCH Read;
+ PDRIVER_DISPATCH Write;
+ PDRIVER_DISPATCH Flush;
+ PDRIVER_DISPATCH Close;
+ PDRIVER_DISPATCH QuerySecurity;
+ PDRIVER_DISPATCH SetSecurity;
+ PFAST_IO_DEVICE_CONTROL FastDeviceIoControl;
+ PFAST_IO_READ FastRead;
+ PFAST_IO_WRITE FastWrite;
+} KSDISPATCH_TABLE, *PKSDISPATCH_TABLE;
-#define KSCREATE_ITEM_IRP_STORAGE(Irp) (*(PKSOBJECT_CREATE_ITEM*)&(Irp)->Tail.Overlay.DriverContext[0])
-#define KSEVENT_SET_IRP_STORAGE(Irp) (*(const KSEVENT_SET**)&(Irp)->Tail.Overlay.DriverContext[0])
-#define KSEVENT_ITEM_IRP_STORAGE(Irp) (*(const KSEVENT_ITEM**)&(Irp)->Tail.Overlay.DriverContext[3])
-#define KSEVENT_ENTRY_IRP_STORAGE(Irp) (*(PKSEVENT_ENTRY*)&(Irp)->Tail.Overlay.DriverContext[0])
-#define KSMETHOD_SET_IRP_STORAGE(Irp) (*(const KSMETHOD_SET**)&(Irp)->Tail.Overlay.DriverContext[0])
-#define KSMETHOD_ITEM_IRP_STORAGE(Irp) (*(const KSMETHOD_ITEM**)&(Irp)->Tail.Overlay.DriverContext[3])
-#define KSMETHOD_TYPE_IRP_STORAGE(Irp) (*(ULONG_PTR*)(&(Irp)->Tail.Overlay.DriverContext[2]))
-#define KSQUEUE_SPINLOCK_IRP_STORAGE(Irp) (*(PKSPIN_LOCK*)&(Irp)->Tail.Overlay.DriverContext[1])
-#define KSPROPERTY_SET_IRP_STORAGE(Irp) (*(const KSPROPERTY_SET**)&(Irp)->Tail.Overlay.DriverContext[0])
-#define KSPROPERTY_ITEM_IRP_STORAGE(Irp) (*(const KSPROPERTY_ITEM**)&(Irp)->Tail.Overlay.DriverContext[3])
+#define KSCREATE_ITEM_IRP_STORAGE(Irp) (*(PKSOBJECT_CREATE_ITEM*)&(Irp)->Tail.Overlay.DriverContext[0])
+#define KSEVENT_SET_IRP_STORAGE(Irp) (*(const KSEVENT_SET**)&(Irp)->Tail.Overlay.DriverContext[0])
+#define KSEVENT_ITEM_IRP_STORAGE(Irp) (*(const KSEVENT_ITEM**)&(Irp)->Tail.Overlay.DriverContext[3])
+#define KSEVENT_ENTRY_IRP_STORAGE(Irp) (*(PKSEVENT_ENTRY*)&(Irp)->Tail.Overlay.DriverContext[0])
+#define KSMETHOD_SET_IRP_STORAGE(Irp) (*(const KSMETHOD_SET**)&(Irp)->Tail.Overlay.DriverContext[0])
+#define KSMETHOD_ITEM_IRP_STORAGE(Irp) (*(const KSMETHOD_ITEM**)&(Irp)->Tail.Overlay.DriverContext[3])
+#define KSMETHOD_TYPE_IRP_STORAGE(Irp) (*(ULONG_PTR*)(&(Irp)->Tail.Overlay.DriverContext[2]))
+#define KSQUEUE_SPINLOCK_IRP_STORAGE(Irp) (*(PKSPIN_LOCK*)&(Irp)->Tail.Overlay.DriverContext[1])
+#define KSPROPERTY_SET_IRP_STORAGE(Irp) (*(const KSPROPERTY_SET**)&(Irp)->Tail.Overlay.DriverContext[0])
+#define KSPROPERTY_ITEM_IRP_STORAGE(Irp) (*(const KSPROPERTY_ITEM**)&(Irp)->Tail.Overlay.DriverContext[3])
#define KSPROPERTY_ATTRIBUTES_IRP_STORAGE(Irp) (*(PKSATTRIBUTE_LIST*)&(Irp)->Tail.Overlay.DriverContext[2])
-typedef
-VOID
-(NTAPI *PFNREFERENCEDEVICEOBJECT)(
- IN PVOID Context
- );
-
-typedef
-VOID
-(NTAPI *PFNDEREFERENCEDEVICEOBJECT)(
- IN PVOID Context
- );
-
-typedef
-NTSTATUS
-(NTAPI *PFNQUERYREFERENCESTRING)(
- IN PVOID Context,
- IN OUT PWCHAR *String
- );
+_IRQL_requires_max_(PASSIVE_LEVEL)
+typedef VOID
+(NTAPI *PFNREFERENCEDEVICEOBJECT)(
+ _In_ PVOID Context);
-typedef struct
-{
- INTERFACE Interface;
- PFNREFERENCEDEVICEOBJECT ReferenceDeviceObject;
- PFNDEREFERENCEDEVICEOBJECT DereferenceDeviceObject;
- PFNQUERYREFERENCESTRING QueryReferenceString;
+_IRQL_requires_max_(PASSIVE_LEVEL)
+typedef VOID
+(NTAPI *PFNDEREFERENCEDEVICEOBJECT)(
+ _In_ PVOID Context);
+
+_IRQL_requires_max_(PASSIVE_LEVEL)
+typedef NTSTATUS
+(NTAPI *PFNQUERYREFERENCESTRING)(
+ _In_ PVOID Context,
+ _Inout_ PWCHAR *String);
+
+typedef struct {
+ INTERFACE Interface;
+ PFNREFERENCEDEVICEOBJECT ReferenceDeviceObject;
+ PFNDEREFERENCEDEVICEOBJECT DereferenceDeviceObject;
+ PFNQUERYREFERENCESTRING QueryReferenceString;
} BUS_INTERFACE_REFERENCE, *PBUS_INTERFACE_REFERENCE;
-typedef struct
-{
- KDPC Dpc;
- ULONG ReferenceCount;
- KSPIN_LOCK AccessLock;
+typedef struct {
+ KDPC Dpc;
+ ULONG ReferenceCount;
+ KSPIN_LOCK AccessLock;
} KSDPC_ITEM, *PKSDPC_ITEM;
-typedef struct
-{
- KSDPC_ITEM DpcItem;
- LIST_ENTRY BufferList;
+typedef struct {
+ KSDPC_ITEM DpcItem;
+ LIST_ENTRY BufferList;
} KSBUFFER_ITEM, *PKSBUFFER_ITEM;
-#endif
+#endif /* _NTDDK_ */
-typedef struct
-{
- GUID Manufacturer;
- GUID Product;
- GUID Component;
- GUID Name;
- ULONG Version;
- ULONG Revision;
+typedef struct {
+ GUID Manufacturer;
+ GUID Product;
+ GUID Component;
+ GUID Name;
+ ULONG Version;
+ ULONG Revision;
} KSCOMPONENTID, *PKSCOMPONENTID;
/* ===============================================================
Properties
*/
-typedef struct
-{
- GUID PropertySet;
- ULONG Count;
+typedef struct {
+ GUID PropertySet;
+ ULONG Count;
} KSPROPERTY_SERIALHDR, *PKSPROPERTY_SERIALHDR;
-typedef struct
-{
- KSIDENTIFIER PropTypeSet;
- ULONG Id;
- ULONG PropertyLength;
+typedef struct {
+ KSIDENTIFIER PropTypeSet;
+ ULONG Id;
+ ULONG PropertyLength;
} KSPROPERTY_SERIAL, *PKSPROPERTY_SERIAL;
-
-typedef union
-{
- struct {
- LONG SignedMinimum;
- LONG SignedMaximum;
-
+typedef union {
+ struct {
+ LONG SignedMinimum;
+ LONG SignedMaximum;
#if defined( _KS_NO_ANONYMOUS_STRUCTURES_ )
- }_SIGNED;
+ } _SIGNED;
#else
- };
+ };
#endif
-
- struct {
- ULONG UnsignedMinimum;
- ULONG UnsignedMaximum;
+ struct {
+ ULONG UnsignedMinimum;
+ ULONG UnsignedMaximum;
#if defined( _KS_NO_ANONYMOUS_STRUCTURES_ )
- }_UNSIGNED;
+ } _UNSIGNED;
#else
- };
+ };
#endif
-
} KSPROPERTY_BOUNDS_LONG, *PKSPROPERTY_BOUNDS_LONG;
-typedef union
-{
- struct {
- LONGLONG SignedMinimum;
- LONGLONG SignedMaximum;
+typedef union {
+ struct {
+ LONGLONG SignedMinimum;
+ LONGLONG SignedMaximum;
#if defined( _KS_NO_ANONYMOUS_STRUCTURES_ )
- }_SIGNED64;
+ } _SIGNED64;
#else
- };
+ };
#endif
-
- struct {
+ struct {
#if defined(_NTDDK_)
- ULONGLONG UnsignedMinimum;
- ULONGLONG UnsignedMaximum;
+ ULONGLONG UnsignedMinimum;
+ ULONGLONG UnsignedMaximum;
#else
- DWORDLONG UnsignedMinimum;
- DWORDLONG UnsignedMaximum;
+ DWORDLONG UnsignedMinimum;
+ DWORDLONG UnsignedMaximum;
#endif
#if defined( _KS_NO_ANONYMOUS_STRUCTURES_ )
- }_UNSIGNED64;
+ } _UNSIGNED64;
#else
- };
+ };
#endif
} KSPROPERTY_BOUNDS_LONGLONG, *PKSPROPERTY_BOUNDS_LONGLONG;
-typedef struct
-{
- ULONG AccessFlags;
- ULONG DescriptionSize;
- KSIDENTIFIER PropTypeSet;
- ULONG MembersListCount;
- ULONG Reserved;
+typedef struct {
+ ULONG AccessFlags;
+ ULONG DescriptionSize;
+ KSIDENTIFIER PropTypeSet;
+ ULONG MembersListCount;
+ ULONG Reserved;
} KSPROPERTY_DESCRIPTION, *PKSPROPERTY_DESCRIPTION;
-typedef struct
-{
- ULONG MembersFlags;
- ULONG MembersSize;
- ULONG MembersCount;
- ULONG Flags;
+typedef struct {
+ ULONG MembersFlags;
+ ULONG MembersSize;
+ ULONG MembersCount;
+ ULONG Flags;
} KSPROPERTY_MEMBERSHEADER, *PKSPROPERTY_MEMBERSHEADER;
typedef struct {
- KSPROPERTY_MEMBERSHEADER MembersHeader;
- const VOID* Members;
+ KSPROPERTY_MEMBERSHEADER MembersHeader;
+ const VOID *Members;
} KSPROPERTY_MEMBERSLIST, *PKSPROPERTY_MEMBERSLIST;
-#define KSPROPERTY_MEMBER_RANGES 0x00000001
-#define KSPROPERTY_MEMBER_STEPPEDRANGES 0x00000002
-#define KSPROPERTY_MEMBER_VALUES 0x00000003
+#define KSPROPERTY_MEMBER_RANGES 0x00000001
+#define KSPROPERTY_MEMBER_STEPPEDRANGES 0x00000002
+#define KSPROPERTY_MEMBER_VALUES 0x00000003
-#define KSPROPERTY_MEMBER_FLAG_DEFAULT 0x00000001
+#define KSPROPERTY_MEMBER_FLAG_DEFAULT 0x00000001
#if (NTDDI_VERSION >= NTDDI_WINXP)
-#define KSPROPERTY_MEMBER_FLAG_BASICSUPPORT_MULTICHANNEL 0x00000002
-#define KSPROPERTY_MEMBER_FLAG_BASICSUPPORT_UNIFORM 0x00000004
+#define KSPROPERTY_MEMBER_FLAG_BASICSUPPORT_MULTICHANNEL 0x00000002
+#define KSPROPERTY_MEMBER_FLAG_BASICSUPPORT_UNIFORM 0x00000004
#endif
-
typedef struct {
- KSIDENTIFIER PropTypeSet;
- ULONG MembersListCount;
- const KSPROPERTY_MEMBERSLIST* MembersList;
+ KSIDENTIFIER PropTypeSet;
+ ULONG MembersListCount;
+ _Field_size_(MembersListCount) const KSPROPERTY_MEMBERSLIST *MembersList;
} KSPROPERTY_VALUES, *PKSPROPERTY_VALUES;
#if defined(_NTDDK_)
-typedef NTSTATUS (NTAPI *PFNKSHANDLER)(
- IN PIRP Irp,
- IN PKSIDENTIFIER Request,
- IN OUT PVOID Data);
-typedef struct
-{
- ULONG PropertyId;
- union
- {
- PFNKSHANDLER GetPropertyHandler;
- BOOLEAN GetSupported;
- };
- ULONG MinProperty;
- ULONG MinData;
- union {
- PFNKSHANDLER SetPropertyHandler;
- BOOLEAN SetSupported;
- };
- const KSPROPERTY_VALUES * Values;
- ULONG RelationsCount;
- const KSPROPERTY * Relations;
- PFNKSHANDLER SupportHandler;
- ULONG SerializedSize;
-} KSPROPERTY_ITEM, *PKSPROPERTY_ITEM;
+_IRQL_requires_max_(PASSIVE_LEVEL)
+typedef NTSTATUS
+(NTAPI *PFNKSCONTEXT_DISPATCH)(
+ _In_ PVOID Context,
+ _In_ PIRP Irp);
+_IRQL_requires_max_(PASSIVE_LEVEL)
+typedef NTSTATUS
+(NTAPI *PFNKSHANDLER)(
+ _In_ PIRP Irp,
+ _In_ PKSIDENTIFIER Request,
+ _Inout_ PVOID Data);
-typedef
-BOOLEAN
+typedef struct {
+ ULONG PropertyId;
+ union {
+ PFNKSHANDLER GetPropertyHandler;
+ BOOLEAN GetSupported;
+ };
+ ULONG MinProperty;
+ ULONG MinData;
+ union {
+ PFNKSHANDLER SetPropertyHandler;
+ BOOLEAN SetSupported;
+ };
+ const KSPROPERTY_VALUES *Values;
+ ULONG RelationsCount;
+ _Field_size_(RelationsCount) const KSPROPERTY *Relations;
+ PFNKSHANDLER SupportHandler;
+ ULONG SerializedSize;
+} KSPROPERTY_ITEM, *PKSPROPERTY_ITEM;
+
+_IRQL_requires_max_(PASSIVE_LEVEL)
+typedef BOOLEAN
(NTAPI *PFNKSFASTHANDLER)(
- IN PFILE_OBJECT FileObject,
- IN PKSIDENTIFIER Request,
- IN ULONG RequestLength,
- IN OUT PVOID Data,
- IN ULONG DataLength,
- OUT PIO_STATUS_BLOCK IoStatus
- );
+ _In_ PFILE_OBJECT FileObject,
+ _In_reads_bytes_(RequestLength) PKSIDENTIFIER Request,
+ _In_ ULONG RequestLength,
+ _Inout_updates_bytes_(DataLength) PVOID Data,
+ _In_ ULONG DataLength,
+ _Out_ PIO_STATUS_BLOCK IoStatus);
typedef struct {
- ULONG PropertyId;
- union {
- PFNKSFASTHANDLER GetPropertyHandler;
- BOOLEAN GetSupported;
- };
- union {
- PFNKSFASTHANDLER SetPropertyHandler;
- BOOLEAN SetSupported;
- };
- ULONG Reserved;
+ ULONG PropertyId;
+ union {
+ PFNKSFASTHANDLER GetPropertyHandler;
+ BOOLEAN GetSupported;
+ };
+ union {
+ PFNKSFASTHANDLER SetPropertyHandler;
+ BOOLEAN SetSupported;
+ };
+ ULONG Reserved;
} KSFASTPROPERTY_ITEM, *PKSFASTPROPERTY_ITEM;
-typedef struct
-{
- const GUID* Set;
- ULONG PropertiesCount;
- const KSPROPERTY_ITEM * PropertyItem;
- ULONG FastIoCount;
- const KSFASTPROPERTY_ITEM* FastIoTable;
+typedef struct {
+ const GUID *Set;
+ ULONG PropertiesCount;
+ _Field_size_(PropertiesCount) const KSPROPERTY_ITEM *PropertyItem;
+ ULONG FastIoCount;
+ const KSFASTPROPERTY_ITEM *FastIoTable;
} KSPROPERTY_SET, *PKSPROPERTY_SET;
-#endif
+#endif /* _NTDDK_ */
-typedef struct
-{
- ULONG SteppingDelta;
- ULONG Reserved;
- KSPROPERTY_BOUNDS_LONG Bounds;
+typedef struct {
+ ULONG SteppingDelta;
+ ULONG Reserved;
+ KSPROPERTY_BOUNDS_LONG Bounds;
} KSPROPERTY_STEPPING_LONG, *PKSPROPERTY_STEPPING_LONG;
-typedef struct
-{
+typedef struct {
#if defined(_NTDDK_)
- ULONGLONG SteppingDelta;
+ ULONGLONG SteppingDelta;
#else
- DWORDLONG SteppingDelta;
+ DWORDLONG SteppingDelta;
#endif
- KSPROPERTY_BOUNDS_LONGLONG Bounds;
+ KSPROPERTY_BOUNDS_LONGLONG Bounds;
} KSPROPERTY_STEPPING_LONGLONG, *PKSPROPERTY_STEPPING_LONGLONG;
/* ===============================================================
Allocator Framing
*/
-typedef struct
-{
- union {
- ULONG OptionsFlags;
- ULONG RequirementsFlags;
- };
+typedef struct {
+ union {
+ ULONG OptionsFlags;
+ ULONG RequirementsFlags;
+ };
#if defined(_NTDDK_)
- POOL_TYPE PoolType;
+ POOL_TYPE PoolType;
#else
- ULONG PoolType;
-#endif
- ULONG Frames;
- ULONG FrameSize;
- ULONG FileAlignment;
- ULONG Reserved;
+ ULONG PoolType;
+#endif
+ ULONG Frames;
+ ULONG FrameSize;
+ ULONG FileAlignment;
+ ULONG Reserved;
} KSALLOCATOR_FRAMING, *PKSALLOCATOR_FRAMING;
-typedef struct
-{
- ULONG CountItems;
- ULONG PinFlags;
- KS_COMPRESSION OutputCompression;
- ULONG PinWeight;
- KS_FRAMING_ITEM FramingItem[1];
+typedef struct {
+ ULONG CountItems;
+ ULONG PinFlags;
+ KS_COMPRESSION OutputCompression;
+ ULONG PinWeight;
+ KS_FRAMING_ITEM FramingItem[1];
} KSALLOCATOR_FRAMING_EX, *PKSALLOCATOR_FRAMING_EX;
-#define KSALLOCATOR_REQUIREMENTF_INPLACE_MODIFIER 0x00000001
-#define KSALLOCATOR_REQUIREMENTF_SYSTEM_MEMORY 0x00000002
-#define KSALLOCATOR_REQUIREMENTF_FRAME_INTEGRITY 0x00000004
-#define KSALLOCATOR_REQUIREMENTF_MUST_ALLOCATE 0x00000008
-#define KSALLOCATOR_REQUIREMENTF_PREFERENCES_ONLY 0x80000000
+#define KSALLOCATOR_REQUIREMENTF_INPLACE_MODIFIER 0x00000001
+#define KSALLOCATOR_REQUIREMENTF_SYSTEM_MEMORY 0x00000002
+#define KSALLOCATOR_REQUIREMENTF_FRAME_INTEGRITY 0x00000004
+#define KSALLOCATOR_REQUIREMENTF_MUST_ALLOCATE 0x00000008
+#define KSALLOCATOR_REQUIREMENTF_PREFERENCES_ONLY 0x80000000
-#define KSALLOCATOR_OPTIONF_COMPATIBLE 0x00000001
-#define KSALLOCATOR_OPTIONF_SYSTEM_MEMORY 0x00000002
-#define KSALLOCATOR_OPTIONF_VALID 0x00000003
+#define KSALLOCATOR_OPTIONF_COMPATIBLE 0x00000001
+#define KSALLOCATOR_OPTIONF_SYSTEM_MEMORY 0x00000002
+#define KSALLOCATOR_OPTIONF_VALID 0x00000003
-#define KSALLOCATOR_FLAG_PARTIAL_READ_SUPPORT 0x00000010
-#define KSALLOCATOR_FLAG_DEVICE_SPECIFIC 0x00000020
-#define KSALLOCATOR_FLAG_CAN_ALLOCATE 0x00000040
-#define KSALLOCATOR_FLAG_INSIST_ON_FRAMESIZE_RATIO 0x00000080
+#define KSALLOCATOR_FLAG_PARTIAL_READ_SUPPORT 0x00000010
+#define KSALLOCATOR_FLAG_DEVICE_SPECIFIC 0x00000020
+#define KSALLOCATOR_FLAG_CAN_ALLOCATE 0x00000040
+#define KSALLOCATOR_FLAG_INSIST_ON_FRAMESIZE_RATIO 0x00000080
/* ===============================================================
Quality
*/
-typedef struct
-{
- PVOID Context;
- ULONG Proportion;
- LONGLONG DeltaTime;
+typedef struct {
+ PVOID Context;
+ ULONG Proportion;
+ LONGLONG DeltaTime;
} KSQUALITY, *PKSQUALITY;
-typedef struct
-{
- HANDLE QualityManager;
- PVOID Context;
+typedef struct {
+ HANDLE QualityManager;
+ PVOID Context;
} KSQUALITY_MANAGER, *PKSQUALITY_MANAGER;
-typedef struct
-{
- LONGLONG PresentationStart;
- LONGLONG Duration;
- KSPIN_INTERFACE Interface;
- LONG Rate;
- ULONG Flags;
+typedef struct {
+ LONGLONG PresentationStart;
+ LONGLONG Duration;
+ KSPIN_INTERFACE Interface;
+ LONG Rate;
+ ULONG Flags;
} KSRATE, *PKSRATE;
-typedef struct
-{
- KSPROPERTY Property;
- KSRATE Rate;
+typedef struct {
+ KSPROPERTY Property;
+ KSRATE Rate;
} KSRATE_CAPABILITY, *PKSRATE_CAPABILITY;
-typedef struct
-{
- LONGLONG Granularity;
- LONGLONG Error;
+typedef struct {
+ LONGLONG Granularity;
+ LONGLONG Error;
} KSRESOLUTION, *PKSRESOLUTION;
-typedef struct
-{
- ULONG NotificationType;
- union {
- struct {
- HANDLE Event;
- ULONG_PTR Reserved[2];
- } EventHandle;
- struct {
- HANDLE Semaphore;
- ULONG Reserved;
- LONG Adjustment;
- } SemaphoreHandle;
+typedef struct {
+ ULONG NotificationType;
+ union {
+ struct {
+ HANDLE Event;
+ ULONG_PTR Reserved[2];
+ } EventHandle;
+ struct {
+ HANDLE Semaphore;
+ ULONG Reserved;
+ LONG Adjustment;
+ } SemaphoreHandle;
#if defined(_NTDDK_)
- struct {
- PVOID Event;
- KPRIORITY Increment;
- ULONG_PTR Reserved;
- } EventObject;
- struct {
- PVOID Semaphore;
- KPRIORITY Increment;
- LONG Adjustment;
- } SemaphoreObject;
- struct {
- PKDPC Dpc;
- ULONG ReferenceCount;
- ULONG_PTR Reserved;
- } Dpc;
- struct {
- PWORK_QUEUE_ITEM WorkQueueItem;
- WORK_QUEUE_TYPE WorkQueueType;
- ULONG_PTR Reserved;
- } WorkItem;
- struct {
- PWORK_QUEUE_ITEM WorkQueueItem;
- PKSWORKER KsWorkerObject;
- ULONG_PTR Reserved;
- } KsWorkItem;
+ struct {
+ PVOID Event;
+ KPRIORITY Increment;
+ ULONG_PTR Reserved;
+ } EventObject;
+ struct {
+ PVOID Semaphore;
+ KPRIORITY Increment;
+ LONG Adjustment;
+ } SemaphoreObject;
+ struct {
+ PKDPC Dpc;
+ ULONG ReferenceCount;
+ ULONG_PTR Reserved;
+ } Dpc;
+ struct {
+ PWORK_QUEUE_ITEM WorkQueueItem;
+ WORK_QUEUE_TYPE WorkQueueType;
+ ULONG_PTR Reserved;
+ } WorkItem;
+ struct {
+ PWORK_QUEUE_ITEM WorkQueueItem;
+ PKSWORKER KsWorkerObject;
+ ULONG_PTR Reserved;
+ } KsWorkItem;
#endif
- struct {
- PVOID Unused;
- LONG_PTR Alignment[2];
- } Alignment;
- };
+ struct {
+ PVOID Unused;
+ LONG_PTR Alignment[2];
+ } Alignment;
+ };
} KSEVENTDATA, *PKSEVENTDATA;
#define KSEVENTF_EVENT_HANDLE 0x00000001
#define KSEVENT_TYPE_BASICSUPPORT 0x00000200
#define KSEVENT_TYPE_QUERYBUFFER 0x00000400
-#define KSEVENT_TYPE_TOPOLOGY 0x10000000
+#define KSEVENT_TYPE_TOPOLOGY 0x10000000
-typedef struct
-{
- ULONG Size;
- ULONG Flags;
- union {
- HANDLE ObjectHandle;
- PVOID ObjectPointer;
- };
- PVOID Reserved;
- KSEVENT Event;
- KSEVENTDATA EventData;
+typedef struct {
+ ULONG Size;
+ ULONG Flags;
+ union {
+ HANDLE ObjectHandle;
+ PVOID ObjectPointer;
+ };
+ PVOID Reserved;
+ KSEVENT Event;
+ KSEVENTDATA EventData;
} KSRELATIVEEVENT, *PKSRELATIVEEVENT;
-#define KSRELATIVEEVENT_FLAG_HANDLE 0x00000001
+#define KSRELATIVEEVENT_FLAG_HANDLE 0x00000001
#define KSRELATIVEEVENT_FLAG_POINTER 0x00000002
/* ===============================================================
Timing
*/
-
typedef struct {
- KSEVENTDATA EventData;
- LONGLONG MarkTime;
+ KSEVENTDATA EventData;
+ LONGLONG MarkTime;
} KSEVENT_TIME_MARK, *PKSEVENT_TIME_MARK;
typedef struct {
- KSEVENTDATA EventData;
- LONGLONG TimeBase;
- LONGLONG Interval;
+ KSEVENTDATA EventData;
+ LONGLONG TimeBase;
+ LONGLONG Interval;
} KSEVENT_TIME_INTERVAL, *PKSEVENT_TIME_INTERVAL;
typedef struct {
- LONGLONG TimeBase;
- LONGLONG Interval;
+ LONGLONG TimeBase;
+ LONGLONG Interval;
} KSINTERVAL, *PKSINTERVAL;
-
-
-typedef struct
-{
- LONGLONG Time;
- ULONG Numerator;
- ULONG Denominator;
+typedef struct {
+ LONGLONG Time;
+ ULONG Numerator;
+ ULONG Denominator;
} KSTIME, *PKSTIME;
-typedef struct
-{
- LONGLONG Time;
- LONGLONG SystemTime;
+typedef struct {
+ LONGLONG Time;
+ LONGLONG SystemTime;
} KSCORRELATED_TIME, *PKSCORRELATED_TIME;
-typedef struct
-{
- LONGLONG Duration;
- ULONG FrameFlags;
- ULONG Reserved;
+typedef struct {
+ LONGLONG Duration;
+ ULONG FrameFlags;
+ ULONG Reserved;
} KSFRAMETIME, *PKSFRAMETIME;
-
/* ===============================================================
Clocks
*/
-typedef PVOID PKSDEFAULTCLOCK;
+typedef PVOID PKSDEFAULTCLOCK;
-typedef struct
-{
- ULONG CreateFlags;
+typedef struct {
+ ULONG CreateFlags;
} KSCLOCK_CREATE, *PKSCLOCK_CREATE;
#if defined(_NTDDK_)
-typedef
-LONGLONG
+_IRQL_requires_max_(PASSIVE_LEVEL)
+typedef LONGLONG
(FASTCALL *PFNKSCLOCK_GETTIME)(
- IN PFILE_OBJECT FileObject
- );
-typedef
-LONGLONG
+ _In_ PFILE_OBJECT FileObject);
+
+_IRQL_requires_max_(PASSIVE_LEVEL)
+typedef LONGLONG
(FASTCALL *PFNKSCLOCK_CORRELATEDTIME)(
- IN PFILE_OBJECT FileObject,
- OUT PLONGLONG SystemTime);
+ _In_ PFILE_OBJECT FileObject,
+ _Out_ PLONGLONG SystemTime);
-typedef struct
-{
- PFNKSCLOCK_GETTIME GetTime;
- PFNKSCLOCK_GETTIME GetPhysicalTime;
- PFNKSCLOCK_CORRELATEDTIME GetCorrelatedTime;
- PFNKSCLOCK_CORRELATEDTIME GetCorrelatedPhysicalTime;
+typedef struct {
+ PFNKSCLOCK_GETTIME GetTime;
+ PFNKSCLOCK_GETTIME GetPhysicalTime;
+ PFNKSCLOCK_CORRELATEDTIME GetCorrelatedTime;
+ PFNKSCLOCK_CORRELATEDTIME GetCorrelatedPhysicalTime;
} KSCLOCK_FUNCTIONTABLE, *PKSCLOCK_FUNCTIONTABLE;
-
#define DEFINE_KSPROPERTY_ITEM_CLOCK_TIME(Handler)\
DEFINE_KSPROPERTY_ITEM(\
KSPROPERTY_CLOCK_TIME,\
Objects ??? SORT ME!
*/
-#define KSCREATE_ITEM_SECURITYCHANGED 0x1
-#define KSCREATE_ITEM_WILDCARD 0x2
-#define KSCREATE_ITEM_NOPARAMETERS 0x4
-#define KSCREATE_ITEM_FREEONSTOP 0x8
+#define KSCREATE_ITEM_SECURITYCHANGED 0x1
+#define KSCREATE_ITEM_WILDCARD 0x2
+#define KSCREATE_ITEM_NOPARAMETERS 0x4
+#define KSCREATE_ITEM_FREEONSTOP 0x8
-typedef struct
-{
- PDRIVER_DISPATCH Create;
- PVOID Context;
- UNICODE_STRING ObjectClass;
- PSECURITY_DESCRIPTOR SecurityDescriptor;
- ULONG Flags;
+typedef struct {
+ PDRIVER_DISPATCH Create;
+ PVOID Context;
+ UNICODE_STRING ObjectClass;
+ PSECURITY_DESCRIPTOR SecurityDescriptor;
+ ULONG Flags;
} KSOBJECT_CREATE_ITEM, *PKSOBJECT_CREATE_ITEM;
-typedef struct
-{
- ULONG CreateItemsCount;
- PKSOBJECT_CREATE_ITEM CreateItemsList;
+typedef struct {
+ ULONG CreateItemsCount;
+ _Field_size_(CreateItemsCount) PKSOBJECT_CREATE_ITEM CreateItemsList;
} KSOBJECT_CREATE, *PKSOBJECT_CREATE;
-typedef VOID (NTAPI *PFNKSITEMFREECALLBACK)(
- IN PKSOBJECT_CREATE_ITEM CreateItem);
+typedef VOID
+(NTAPI *PFNKSITEMFREECALLBACK)(
+ _In_ PKSOBJECT_CREATE_ITEM CreateItem);
-#endif
+#endif /* _NTDDK_ */
-typedef struct
-{
- ULONG Size;
- ULONG Count;
+typedef struct {
+ ULONG Size;
+ ULONG Count;
} KSMULTIPLE_ITEM, *PKSMULTIPLE_ITEM;
-typedef struct
-{
- KSEVENT Event;
- PKSEVENTDATA EventData;
- PVOID Reserved;
+typedef struct {
+ KSEVENT Event;
+ PKSEVENTDATA EventData;
+ PVOID Reserved;
} KSQUERYBUFFER, *PKSQUERYBUFFER;
-typedef struct
-{
- PVOID Context;
- ULONG Status;
+typedef struct {
+ PVOID Context;
+ ULONG Status;
} KSERROR, *PKSERROR;
/* ===============================================================
Methods
*/
+
#if defined(_NTDDK_)
-typedef struct
-{
- ULONG MethodId;
- union {
- PFNKSHANDLER MethodHandler;
- BOOLEAN MethodSupported;
- };
- ULONG MinMethod;
- ULONG MinData;
- PFNKSHANDLER SupportHandler;
- ULONG Flags;
+typedef struct {
+ ULONG MethodId;
+ union {
+ PFNKSHANDLER MethodHandler;
+ BOOLEAN MethodSupported;
+ };
+ ULONG MinMethod;
+ ULONG MinData;
+ PFNKSHANDLER SupportHandler;
+ ULONG Flags;
} KSMETHOD_ITEM, *PKSMETHOD_ITEM;
#ifndef _MSC_VER
SupportHandler, Flags\
}
-
-
#endif
-
-typedef struct
-{
- ULONG MethodId;
- union {
- PFNKSFASTHANDLER MethodHandler;
- BOOLEAN MethodSupported;
- };
+typedef struct {
+ ULONG MethodId;
+ union {
+ PFNKSFASTHANDLER MethodHandler;
+ BOOLEAN MethodSupported;
+ };
} KSFASTMETHOD_ITEM, *PKSFASTMETHOD_ITEM;
#define DEFINE_KSFASTMETHOD_ITEM(MethodId, MethodHandler)\
MethodId, (PFNKSFASTHANDLER)MethodHandler\
}
-
-typedef struct
-{
- const GUID* Set;
- ULONG MethodsCount;
- const KSMETHOD_ITEM* MethodItem;
- ULONG FastIoCount;
- const KSFASTMETHOD_ITEM*FastIoTable;
+typedef struct {
+ const GUID *Set;
+ ULONG MethodsCount;
+ _Field_size_(MethodsCount) const KSMETHOD_ITEM *MethodItem;
+ ULONG FastIoCount;
+ _Field_size_(FastIoCount) const KSFASTMETHOD_ITEM *FastIoTable;
} KSMETHOD_SET, *PKSMETHOD_SET;
-
#define DEFINE_KSMETHOD_SET(Set,\
MethodsCount,\
MethodItem,\
FastIoTable\
}
-#endif
+#endif /* _NTDDK_ */
+
/* ===============================================================
Nodes
*/
-typedef struct
-{
- KSPROPERTY Property;
- ULONG NodeId;
- ULONG Reserved;
+typedef struct {
+ KSPROPERTY Property;
+ ULONG NodeId;
+ ULONG Reserved;
} KSP_NODE, *PKSP_NODE;
-typedef struct
-{
- KSMETHOD Method;
- ULONG NodeID;
- ULONG Reserved;
+typedef struct {
+ KSMETHOD Method;
+ ULONG NodeID;
+ ULONG Reserved;
} KSM_NODE, *PKSM_NODE;
-typedef struct
-{
- KSEVENT Event;
- ULONG NodeId;
- ULONG Reserved;
+typedef struct {
+ KSEVENT Event;
+ ULONG NodeId;
+ ULONG Reserved;
} KSE_NODE, *PKSE_NODE;
typedef struct {
- ULONG CreateFlags;
- ULONG Node;
+ ULONG CreateFlags;
+ ULONG Node;
} KSNODE_CREATE, *PKSNODE_CREATE;
-
/* ===============================================================
Events
*/
+
typedef struct _KSEVENT_ENTRY KSEVENT_ENTRY, *PKSEVENT_ENTRY;
#if defined(_NTDDK_)
-
-typedef NTSTATUS (NTAPI *PFNKSADDEVENT)(
- IN PIRP Irp,
- IN PKSEVENTDATA EventData,
- IN struct _KSEVENT_ENTRY* EventEntry);
-typedef
-VOID
+typedef NTSTATUS
+(NTAPI *PFNKSADDEVENT)(
+ _In_ PIRP Irp,
+ _In_ PKSEVENTDATA EventData,
+ _In_ struct _KSEVENT_ENTRY *EventEntry);
+
+typedef VOID
(NTAPI *PFNKSREMOVEEVENT)(
- IN PFILE_OBJECT FileObject,
- IN struct _KSEVENT_ENTRY* EventEntry
- );
+ _In_ PFILE_OBJECT FileObject,
+ _In_ struct _KSEVENT_ENTRY *EventEntry);
-typedef struct
-{
- ULONG EventId;
- ULONG DataInput;
- ULONG ExtraEntryData;
- PFNKSADDEVENT AddHandler;
- PFNKSREMOVEEVENT RemoveHandler;
- PFNKSHANDLER SupportHandler;
+typedef struct {
+ ULONG EventId;
+ ULONG DataInput;
+ ULONG ExtraEntryData;
+ PFNKSADDEVENT AddHandler;
+ PFNKSREMOVEEVENT RemoveHandler;
+ PFNKSHANDLER SupportHandler;
} KSEVENT_ITEM, *PKSEVENT_ITEM;
-typedef struct
-{
- const GUID* Set;
- ULONG EventsCount;
- const KSEVENT_ITEM* EventItem;
+typedef struct {
+ const GUID *Set;
+ ULONG EventsCount;
+ _Field_size_(EventsCount) const KSEVENT_ITEM *EventItem;
} KSEVENT_SET, *PKSEVENT_SET;
-struct _KSEVENT_ENTRY
-{
- LIST_ENTRY ListEntry;
- PVOID Object;
- union {
- PKSDPC_ITEM DpcItem;
- PKSBUFFER_ITEM BufferItem;
- };
- PKSEVENTDATA EventData;
- ULONG NotificationType;
- const KSEVENT_SET* EventSet;
- const KSEVENT_ITEM* EventItem;
- PFILE_OBJECT FileObject;
- ULONG SemaphoreAdjustment;
- ULONG Reserved;
- ULONG Flags;
+struct _KSEVENT_ENTRY {
+ LIST_ENTRY ListEntry;
+ PVOID Object;
+ union {
+ PKSDPC_ITEM DpcItem;
+ PKSBUFFER_ITEM BufferItem;
+ };
+ PKSEVENTDATA EventData;
+ ULONG NotificationType;
+ const KSEVENT_SET *EventSet;
+ const KSEVENT_ITEM *EventItem;
+ PFILE_OBJECT FileObject;
+ ULONG SemaphoreAdjustment;
+ ULONG Reserved;
+ ULONG Flags;
};
-#endif
+#endif /* _NTDDK_ */
+
/* ===============================================================
Pins
*/
#define IOCTL_KS_HANDSHAKE CTL_CODE(FILE_DEVICE_KS, 0x007, METHOD_NEITHER, FILE_ANY_ACCESS)
typedef struct {
- GUID ProtocolId;
- PVOID Argument1;
- PVOID Argument2;
+ GUID ProtocolId;
+ PVOID Argument1;
+ PVOID Argument2;
} KSHANDSHAKE, *PKSHANDSHAKE;
-typedef
-NTSTATUS
+_IRQL_requires_max_(PASSIVE_LEVEL)
+typedef NTSTATUS
(NTAPI *PFNKSPINHANDSHAKE)(
- IN PKSPIN Pin,
- IN PKSHANDSHAKE In,
- IN PKSHANDSHAKE Out
- );
+ _In_ PKSPIN Pin,
+ _In_ PKSHANDSHAKE In,
+ _In_ PKSHANDSHAKE Out);
-typedef
-void
+_IRQL_requires_max_(PASSIVE_LEVEL)
+typedef void
(NTAPI *PFNKSPINPOWER)(
- IN PKSPIN Pin,
- IN DEVICE_POWER_STATE State
- );
+ _In_ PKSPIN Pin,
+ _In_ DEVICE_POWER_STATE State);
-typedef
-void
+typedef void
(NTAPI *PFNKSPINFRAMERETURN)(
- IN PKSPIN Pin,
- IN PVOID Data OPTIONAL,
- IN ULONG Size OPTIONAL,
- IN PMDL Mdl OPTIONAL,
- IN PVOID Context OPTIONAL,
- IN NTSTATUS Status
- );
-
-typedef
-void
+ _In_ PKSPIN Pin,
+ _In_reads_bytes_opt_(Size) PVOID Data,
+ _In_opt_ ULONG Size,
+ _In_opt_ PMDL Mdl,
+ _In_opt_ PVOID Context,
+ _In_ NTSTATUS Status);
+
+_IRQL_requires_max_(DISPATCH_LEVEL)
+typedef void
(NTAPI *PFNKSPINIRPCOMPLETION)(
- IN PKSPIN Pin,
- IN PIRP Irp
- );
+ _In_ PKSPIN Pin,
+ _In_ PIRP Irp);
-typedef
-NTSTATUS
+_IRQL_requires_max_(PASSIVE_LEVEL)
+typedef NTSTATUS
(NTAPI *PFNKSPINIRP)(
- IN PKSPIN Pin,
- IN PIRP Irp
- );
+ _In_ PKSPIN Pin,
+ _In_ PIRP Irp);
-typedef
-NTSTATUS
+typedef NTSTATUS
(NTAPI *PFNKSPIN)(
- IN PKSPIN Pin
- );
+ _In_ PKSPIN Pin);
-typedef
-void
+_IRQL_requires_max_(PASSIVE_LEVEL)
+typedef void
(NTAPI *PFNKSPINVOID)(
- IN PKSPIN Pin
- );
+ _In_ PKSPIN Pin);
-typedef
-void
+_IRQL_requires_max_(DISPATCH_LEVEL)
+typedef void
(NTAPI *PFNKSSTREAMPOINTER)(
- IN PKSSTREAM_POINTER StreamPointer
- );
+ _In_ PKSSTREAM_POINTER StreamPointer);
typedef struct {
- ULONG Count;
- PKSATTRIBUTE* Attributes;
+ ULONG Count;
+ _Field_size_(Count) PKSATTRIBUTE *Attributes;
} KSATTRIBUTE_LIST, *PKSATTRIBUTE_LIST;
-typedef
-NTSTATUS
+_IRQL_requires_max_(PASSIVE_LEVEL)
+typedef NTSTATUS
(NTAPI *PFNKSPINSETDATAFORMAT)(
- IN PKSPIN Pin,
- IN PKSDATAFORMAT OldFormat OPTIONAL,
- IN PKSMULTIPLE_ITEM OldAttributeList OPTIONAL,
- IN const KSDATARANGE* DataRange,
- IN const KSATTRIBUTE_LIST* AttributeRange OPTIONAL
- );
-
-typedef
-NTSTATUS
+ _In_ PKSPIN Pin,
+ _In_opt_ PKSDATAFORMAT OldFormat,
+ _In_opt_ PKSMULTIPLE_ITEM OldAttributeList,
+ _In_ const KSDATARANGE* DataRange,
+ _In_opt_ const KSATTRIBUTE_LIST* AttributeRange);
+
+_IRQL_requires_max_(PASSIVE_LEVEL)
+typedef NTSTATUS
(NTAPI *PFNKSPINSETDEVICESTATE)(
- IN PKSPIN Pin,
- IN KSSTATE ToState,
- IN KSSTATE FromState
- );
+ _In_ PKSPIN Pin,
+ _In_ KSSTATE ToState,
+ _In_ KSSTATE FromState);
typedef struct _KSCLOCK_DISPATCH KSCLOCK_DISPATCH, *PKSCLOCK_DISPATCH;
typedef struct _KSALLOCATOR_DISPATCH KSALLOCATOR_DISPATCH, *PKSALLOCATOR_DISPATCH;
-typedef struct
-{
- PFNKSPINIRP Create;
- PFNKSPINIRP Close;
- PFNKSPIN Process;
- PFNKSPINVOID Reset;
- PFNKSPINSETDATAFORMAT SetDataFormat;
- PFNKSPINSETDEVICESTATE SetDeviceState;
- PFNKSPIN Connect;
- PFNKSPINVOID Disconnect;
- const KSCLOCK_DISPATCH* Clock;
- const KSALLOCATOR_DISPATCH* Allocator;
+typedef struct {
+ PFNKSPINIRP Create;
+ PFNKSPINIRP Close;
+ PFNKSPIN Process;
+ PFNKSPINVOID Reset;
+ PFNKSPINSETDATAFORMAT SetDataFormat;
+ PFNKSPINSETDEVICESTATE SetDeviceState;
+ PFNKSPIN Connect;
+ PFNKSPINVOID Disconnect;
+ const KSCLOCK_DISPATCH* Clock;
+ const KSALLOCATOR_DISPATCH* Allocator;
} KSPIN_DISPATCH, *PKSPIN_DISPATCH;
-typedef
-BOOLEAN
+_IRQL_requires_max_(DISPATCH_LEVEL)
+typedef BOOLEAN
(NTAPI *PFNKSPINSETTIMER)(
- IN PKSPIN Pin,
- IN PKTIMER Timer,
- IN LARGE_INTEGER DueTime,
- IN PKDPC Dpc
- );
+ _In_ PKSPIN Pin,
+ _In_ PKTIMER Timer,
+ _In_ LARGE_INTEGER DueTime,
+ _In_ PKDPC Dpc);
-typedef
-BOOLEAN
+_IRQL_requires_max_(DISPATCH_LEVEL)
+typedef BOOLEAN
(NTAPI *PFNKSPINCANCELTIMER)(
- IN PKSPIN Pin,
- IN PKTIMER Timer
- );
+ _In_ PKSPIN Pin,
+ _In_ PKTIMER Timer);
-typedef
-LONGLONG
+_IRQL_requires_max_(DISPATCH_LEVEL)
+typedef LONGLONG
(FASTCALL *PFNKSPINCORRELATEDTIME)(
- IN PKSPIN Pin,
- OUT PLONGLONG SystemTime
- );
+ _In_ PKSPIN Pin,
+ _Out_ PLONGLONG SystemTime);
-typedef
-void
+_IRQL_requires_max_(DISPATCH_LEVEL)
+typedef void
(NTAPI *PFNKSPINRESOLUTION)(
- IN PKSPIN Pin,
- OUT PKSRESOLUTION Resolution
- );
+ _In_ PKSPIN Pin,
+ _Out_ PKSRESOLUTION Resolution);
struct _KSCLOCK_DISPATCH {
- PFNKSPINSETTIMER SetTimer;
- PFNKSPINCANCELTIMER CancelTimer;
- PFNKSPINCORRELATEDTIME CorrelatedTime;
- PFNKSPINRESOLUTION Resolution;
+ PFNKSPINSETTIMER SetTimer;
+ PFNKSPINCANCELTIMER CancelTimer;
+ PFNKSPINCORRELATEDTIME CorrelatedTime;
+ PFNKSPINRESOLUTION Resolution;
};
-typedef
-NTSTATUS
+_IRQL_requires_max_(PASSIVE_LEVEL)
+typedef NTSTATUS
(NTAPI *PFNKSPININITIALIZEALLOCATOR)(
- IN PKSPIN Pin,
- IN PKSALLOCATOR_FRAMING AllocatorFraming,
- OUT PVOID* Context
- );
+ _In_ PKSPIN Pin,
+ _In_ PKSALLOCATOR_FRAMING AllocatorFraming,
+ _Out_ PVOID *Context);
-typedef PVOID (NTAPI *PFNKSDELETEALLOCATOR)(
- IN PVOID Context);
+typedef PVOID
+(NTAPI *PFNKSDELETEALLOCATOR)(
+ _In_ PVOID Context);
-typedef PVOID (NTAPI *PFNKSDEFAULTALLOCATE)(
- IN PVOID Context);
+typedef PVOID
+(NTAPI *PFNKSDEFAULTALLOCATE)(
+ _In_ PVOID Context);
-typedef PVOID (NTAPI *PFNKSDEFAULTFREE)(
- IN PVOID Context,
- IN PVOID Buffer);
+typedef PVOID
+(NTAPI *PFNKSDEFAULTFREE)(
+ _In_ PVOID Context,
+ _In_ PVOID Buffer);
struct _KSALLOCATOR_DISPATCH {
- PFNKSPININITIALIZEALLOCATOR InitializeAllocator;
- PFNKSDELETEALLOCATOR DeleteAllocator;
- PFNKSDEFAULTALLOCATE Allocate;
- PFNKSDEFAULTFREE Free;
+ PFNKSPININITIALIZEALLOCATOR InitializeAllocator;
+ PFNKSDELETEALLOCATOR DeleteAllocator;
+ PFNKSDEFAULTALLOCATE Allocate;
+ PFNKSDEFAULTFREE Free;
};
-typedef struct
-{
- ULONG PropertySetsCount;
- ULONG PropertyItemSize;
- const KSPROPERTY_SET* PropertySets;
- ULONG MethodSetsCount;
- ULONG MethodItemSize;
- const KSMETHOD_SET* MethodSets;
- ULONG EventSetsCount;
- ULONG EventItemSize;
- const KSEVENT_SET* EventSets;
+typedef struct KSAUTOMATION_TABLE_ {
+ ULONG PropertySetsCount;
+ ULONG PropertyItemSize;
+ _Field_size_bytes_(PropertySetsCount * PropertyItemSize) const KSPROPERTY_SET *PropertySets;
+ ULONG MethodSetsCount;
+ ULONG MethodItemSize;
+ _Field_size_bytes_(MethodSetsCount * MethodItemSize) const KSMETHOD_SET *MethodSets;
+ ULONG EventSetsCount;
+ ULONG EventItemSize;
+ _Field_size_bytes_(EventSetsCount * EventItemSize) const KSEVENT_SET *EventSets;
#if !defined(_WIN64)
- PVOID Alignment;
+ PVOID Alignment;
#endif
} KSAUTOMATION_TABLE, *PKSAUTOMATION_TABLE;
-
-
-typedef struct
-{
- ULONG InterfacesCount;
- const KSPIN_INTERFACE* Interfaces;
- ULONG MediumsCount;
- const KSPIN_MEDIUM* Mediums;
- ULONG DataRangesCount;
- const PKSDATARANGE* DataRanges;
- KSPIN_DATAFLOW DataFlow;
- KSPIN_COMMUNICATION Communication;
- const GUID* Category;
- const GUID* Name;
- union {
- LONGLONG Reserved;
- struct {
- ULONG ConstrainedDataRangesCount;
- PKSDATARANGE* ConstrainedDataRanges;
- };
+typedef struct {
+ ULONG InterfacesCount;
+ _Field_size_(InterfacesCount) const KSPIN_INTERFACE *Interfaces;
+ ULONG MediumsCount;
+ _Field_size_(MediumsCount) const KSPIN_MEDIUM *Mediums;
+ ULONG DataRangesCount;
+ _Field_size_(DataRangesCount) const PKSDATARANGE *DataRanges;
+ KSPIN_DATAFLOW DataFlow;
+ KSPIN_COMMUNICATION Communication;
+ const GUID *Category;
+ const GUID *Name;
+ union {
+ LONGLONG Reserved;
+ struct {
+ ULONG ConstrainedDataRangesCount;
+ _Field_size_(ConstrainedDataRangesCount) PKSDATARANGE *ConstrainedDataRanges;
};
+ };
} KSPIN_DESCRIPTOR, *PKSPIN_DESCRIPTOR;
-typedef
-NTSTATUS
+_Must_inspect_result_
+_IRQL_requires_max_(PASSIVE_LEVEL)
+typedef NTSTATUS
(NTAPI *PFNKSINTERSECTHANDLER)(
- IN PIRP Irp,
- IN PKSP_PIN Pin,
- IN PKSDATARANGE DataRange,
- OUT PVOID Data OPTIONAL
- );
-
-typedef
-NTSTATUS
+ _In_ PIRP Irp,
+ _In_ PKSP_PIN Pin,
+ _In_ PKSDATARANGE DataRange,
+ _Out_opt_ PVOID Data);
+
+_Must_inspect_result_
+_IRQL_requires_max_(PASSIVE_LEVEL)
+typedef NTSTATUS
(NTAPI *PFNKSINTERSECTHANDLEREX)(
- IN PVOID Context,
- IN PIRP Irp,
- IN PKSP_PIN Pin,
- IN PKSDATARANGE DataRange,
- IN PKSDATARANGE MatchingDataRange,
- IN ULONG DataBufferSize,
- OUT PVOID Data OPTIONAL,
- OUT PULONG DataSize
- );
-
-typedef struct
-{
- const KSPIN_DISPATCH* Dispatch;
- const KSAUTOMATION_TABLE* AutomationTable;
- KSPIN_DESCRIPTOR PinDescriptor;
- ULONG Flags;
- ULONG InstancesPossible;
- ULONG InstancesNecessary;
- const KSALLOCATOR_FRAMING_EX* AllocatorFraming;
- PFNKSINTERSECTHANDLEREX IntersectHandler;
+ _In_ PVOID Context,
+ _In_ PIRP Irp,
+ _In_ PKSP_PIN Pin,
+ _In_ PKSDATARANGE DataRange,
+ _In_ PKSDATARANGE MatchingDataRange,
+ _In_ ULONG DataBufferSize,
+ _Out_writes_bytes_to_opt_(DataBufferSize, *DataSize) PVOID Data,
+ _Out_ PULONG DataSize);
+
+typedef struct {
+ const KSPIN_DISPATCH* Dispatch;
+ const KSAUTOMATION_TABLE* AutomationTable;
+ KSPIN_DESCRIPTOR PinDescriptor;
+ ULONG Flags;
+ ULONG InstancesPossible;
+ ULONG InstancesNecessary;
+ const KSALLOCATOR_FRAMING_EX* AllocatorFraming;
+ PFNKSINTERSECTHANDLEREX IntersectHandler;
} KSPIN_DESCRIPTOR_EX, *PKSPIN_DESCRIPTOR_EX;
-#define KSFILTER_FLAG_DISPATCH_LEVEL_PROCESSING 0x00000001
-#define KSFILTER_FLAG_CRITICAL_PROCESSING 0x00000002
-#define KSFILTER_FLAG_HYPERCRITICAL_PROCESSING 0x00000004
+#define KSFILTER_FLAG_DISPATCH_LEVEL_PROCESSING 0x00000001
+#define KSFILTER_FLAG_CRITICAL_PROCESSING 0x00000002
+#define KSFILTER_FLAG_HYPERCRITICAL_PROCESSING 0x00000004
#define KSFILTER_FLAG_RECEIVE_ZERO_LENGTH_SAMPLES 0x00000008
#if (NTDDI_VERSION >= NTDDI_WINXPSP2)
-#define KSFILTER_FLAG_DENY_USERMODE_ACCESS 0x80000000
+#define KSFILTER_FLAG_DENY_USERMODE_ACCESS 0x80000000
#endif
-
#define KSPIN_FLAG_DISPATCH_LEVEL_PROCESSING KSFILTER_FLAG_DISPATCH_LEVEL_PROCESSING
#define KSPIN_FLAG_CRITICAL_PROCESSING KSFILTER_FLAG_CRITICAL_PROCESSING
#define KSPIN_FLAG_HYPERCRITICAL_PROCESSING KSFILTER_FLAG_HYPERCRITICAL_PROCESSING
-#define KSPIN_FLAG_ASYNCHRONOUS_PROCESSING 0x00000008
-#define KSPIN_FLAG_DO_NOT_INITIATE_PROCESSING 0x00000010
+
+#define KSPIN_FLAG_ASYNCHRONOUS_PROCESSING 0x00000008
+#define KSPIN_FLAG_DO_NOT_INITIATE_PROCESSING 0x00000010
#define KSPIN_FLAG_INITIATE_PROCESSING_ON_EVERY_ARRIVAL 0x00000020
-#define KSPIN_FLAG_FRAMES_NOT_REQUIRED_FOR_PROCESSING 0x00000040
-#define KSPIN_FLAG_ENFORCE_FIFO 0x00000080
+#define KSPIN_FLAG_FRAMES_NOT_REQUIRED_FOR_PROCESSING 0x00000040
+#define KSPIN_FLAG_ENFORCE_FIFO 0x00000080
-#define KSPIN_FLAG_GENERATE_MAPPINGS 0x00000100
+#define KSPIN_FLAG_GENERATE_MAPPINGS 0x00000100
#define KSPIN_FLAG_DISTINCT_TRAILING_EDGE 0x00000200
-#define KSPIN_FLAG_PROCESS_IN_RUN_STATE_ONLY 0x00010000
-#define KSPIN_FLAG_SPLITTER 0x00020000
-#define KSPIN_FLAG_USE_STANDARD_TRANSPORT 0x00040000
+#define KSPIN_FLAG_PROCESS_IN_RUN_STATE_ONLY 0x00010000
+#define KSPIN_FLAG_SPLITTER 0x00020000
+#define KSPIN_FLAG_USE_STANDARD_TRANSPORT 0x00040000
#define KSPIN_FLAG_DO_NOT_USE_STANDARD_TRANSPORT 0x00080000
-#define KSPIN_FLAG_FIXED_FORMAT 0x00100000
-#define KSPIN_FLAG_GENERATE_EOS_EVENTS 0x00200000
+#define KSPIN_FLAG_FIXED_FORMAT 0x00100000
+#define KSPIN_FLAG_GENERATE_EOS_EVENTS 0x00200000
+
#define KSPIN_FLAG_RENDERER (KSPIN_FLAG_PROCESS_IN_RUN_STATE_ONLY|KSPIN_FLAG_GENERATE_EOS_EVENTS)
-#define KSPIN_FLAG_IMPLEMENT_CLOCK 0x00400000
+
+#define KSPIN_FLAG_IMPLEMENT_CLOCK 0x00400000
#define KSPIN_FLAG_SOME_FRAMES_REQUIRED_FOR_PROCESSING 0x00800000
-#define KSPIN_FLAG_PROCESS_IF_ANY_IN_RUN_STATE 0x01000000
+#define KSPIN_FLAG_PROCESS_IF_ANY_IN_RUN_STATE 0x01000000
#if (NTDDI_VERSION >= NTDDI_WINXPSP2)
-#define KSPIN_FLAG_DENY_USERMODE_ACCESS 0x80000000
+#define KSPIN_FLAG_DENY_USERMODE_ACCESS 0x80000000
#endif
-struct _KSPIN
-{
- const KSPIN_DESCRIPTOR_EX* Descriptor;
- KSOBJECT_BAG Bag;
- PVOID Context;
- ULONG Id;
- KSPIN_COMMUNICATION Communication;
- BOOLEAN ConnectionIsExternal;
- KSPIN_INTERFACE ConnectionInterface;
- KSPIN_MEDIUM ConnectionMedium;
- KSPRIORITY ConnectionPriority;
- PKSDATAFORMAT ConnectionFormat;
- PKSMULTIPLE_ITEM AttributeList;
- ULONG StreamHeaderSize;
- KSPIN_DATAFLOW DataFlow;
- KSSTATE DeviceState;
- KSRESET ResetState;
- KSSTATE ClientState;
+struct _KSPIN {
+ const KSPIN_DESCRIPTOR_EX *Descriptor;
+ KSOBJECT_BAG Bag;
+ PVOID Context;
+ ULONG Id;
+ KSPIN_COMMUNICATION Communication;
+ BOOLEAN ConnectionIsExternal;
+ KSPIN_INTERFACE ConnectionInterface;
+ KSPIN_MEDIUM ConnectionMedium;
+ KSPRIORITY ConnectionPriority;
+ PKSDATAFORMAT ConnectionFormat;
+ PKSMULTIPLE_ITEM AttributeList;
+ ULONG StreamHeaderSize;
+ KSPIN_DATAFLOW DataFlow;
+ KSSTATE DeviceState;
+ KSRESET ResetState;
+ KSSTATE ClientState;
};
#define DEFINE_KSPROPERTY_ITEM_PIN_CINSTANCES(Handler)\
DEFINE_KSPROPERTY_ITEM_PIN_CONSTRAINEDDATARANGES(PropGeneral)\
}
-
-
-typedef
-void
+typedef void
(NTAPI *PFNKSFREE)(
- IN PVOID Data
- );
+ _In_ PVOID Data);
+#define DEFINE_KSPROPERTY_TABLE(tablename) \
+ const KSPROPERTY_ITEM tablename[] =
+#endif /* _NTDDK_ */
-#define DEFINE_KSPROPERTY_TABLE(tablename)\
- const KSPROPERTY_ITEM tablename[] =
-
-#endif
-
-typedef struct
-{
- KSPIN_INTERFACE Interface;
- KSPIN_MEDIUM Medium;
- ULONG PinId;
- HANDLE PinToHandle;
- KSPRIORITY Priority;
+typedef struct {
+ KSPIN_INTERFACE Interface;
+ KSPIN_MEDIUM Medium;
+ ULONG PinId;
+ HANDLE PinToHandle;
+ KSPRIORITY Priority;
} KSPIN_CONNECT, *PKSPIN_CONNECT;
/* ===============================================================
Topology
*/
-typedef struct
-{
- ULONG FromNode;
- ULONG FromNodePin;
- ULONG ToNode;
- ULONG ToNodePin;
+typedef struct {
+ ULONG FromNode;
+ ULONG FromNodePin;
+ ULONG ToNode;
+ ULONG ToNodePin;
} KSTOPOLOGY_CONNECTION, *PKSTOPOLOGY_CONNECTION;
-typedef struct
-{
- ULONG CategoriesCount;
- const GUID* Categories;
- ULONG TopologyNodesCount;
- const GUID* TopologyNodes;
- ULONG TopologyConnectionsCount;
- const KSTOPOLOGY_CONNECTION* TopologyConnections;
- const GUID* TopologyNodesNames;
- ULONG Reserved;
+typedef struct {
+ ULONG CategoriesCount;
+ _Field_size_(CategoriesCount) const GUID *Categories;
+ ULONG TopologyNodesCount;
+ _Field_size_(TopologyNodesCount) const GUID *TopologyNodes;
+ ULONG TopologyConnectionsCount;
+ _Field_size_(TopologyConnectionsCount) const KSTOPOLOGY_CONNECTION *TopologyConnections;
+ _Field_size_(TopologyNodesCount) const GUID *TopologyNodesNames;
+ ULONG Reserved;
} KSTOPOLOGY, *PKSTOPOLOGY;
/* TODO */
typedef void* UNKNOWN;
-typedef PVOID (NTAPI *PFNKSINITIALIZEALLOCATOR)(
- IN PVOID InitialContext,
- IN PKSALLOCATOR_FRAMING AllocatorFraming,
- OUT PVOID* Context);
+typedef PVOID
+(NTAPI *PFNKSINITIALIZEALLOCATOR)(
+ _In_ PVOID InitialContext,
+ _In_ PKSALLOCATOR_FRAMING AllocatorFraming,
+ _Outptr_ PVOID *Context);
#if defined(_NTDDK_)
-typedef NTSTATUS (NTAPI *PFNKSALLOCATOR)(
- IN PIRP Irp,
- IN ULONG BufferSize,
- IN BOOLEAN InputOperation);
-
-typedef NTSTATUS (NTAPI *PFNKINTERSECTHANDLEREX)(
- IN PVOID Context,
- IN PIRP Irp,
- IN PKSP_PIN Pin,
- IN PKSDATARANGE DataRange,
- IN PKSDATARANGE MatchingDataRange,
- IN ULONG DataBufferSize,
- OUT PVOID Data OPTIONAL,
- OUT PULONG DataSize);
-
-
-typedef
-NTSTATUS
+
+_IRQL_requires_max_(PASSIVE_LEVEL)
+typedef NTSTATUS
+(NTAPI *PFNKSALLOCATOR)(
+ _In_ PIRP Irp,
+ _In_ ULONG BufferSize,
+ _In_ BOOLEAN InputOperation);
+
+_Must_inspect_result_
+_IRQL_requires_max_(PASSIVE_LEVEL)
+typedef NTSTATUS
+(NTAPI *PFNKINTERSECTHANDLEREX)(
+ _In_ PVOID Context,
+ _In_ PIRP Irp,
+ _In_ PKSP_PIN Pin,
+ _In_ PKSDATARANGE DataRange,
+ _In_ PKSDATARANGE MatchingDataRange,
+ _In_ ULONG DataBufferSize,
+ _Out_writes_bytes_to_opt_(DataBufferSize, *DataSize) PVOID Data,
+ _Out_ PULONG DataSize);
+
+typedef NTSTATUS
(NTAPI *PFNALLOCATOR_ALLOCATEFRAME)(
- IN PFILE_OBJECT FileObject,
- PVOID *Frame
- );
+ _In_ PFILE_OBJECT FileObject,
+ _Outptr_ PVOID *Frame);
-typedef
-VOID
+typedef VOID
(NTAPI *PFNALLOCATOR_FREEFRAME)(
- IN PFILE_OBJECT FileObject,
- IN PVOID Frame
- );
+ _In_ PFILE_OBJECT FileObject,
+ _In_ PVOID Frame);
typedef struct {
PFNALLOCATOR_ALLOCATEFRAME AllocateFrame;
PFNALLOCATOR_FREEFRAME FreeFrame;
} KSSTREAMALLOCATOR_FUNCTIONTABLE, *PKSSTREAMALLOCATOR_FUNCTIONTABLE;
-#endif
+#endif /* _NTDDK_ */
-typedef struct
-{
- KSALLOCATOR_FRAMING Framing;
- ULONG AllocatedFrames;
- ULONG Reserved;
+typedef struct {
+ KSALLOCATOR_FRAMING Framing;
+ ULONG AllocatedFrames;
+ ULONG Reserved;
} KSSTREAMALLOCATOR_STATUS, *PKSSTREAMALLOCATOR_STATUS;
-typedef struct
-{
- KSALLOCATOR_FRAMING_EX Framing;
- ULONG AllocatedFrames;
- ULONG Reserved;
+typedef struct {
+ KSALLOCATOR_FRAMING_EX Framing;
+ ULONG AllocatedFrames;
+ ULONG Reserved;
} KSSTREAMALLOCATOR_STATUS_EX, *PKSSTREAMALLOCATOR_STATUS_EX;
-typedef struct
-{
- ULONG Size;
- ULONG TypeSpecificFlags;
- KSTIME PresentationTime;
- LONGLONG Duration;
- ULONG FrameExtent;
- ULONG DataUsed;
- PVOID Data;
- ULONG OptionsFlags;
+typedef struct {
+ ULONG Size;
+ ULONG TypeSpecificFlags;
+ KSTIME PresentationTime;
+ LONGLONG Duration;
+ ULONG FrameExtent;
+ ULONG DataUsed;
+ PVOID Data;
+ ULONG OptionsFlags;
#ifdef _WIN64
- ULONG Reserved;
+ ULONG Reserved;
#endif
} KSSTREAM_HEADER, *PKSSTREAM_HEADER;
/* ===============================================================
XP / DX8
*/
+
#if defined(_NTDDK_)
typedef struct _KSGATE KSGATE, *PKSGATE;
struct _KSGATE {
- LONG Count;
- PKSGATE NextGate;
+ LONG Count;
+ PKSGATE NextGate;
};
#ifndef _NTOS_
+_IRQL_requires_max_(HIGH_LEVEL)
static
void
__inline
KsGateTurnInputOn(
- IN PKSGATE Gate OPTIONAL)
+ _In_opt_ PKSGATE Gate)
{
while (Gate && (InterlockedIncrement(&Gate->Count) == 1))
{
}
}
+_IRQL_requires_max_(HIGH_LEVEL)
static
void
__inline
KsGateTurnInputOff(
- IN PKSGATE Gate OPTIONAL)
+ _In_opt_ PKSGATE Gate)
{
while (Gate && (InterlockedDecrement(&Gate->Count) == 0))
{
}
}
+_IRQL_requires_max_(HIGH_LEVEL)
static
BOOLEAN
__inline
KsGateGetStateUnsafe(
- IN PKSGATE Gate)
+ _In_ PKSGATE Gate)
{
ASSERT(Gate);
return((BOOLEAN)(Gate->Count > 0));
}
+_IRQL_requires_max_(HIGH_LEVEL)
static
BOOLEAN
__inline
KsGateCaptureThreshold(
- IN PKSGATE Gate)
+ _In_ PKSGATE Gate)
{
BOOLEAN captured;
return captured;
}
+_IRQL_requires_max_(HIGH_LEVEL)
static
void
__inline
KsGateInitialize(
- IN PKSGATE Gate,
- IN LONG InitialCount,
- IN PKSGATE NextGate OPTIONAL,
- IN BOOLEAN StateToPropagate
- )
+ _In_ PKSGATE Gate,
+ _In_ LONG InitialCount,
+ _In_opt_ PKSGATE NextGate,
+ _In_ BOOLEAN StateToPropagate)
{
ASSERT(Gate);
Gate->Count = InitialCount;
}
}
+_IRQL_requires_max_(HIGH_LEVEL)
static
void
__inline
KsGateInitializeAnd(
- IN PKSGATE AndGate,
- IN PKSGATE NextOrGate OPTIONAL)
+ _In_ PKSGATE AndGate,
+ _In_opt_ PKSGATE NextOrGate)
{
KsGateInitialize(AndGate,1,NextOrGate,TRUE);
}
+_IRQL_requires_max_(HIGH_LEVEL)
static
void
__inline
KsGateInitializeOr(
- IN PKSGATE OrGate,
- IN PKSGATE NextAndGate OPTIONAL)
+ _In_ PKSGATE OrGate,
+ _In_opt_ PKSGATE NextAndGate)
{
KsGateInitialize(OrGate,0,NextAndGate,FALSE);
}
+_IRQL_requires_max_(HIGH_LEVEL)
static
void
__inline
KsGateAddOnInputToAnd(
- IN PKSGATE AndGate)
+ _In_ PKSGATE AndGate)
{
UNREFERENCED_PARAMETER (AndGate);
}
+_IRQL_requires_max_(HIGH_LEVEL)
static
void
__inline
KsGateAddOffInputToAnd(
- IN PKSGATE AndGate)
+ _In_ PKSGATE AndGate)
{
KsGateTurnInputOff(AndGate);
}
+_IRQL_requires_max_(HIGH_LEVEL)
static
void
__inline
KsGateRemoveOnInputFromAnd(
- IN PKSGATE AndGate)
+ _In_ PKSGATE AndGate)
{
UNREFERENCED_PARAMETER (AndGate);
}
+_IRQL_requires_max_(HIGH_LEVEL)
static
void
__inline
KsGateRemoveOffInputFromAnd(
- IN PKSGATE AndGate)
+ _In_ PKSGATE AndGate)
{
KsGateTurnInputOn(AndGate);
}
+_IRQL_requires_max_(HIGH_LEVEL)
static
void
__inline
KsGateAddOnInputToOr(
- IN PKSGATE OrGate)
+ _In_ PKSGATE OrGate)
{
KsGateTurnInputOn(OrGate);
}
+_IRQL_requires_max_(HIGH_LEVEL)
static
void
__inline
KsGateAddOffInputToOr(
- IN PKSGATE OrGate)
+ _In_ PKSGATE OrGate)
{
UNREFERENCED_PARAMETER (OrGate);
}
+_IRQL_requires_max_(HIGH_LEVEL)
static
void
__inline
KsGateRemoveOnInputFromOr(
- IN PKSGATE OrGate)
+ _In_ PKSGATE OrGate)
{
KsGateTurnInputOff(OrGate);
}
+_IRQL_requires_max_(HIGH_LEVEL)
static
void
__inline
KsGateRemoveOffInputFromOr(
- IN PKSGATE OrGate)
+ _In_ PKSGATE OrGate)
{
UNREFERENCED_PARAMETER (OrGate);
}
+_IRQL_requires_max_(HIGH_LEVEL)
static
void
__inline
KsGateTerminateAnd(
- IN PKSGATE AndGate)
+ _In_ PKSGATE AndGate)
{
ASSERT(AndGate);
if (KsGateGetStateUnsafe(AndGate))
}
}
+_IRQL_requires_max_(HIGH_LEVEL)
static
void
__inline
KsGateTerminateOr(
- IN PKSGATE OrGate)
+ _In_ PKSGATE OrGate)
{
ASSERT(OrGate);
if (KsGateGetStateUnsafe(OrGate))
}
}
-#endif
-
+#endif /* !_NTOS_ */
struct _KSMAPPING {
- PHYSICAL_ADDRESS PhysicalAddress;
- ULONG ByteCount;
- ULONG Alignment;
+ PHYSICAL_ADDRESS PhysicalAddress;
+ ULONG ByteCount;
+ ULONG Alignment;
};
-#endif
+
+#endif /* _NTDDK_ */
typedef enum {
- KSSTREAM_POINTER_STATE_UNLOCKED = 0,
- KSSTREAM_POINTER_STATE_LOCKED
+ KSSTREAM_POINTER_STATE_UNLOCKED = 0,
+ KSSTREAM_POINTER_STATE_LOCKED
} KSSTREAM_POINTER_STATE;
typedef struct _KSPROCESSPIN_INDEXENTRY KSPROCESSPIN_INDEXENTRY, *PKSPROCESSPIN_INDEXENTRY;
-struct _KSSTREAM_POINTER_OFFSET
-{
+struct _KSSTREAM_POINTER_OFFSET {
#if defined(_NTDDK_)
- union {
- PUCHAR Data;
- PKSMAPPING Mappings;
- };
-#else
+ union {
PUCHAR Data;
+ PKSMAPPING Mappings;
+ };
+#else
+ PUCHAR Data;
#endif
#if !defined(_WIN64)
- PVOID Alignment;
+ PVOID Alignment;
#endif
- ULONG Count;
- ULONG Remaining;
+ ULONG Count;
+ ULONG Remaining;
};
+
#if defined(_NTDDK_)
-struct _KSSTREAM_POINTER
-{
- PVOID Context;
- PKSPIN Pin;
- PKSSTREAM_HEADER StreamHeader;
- PKSSTREAM_POINTER_OFFSET Offset;
- KSSTREAM_POINTER_OFFSET OffsetIn;
- KSSTREAM_POINTER_OFFSET OffsetOut;
+
+struct _KSSTREAM_POINTER {
+ PVOID Context;
+ PKSPIN Pin;
+ PKSSTREAM_HEADER StreamHeader;
+ PKSSTREAM_POINTER_OFFSET Offset;
+ KSSTREAM_POINTER_OFFSET OffsetIn;
+ KSSTREAM_POINTER_OFFSET OffsetOut;
};
-struct _KSPROCESSPIN
-{
- PKSPIN Pin;
- PKSSTREAM_POINTER StreamPointer;
- PKSPROCESSPIN InPlaceCounterpart;
- PKSPROCESSPIN DelegateBranch;
- PKSPROCESSPIN CopySource;
- PVOID Data;
- ULONG BytesAvailable;
- ULONG BytesUsed;
- ULONG Flags;
- BOOLEAN Terminate;
+struct _KSPROCESSPIN {
+ PKSPIN Pin;
+ PKSSTREAM_POINTER StreamPointer;
+ PKSPROCESSPIN InPlaceCounterpart;
+ PKSPROCESSPIN DelegateBranch;
+ PKSPROCESSPIN CopySource;
+ _Field_size_bytes_(BytesAvailable) PVOID Data;
+ ULONG BytesAvailable;
+ ULONG BytesUsed;
+ ULONG Flags;
+ BOOLEAN Terminate;
};
-struct _KSPROCESSPIN_INDEXENTRY
-{
- PKSPROCESSPIN* Pins;
- ULONG Count;
+struct _KSPROCESSPIN_INDEXENTRY {
+ _Field_size_(Count) PKSPROCESSPIN *Pins;
+ ULONG Count;
};
-#endif
+
+#endif /* _NTDDK_ */
/* ===============================================================
Device Dispatch
*/
-
-
#if defined(_NTDDK_)
typedef struct _KSFILTER_DISPATCH KSFILTER_DISPATCH, *PKSFILTER_DISPATCH;
typedef struct _KSFILTER_DESCRIPTOR KSFILTER_DESCRIPTOR, *PKSFILTER_DESCRIPTOR;
typedef struct _KSDEVICE_DESCRIPTOR KSDEVICE_DESCRIPTOR, *PKSDEVICE_DESCRIPTOR;
-typedef NTSTATUS (NTAPI *PFNKSDEVICECREATE)(
- IN PKSDEVICE Device);
-
-typedef NTSTATUS (NTAPI *PFNKSDEVICEPNPSTART)(
- IN PKSDEVICE Device,
- IN PIRP Irp,
- IN PCM_RESOURCE_LIST TranslatedResourceList OPTIONAL,
- IN PCM_RESOURCE_LIST UntranslatedResourceList OPTIONAL);
-
-typedef NTSTATUS (NTAPI *PFNKSDEVICE)(
- IN PKSDEVICE Device);
-
-typedef NTSTATUS (NTAPI *PFNKSDEVICEIRP)(
- IN PKSDEVICE Device,
- IN PIRP Irp);
-
-typedef VOID (NTAPI *PFNKSDEVICEIRPVOID)(
- IN PKSDEVICE Device,
- IN PIRP Irp);
-
-typedef NTSTATUS (NTAPI *PFNKSDEVICEQUERYCAPABILITIES)(
- IN PKSDEVICE Device,
- IN PIRP Irp,
- IN OUT PDEVICE_CAPABILITIES Capabilities);
-
-typedef NTSTATUS (NTAPI *PFNKSDEVICEQUERYPOWER)(
- IN PKSDEVICE Device,
- IN PIRP Irp,
- IN DEVICE_POWER_STATE DeviceTo,
- IN DEVICE_POWER_STATE DeviceFrom,
- IN SYSTEM_POWER_STATE SystemTo,
- IN SYSTEM_POWER_STATE SystemFrom,
- IN POWER_ACTION Action);
-
-typedef VOID (NTAPI *PFNKSDEVICESETPOWER)(
- IN PKSDEVICE Device,
- IN PIRP Irp,
- IN DEVICE_POWER_STATE To,
- IN DEVICE_POWER_STATE From);
+_IRQL_requires_max_(PASSIVE_LEVEL)
+typedef NTSTATUS
+(NTAPI *PFNKSDEVICECREATE)(
+ _In_ PKSDEVICE Device);
+
+_IRQL_requires_max_(PASSIVE_LEVEL)
+typedef NTSTATUS
+(NTAPI *PFNKSDEVICEPNPSTART)(
+ _In_ PKSDEVICE Device,
+ _In_ PIRP Irp,
+ _In_opt_ PCM_RESOURCE_LIST TranslatedResourceList,
+ _In_opt_ PCM_RESOURCE_LIST UntranslatedResourceList);
+
+_IRQL_requires_max_(PASSIVE_LEVEL)
+typedef NTSTATUS
+(NTAPI *PFNKSDEVICE)(
+ _In_ PKSDEVICE Device);
+
+_IRQL_requires_max_(PASSIVE_LEVEL)
+typedef NTSTATUS
+(NTAPI *PFNKSDEVICEIRP)(
+ _In_ PKSDEVICE Device,
+ _In_ PIRP Irp);
+
+_IRQL_requires_max_(PASSIVE_LEVEL)
+typedef VOID
+(NTAPI *PFNKSDEVICEIRPVOID)(
+ _In_ PKSDEVICE Device,
+ _In_ PIRP Irp);
+
+_IRQL_requires_max_(PASSIVE_LEVEL)
+typedef NTSTATUS
+(NTAPI *PFNKSDEVICEQUERYCAPABILITIES)(
+ _In_ PKSDEVICE Device,
+ _In_ PIRP Irp,
+ _Inout_ PDEVICE_CAPABILITIES Capabilities);
+
+_IRQL_requires_max_(PASSIVE_LEVEL)
+typedef NTSTATUS
+(NTAPI *PFNKSDEVICEQUERYPOWER)(
+ _In_ PKSDEVICE Device,
+ _In_ PIRP Irp,
+ _In_ DEVICE_POWER_STATE DeviceTo,
+ _In_ DEVICE_POWER_STATE DeviceFrom,
+ _In_ SYSTEM_POWER_STATE SystemTo,
+ _In_ SYSTEM_POWER_STATE SystemFrom,
+ _In_ POWER_ACTION Action);
+
+_IRQL_requires_max_(PASSIVE_LEVEL)
+typedef VOID
+(NTAPI *PFNKSDEVICESETPOWER)(
+ _In_ PKSDEVICE Device,
+ _In_ PIRP Irp,
+ _In_ DEVICE_POWER_STATE To,
+ _In_ DEVICE_POWER_STATE From);
typedef struct _KSDEVICE_DISPATCH {
- PFNKSDEVICECREATE Add;
- PFNKSDEVICEPNPSTART Start;
- PFNKSDEVICE PostStart;
- PFNKSDEVICEIRP QueryStop;
- PFNKSDEVICEIRPVOID CancelStop;
- PFNKSDEVICEIRPVOID Stop;
- PFNKSDEVICEIRP QueryRemove;
- PFNKSDEVICEIRPVOID CancelRemove;
- PFNKSDEVICEIRPVOID Remove;
- PFNKSDEVICEQUERYCAPABILITIES QueryCapabilities;
- PFNKSDEVICEIRPVOID SurpriseRemoval;
- PFNKSDEVICEQUERYPOWER QueryPower;
- PFNKSDEVICESETPOWER SetPower;
- PFNKSDEVICEIRP QueryInterface;
-}KSDEVICE_DISPATCH, *PKSDEVICE_DISPATCH;
+ PFNKSDEVICECREATE Add;
+ PFNKSDEVICEPNPSTART Start;
+ PFNKSDEVICE PostStart;
+ PFNKSDEVICEIRP QueryStop;
+ PFNKSDEVICEIRPVOID CancelStop;
+ PFNKSDEVICEIRPVOID Stop;
+ PFNKSDEVICEIRP QueryRemove;
+ PFNKSDEVICEIRPVOID CancelRemove;
+ PFNKSDEVICEIRPVOID Remove;
+ PFNKSDEVICEQUERYCAPABILITIES QueryCapabilities;
+ PFNKSDEVICEIRPVOID SurpriseRemoval;
+ PFNKSDEVICEQUERYPOWER QueryPower;
+ PFNKSDEVICESETPOWER SetPower;
+ PFNKSDEVICEIRP QueryInterface;
+} KSDEVICE_DISPATCH, *PKSDEVICE_DISPATCH;
#if (NTDDI_VERSION >= NTDDI_LONGHORN)
#define KSDEVICE_DESCRIPTOR_VERSION_2 (0x110)
-#define MIN_DEV_VER_FOR_FLAGS (0x110)
+#define MIN_DEV_VER_FOR_FLAGS (0x110)
#endif
-struct _KSDEVICE
-{
- const KSDEVICE_DESCRIPTOR* Descriptor;
- KSOBJECT_BAG Bag;
- PVOID Context;
- PDEVICE_OBJECT FunctionalDeviceObject;
- PDEVICE_OBJECT PhysicalDeviceObject;
- PDEVICE_OBJECT NextDeviceObject;
- BOOLEAN Started;
- SYSTEM_POWER_STATE SystemPowerState;
- DEVICE_POWER_STATE DevicePowerState;
+struct _KSDEVICE {
+ const KSDEVICE_DESCRIPTOR* Descriptor;
+ KSOBJECT_BAG Bag;
+ PVOID Context;
+ PDEVICE_OBJECT FunctionalDeviceObject;
+ PDEVICE_OBJECT PhysicalDeviceObject;
+ PDEVICE_OBJECT NextDeviceObject;
+ BOOLEAN Started;
+ SYSTEM_POWER_STATE SystemPowerState;
+ DEVICE_POWER_STATE DevicePowerState;
};
-#endif
+
+#endif /* _NTDDK_ */
/* ===============================================================
Filter Dispatch
*/
+
#if defined(_NTDDK_)
-struct _KSFILTER
-{
- const KSFILTER_DESCRIPTOR* Descriptor;
- KSOBJECT_BAG Bag;
- PVOID Context;
+
+struct _KSFILTER {
+ const KSFILTER_DESCRIPTOR* Descriptor;
+ KSOBJECT_BAG Bag;
+ PVOID Context;
};
-typedef
-void
+_IRQL_requires_max_(PASSIVE_LEVEL)
+typedef void
(NTAPI *PFNKSFILTERPOWER)(
- IN PKSFILTER Filter,
- IN DEVICE_POWER_STATE State
- );
-
-typedef NTSTATUS (NTAPI *PFNKSFILTERIRP)(
- IN PKSFILTER Filter,
- IN PIRP Irp);
-
-typedef NTSTATUS (NTAPI *PFNKSFILTERPROCESS)(
- IN PKSFILTER Filter,
- IN PKSPROCESSPIN_INDEXENTRY ProcessPinsIndex);
-
-typedef NTSTATUS (NTAPI *PFNKSFILTERVOID)(
- IN PKSFILTER Filter);
-
-struct _KSFILTER_DISPATCH
-{
- PFNKSFILTERIRP Create;
- PFNKSFILTERIRP Close;
- PFNKSFILTERPROCESS Process;
- PFNKSFILTERVOID Reset;
+ _In_ PKSFILTER Filter,
+ _In_ DEVICE_POWER_STATE State);
+
+_IRQL_requires_max_(PASSIVE_LEVEL)
+typedef NTSTATUS
+(NTAPI *PFNKSFILTERIRP)(
+ _In_ PKSFILTER Filter,
+ _In_ PIRP Irp);
+
+typedef NTSTATUS
+(NTAPI *PFNKSFILTERPROCESS)(
+ _In_ PKSFILTER Filter,
+ _In_ PKSPROCESSPIN_INDEXENTRY ProcessPinsIndex);
+
+_IRQL_requires_max_(PASSIVE_LEVEL)
+typedef NTSTATUS
+(NTAPI *PFNKSFILTERVOID)(
+ _In_ PKSFILTER Filter);
+
+struct _KSFILTER_DISPATCH {
+ PFNKSFILTERIRP Create;
+ PFNKSFILTERIRP Close;
+ PFNKSFILTERPROCESS Process;
+ PFNKSFILTERVOID Reset;
};
-struct _KSNODE_DESCRIPTOR
-{
- const KSAUTOMATION_TABLE* AutomationTable;
- const GUID* Type;
- const GUID* Name;
+struct _KSNODE_DESCRIPTOR {
+ const KSAUTOMATION_TABLE *AutomationTable;
+ const GUID *Type;
+ const GUID *Name;
#if !defined(_WIN64)
- PVOID Alignment;
+ PVOID Alignment;
#endif
};
-struct _KSFILTER_DESCRIPTOR
-{
- const KSFILTER_DISPATCH* Dispatch;
- const KSAUTOMATION_TABLE* AutomationTable;
- ULONG Version;
- ULONG Flags;
- const GUID* ReferenceGuid;
- ULONG PinDescriptorsCount;
- ULONG PinDescriptorSize;
- const KSPIN_DESCRIPTOR_EX* PinDescriptors;
- ULONG CategoriesCount;
- const GUID* Categories;
- ULONG NodeDescriptorsCount;
- ULONG NodeDescriptorSize;
- const KSNODE_DESCRIPTOR* NodeDescriptors;
- ULONG ConnectionsCount;
- const KSTOPOLOGY_CONNECTION* Connections;
- const KSCOMPONENTID* ComponentId;
+struct _KSFILTER_DESCRIPTOR {
+ const KSFILTER_DISPATCH *Dispatch;
+ const KSAUTOMATION_TABLE *AutomationTable;
+ ULONG Version;
+ ULONG Flags;
+ const GUID *ReferenceGuid;
+ ULONG PinDescriptorsCount;
+ ULONG PinDescriptorSize;
+ _Field_size_bytes_(PinDescriptorsCount * PinDescriptorSize) const KSPIN_DESCRIPTOR_EX *PinDescriptors;
+ ULONG CategoriesCount;
+ _Field_size_(CategoriesCount) const GUID *Categories;
+ ULONG NodeDescriptorsCount;
+ ULONG NodeDescriptorSize;
+ _Field_size_bytes_(NodeDescriptorsCount * NodeDescriptorSize) const KSNODE_DESCRIPTOR *NodeDescriptors;
+ ULONG ConnectionsCount;
+ _Field_size_(ConnectionsCount) const KSTOPOLOGY_CONNECTION *Connections;
+ const KSCOMPONENTID *ComponentId;
};
#define KSFILTER_DESCRIPTOR_VERSION ((ULONG)-1)
-struct _KSDEVICE_DESCRIPTOR
-{
- const KSDEVICE_DISPATCH* Dispatch;
- ULONG FilterDescriptorsCount;
- const KSFILTER_DESCRIPTOR*const* FilterDescriptors;
- ULONG Version;
- ULONG Flags;
+struct _KSDEVICE_DESCRIPTOR {
+ const KSDEVICE_DISPATCH *Dispatch;
+ ULONG FilterDescriptorsCount;
+ _Field_size_(FilterDescriptorsCount) const KSFILTER_DESCRIPTOR * const *FilterDescriptors;
+ ULONG Version;
+ ULONG Flags;
};
struct _KSFILTERFACTORY {
- const KSFILTER_DESCRIPTOR* FilterDescriptor;
- KSOBJECT_BAG Bag;
- PVOID Context;
+ const KSFILTER_DESCRIPTOR* FilterDescriptor;
+ KSOBJECT_BAG Bag;
+ PVOID Context;
};
#define DEFINE_KSFILTER_DESCRIPTOR(descriptor)\
0,\
NULL
-#endif
+#endif /* _NTDDK_ */
+
/* ===============================================================
Minidriver Callbacks
*/
+
#if defined(_NTDDK_)
-typedef NTSTATUS (NTAPI *KStrMethodHandler)(
- IN PIRP Irp,
- IN PKSIDENTIFIER Request,
- IN OUT PVOID Data);
-
-typedef NTSTATUS (NTAPI *KStrSupportHandler)(
- IN PIRP Irp,
- IN PKSIDENTIFIER Request,
- IN OUT PVOID Data);
+
+typedef NTSTATUS
+(NTAPI *KStrMethodHandler)(
+ IN PIRP Irp,
+ IN PKSIDENTIFIER Request,
+ IN OUT PVOID Data);
+
+typedef NTSTATUS
+(NTAPI *KStrSupportHandler)(
+ IN PIRP Irp,
+ IN PKSIDENTIFIER Request,
+ IN OUT PVOID Data);
+
#endif
/* ===============================================================
Allocator Functions
*/
+
#if defined(_NTDDK_)
-KSDDKAPI NTSTATUS NTAPI
+
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+NTSTATUS
+NTAPI
KsCreateAllocator(
- IN HANDLE ConnectionHandle,
- IN PKSALLOCATOR_FRAMING AllocatorFraming,
- OUT PHANDLE AllocatorHandle);
+ _In_ HANDLE ConnectionHandle,
+ _In_ PKSALLOCATOR_FRAMING AllocatorFraming,
+ _Out_ PHANDLE AllocatorHandle);
-KSDDKAPI NTSTATUS NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+NTSTATUS
+NTAPI
KsCreateDefaultAllocator(
- IN PIRP Irp);
+ _In_ PIRP Irp);
-KSDDKAPI NTSTATUS NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+NTSTATUS
+NTAPI
KsValidateAllocatorCreateRequest(
- IN PIRP Irp,
- OUT PKSALLOCATOR_FRAMING* AllocatorFraming);
+ _In_ PIRP Irp,
+ _Out_ PKSALLOCATOR_FRAMING *AllocatorFraming);
-KSDDKAPI NTSTATUS NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+NTSTATUS
+NTAPI
KsCreateDefaultAllocatorEx(
- IN PIRP Irp,
- IN PVOID InitializeContext OPTIONAL,
- IN PFNKSDEFAULTALLOCATE DefaultAllocate OPTIONAL,
- IN PFNKSDEFAULTFREE DefaultFree OPTIONAL,
- IN PFNKSINITIALIZEALLOCATOR InitializeAllocator OPTIONAL,
- IN PFNKSDELETEALLOCATOR DeleteAllocator OPTIONAL);
-
-KSDDKAPI NTSTATUS NTAPI
+ _In_ PIRP Irp,
+ _In_opt_ PVOID InitializeContext,
+ _In_opt_ PFNKSDEFAULTALLOCATE DefaultAllocate,
+ _In_opt_ PFNKSDEFAULTFREE DefaultFree,
+ _In_opt_ PFNKSINITIALIZEALLOCATOR InitializeAllocator,
+ _In_opt_ PFNKSDELETEALLOCATOR DeleteAllocator);
+
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+NTSTATUS
+NTAPI
KsValidateAllocatorFramingEx(
- IN PKSALLOCATOR_FRAMING_EX Framing,
- IN ULONG BufferSize,
- IN const KSALLOCATOR_FRAMING_EX* PinFraming);
-#endif
+ _In_ PKSALLOCATOR_FRAMING_EX Framing,
+ _In_ ULONG BufferSize,
+ _In_ const KSALLOCATOR_FRAMING_EX *PinFraming);
+
+#endif /* _NTDDK_ */
/* ===============================================================
Clock Functions
*/
-#if defined(_NTDDK_)
-typedef BOOLEAN (NTAPI *PFNKSSETTIMER)(
- IN PVOID Context,
- IN PKTIMER Timer,
- IN LARGE_INTEGER DueTime,
- IN PKDPC Dpc);
-typedef BOOLEAN (NTAPI *PFNKSCANCELTIMER)(
- IN PVOID Context,
- IN PKTIMER Timer);
-
-typedef LONGLONG (FASTCALL *PFNKSCORRELATEDTIME)(
- IN PVOID Context,
- OUT PLONGLONG SystemTime);
+#if defined(_NTDDK_)
-KSDDKAPI NTSTATUS NTAPI
+_IRQL_requires_max_(DISPATCH_LEVEL)
+typedef BOOLEAN
+(NTAPI *PFNKSSETTIMER)(
+ _In_ PVOID Context,
+ _In_ PKTIMER Timer,
+ _In_ LARGE_INTEGER DueTime,
+ _In_ PKDPC Dpc);
+
+_IRQL_requires_max_(DISPATCH_LEVEL)
+typedef BOOLEAN
+(NTAPI *PFNKSCANCELTIMER)(
+ _In_ PVOID Context,
+ _In_ PKTIMER Timer);
+
+typedef LONGLONG
+(FASTCALL *PFNKSCORRELATEDTIME)(
+ _In_ PVOID Context,
+ _Out_ PLONGLONG SystemTime);
+
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+NTSTATUS
+NTAPI
KsCreateClock(
- IN HANDLE ConnectionHandle,
- IN PKSCLOCK_CREATE ClockCreate,
- OUT PHANDLE ClockHandle);
+ _In_ HANDLE ConnectionHandle,
+ _In_ PKSCLOCK_CREATE ClockCreate,
+ _Out_ PHANDLE ClockHandle);
-KSDDKAPI NTSTATUS NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+NTSTATUS
+NTAPI
KsCreateDefaultClock(
- IN PIRP Irp,
- IN PKSDEFAULTCLOCK DefaultClock);
+ _In_ PIRP Irp,
+ _In_ PKSDEFAULTCLOCK DefaultClock);
-KSDDKAPI NTSTATUS NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+NTSTATUS
+NTAPI
KsAllocateDefaultClock(
- OUT PKSDEFAULTCLOCK* DefaultClock);
+ _Out_ PKSDEFAULTCLOCK *DefaultClock);
-KSDDKAPI NTSTATUS NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+NTSTATUS
+NTAPI
KsAllocateDefaultClockEx(
- OUT PKSDEFAULTCLOCK* DefaultClock,
- IN PVOID Context OPTIONAL,
- IN PFNKSSETTIMER SetTimer OPTIONAL,
- IN PFNKSCANCELTIMER CancelTimer OPTIONAL,
- IN PFNKSCORRELATEDTIME CorrelatedTime OPTIONAL,
- IN const KSRESOLUTION* Resolution OPTIONAL,
- IN ULONG Flags);
-
-KSDDKAPI VOID NTAPI
+ _Out_ PKSDEFAULTCLOCK *DefaultClock,
+ _In_opt_ PVOID Context,
+ _In_opt_ PFNKSSETTIMER SetTimer,
+ _In_opt_ PFNKSCANCELTIMER CancelTimer,
+ _In_opt_ PFNKSCORRELATEDTIME CorrelatedTime,
+ _In_opt_ const KSRESOLUTION *Resolution,
+ _In_ ULONG Flags);
+
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+VOID
+NTAPI
KsFreeDefaultClock(
- IN PKSDEFAULTCLOCK DefaultClock);
+ _In_ PKSDEFAULTCLOCK DefaultClock);
-KSDDKAPI NTSTATUS NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+NTSTATUS
+NTAPI
KsValidateClockCreateRequest(
- IN PIRP Irp,
- OUT PKSCLOCK_CREATE* ClockCreate);
+ _In_ PIRP Irp,
+ _Outptr_ PKSCLOCK_CREATE *ClockCreate);
-KSDDKAPI KSSTATE NTAPI
+_IRQL_requires_max_(DISPATCH_LEVEL)
+KSDDKAPI
+KSSTATE
+NTAPI
KsGetDefaultClockState(
- IN PKSDEFAULTCLOCK DefaultClock);
+ _In_ PKSDEFAULTCLOCK DefaultClock);
-KSDDKAPI VOID NTAPI
+_IRQL_requires_max_(DISPATCH_LEVEL)
+KSDDKAPI
+VOID
+NTAPI
KsSetDefaultClockState(
- IN PKSDEFAULTCLOCK DefaultClock,
- IN KSSTATE State);
+ _In_ PKSDEFAULTCLOCK DefaultClock,
+ _In_ KSSTATE State);
-KSDDKAPI LONGLONG NTAPI
+_IRQL_requires_max_(DISPATCH_LEVEL)
+KSDDKAPI
+LONGLONG
+NTAPI
KsGetDefaultClockTime(
- IN PKSDEFAULTCLOCK DefaultClock);
+ _In_ PKSDEFAULTCLOCK DefaultClock);
-KSDDKAPI VOID NTAPI
+_IRQL_requires_max_(DISPATCH_LEVEL)
+KSDDKAPI
+VOID
+NTAPI
KsSetDefaultClockTime(
- IN PKSDEFAULTCLOCK DefaultClock,
- IN LONGLONG Time);
-#endif
+ _In_ PKSDEFAULTCLOCK DefaultClock,
+ _In_ LONGLONG Time);
+
+#endif /* _NTDDK_ */
/* ===============================================================
Method Functions
/* Method sets - TODO: Make into macros! */
#if defined(_NTDDK_)
+
#if 0
+
VOID
KSMETHOD_SET_IRP_STORAGE(
- IN IRP Irp);
+ IN IRP Irp);
VOID
KSMETHOD_ITEM_IRP_STORAGE(
- IN IRP Irp);
+ IN IRP Irp);
VOID
KSMETHOD_TYPE_IRP_STORAGE(
- IN IRP Irp);
+ IN IRP Irp);
+
#endif
-KSDDKAPI NTSTATUS NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+NTSTATUS
+NTAPI
KsMethodHandler(
- IN PIRP Irp,
- IN ULONG MethodSetsCount,
- IN PKSMETHOD_SET MethodSet);
+ _In_ PIRP Irp,
+ _In_ ULONG MethodSetsCount,
+ _In_reads_(MethodSetsCount) const PKSMETHOD_SET MethodSet);
-KSDDKAPI NTSTATUS NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+NTSTATUS
+NTAPI
KsMethodHandlerWithAllocator(
- IN PIRP Irp,
- IN ULONG MethodSetsCount,
- IN PKSMETHOD_SET MethodSet,
- IN PFNKSALLOCATOR Allocator OPTIONAL,
- IN ULONG MethodItemSize OPTIONAL);
+ _In_ PIRP Irp,
+ _In_ ULONG MethodSetsCount,
+ _In_reads_(MethodSetsCount) const PKSMETHOD_SET MethodSet,
+ _In_opt_ PFNKSALLOCATOR Allocator,
+ _In_opt_ ULONG MethodItemSize);
-KSDDKAPI BOOLEAN NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+BOOLEAN
+NTAPI
KsFastMethodHandler(
- IN PFILE_OBJECT FileObject,
- IN PKSMETHOD UNALIGNED Method,
- IN ULONG MethodLength,
- IN OUT PVOID UNALIGNED Data,
- IN ULONG DataLength,
- OUT PIO_STATUS_BLOCK IoStatus,
- IN ULONG MethodSetsCount,
- IN const KSMETHOD_SET* MethodSet);
-#endif
+ _In_ PFILE_OBJECT FileObject,
+ _In_reads_bytes_(MethodLength) PKSMETHOD UNALIGNED Method,
+ _In_ ULONG MethodLength,
+ _Inout_updates_bytes_(DataLength) PVOID UNALIGNED Data,
+ _In_ ULONG DataLength,
+ _Out_ PIO_STATUS_BLOCK IoStatus,
+ _In_ ULONG MethodSetsCount,
+ _In_reads_(MethodSetsCount) const KSMETHOD_SET *MethodSet);
+
+#endif /* _NTDDK_ */
/* ===============================================================
Property Functions
*/
+
#if defined(_NTDDK_)
-KSDDKAPI NTSTATUS NTAPI
+
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+NTSTATUS
+NTAPI
KsPropertyHandler(
- IN PIRP Irp,
- IN ULONG PropertySetsCount,
- IN const KSPROPERTY_SET* PropertySet);
+ _In_ PIRP Irp,
+ _In_ ULONG PropertySetsCount,
+ _In_reads_(PropertySetsCount) const KSPROPERTY_SET *PropertySet);
-KSDDKAPI NTSTATUS NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+NTSTATUS
+NTAPI
KsPropertyHandlerWithAllocator(
- IN PIRP Irp,
- IN ULONG PropertySetsCount,
- IN PKSPROPERTY_SET PropertySet,
- IN PFNKSALLOCATOR Allocator OPTIONAL,
- IN ULONG PropertyItemSize OPTIONAL);
+ _In_ PIRP Irp,
+ _In_ ULONG PropertySetsCount,
+ _In_reads_(PropertySetsCount) const PKSPROPERTY_SET PropertySet,
+ _In_opt_ PFNKSALLOCATOR Allocator,
+ _In_opt_ ULONG PropertyItemSize);
-KSDDKAPI NTSTATUS NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+NTSTATUS
+NTAPI
KsUnserializeObjectPropertiesFromRegistry(
- IN PFILE_OBJECT FileObject,
- IN HANDLE ParentKey OPTIONAL,
- IN PUNICODE_STRING RegistryPath OPTIONAL);
+ _In_ PFILE_OBJECT FileObject,
+ _In_opt_ HANDLE ParentKey,
+ _In_opt_ PUNICODE_STRING RegistryPath);
-KSDDKAPI BOOLEAN NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+BOOLEAN
+NTAPI
KsFastPropertyHandler(
- IN PFILE_OBJECT FileObject,
- IN PKSPROPERTY UNALIGNED Property,
- IN ULONG PropertyLength,
- IN OUT PVOID UNALIGNED Data,
- IN ULONG DataLength,
- OUT PIO_STATUS_BLOCK IoStatus,
- IN ULONG PropertySetsCount,
- IN const KSPROPERTY_SET* PropertySet);
-#endif
+ _In_ PFILE_OBJECT FileObject,
+ _In_reads_bytes_(PropertyLength) PKSPROPERTY UNALIGNED Property,
+ _In_ ULONG PropertyLength,
+ _In_reads_bytes_(DataLength) PVOID UNALIGNED Data,
+ _In_ ULONG DataLength,
+ _Out_ PIO_STATUS_BLOCK IoStatus,
+ _In_ ULONG PropertySetsCount,
+ _In_reads_(PropertySetsCount) const KSPROPERTY_SET *PropertySet);
+
+#endif /* _NTDDK_ */
/* ===============================================================
Event Functions
#define KSPROBE_SYSTEMADDRESS 0x00000040
#define KSPROBE_MODIFY 0x00000200
#define KSPROBE_STREAMWRITEMODIFY (KSPROBE_MODIFY | KSPROBE_STREAMWRITE)
-#define KSPROBE_ALLOWFORMATCHANGE 0x00000080
+#define KSPROBE_ALLOWFORMATCHANGE 0x00000080
-#define KSSTREAM_READ KSPROBE_STREAMREAD
-#define KSSTREAM_WRITE KSPROBE_STREAMWRITE
-#define KSSTREAM_PAGED_DATA 0x00000000
-#define KSSTREAM_NONPAGED_DATA 0x00000100
-#define KSSTREAM_SYNCHRONOUS 0x00001000
+#define KSSTREAM_READ KSPROBE_STREAMREAD
+#define KSSTREAM_WRITE KSPROBE_STREAMWRITE
+#define KSSTREAM_PAGED_DATA 0x00000000
+#define KSSTREAM_NONPAGED_DATA 0x00000100
+#define KSSTREAM_SYNCHRONOUS 0x00001000
#define KSSTREAM_FAILUREEXCEPTION 0x00002000
-typedef
-BOOLEAN
+_IRQL_requires_max_(DISPATCH_LEVEL)
+typedef BOOLEAN
(NTAPI *PFNKSGENERATEEVENTCALLBACK)(
- IN PVOID Context,
- IN PKSEVENT_ENTRY EventEntry
- );
+ _In_ PVOID Context,
+ _In_ PKSEVENT_ENTRY EventEntry);
-KSDDKAPI NTSTATUS NTAPI
+KSDDKAPI
+NTSTATUS
+NTAPI
KsGenerateEvent(
- IN PKSEVENT_ENTRY EntryEvent);
+ _In_ PKSEVENT_ENTRY EntryEvent);
-KSDDKAPI void NTAPI
+_IRQL_requires_max_(DISPATCH_LEVEL)
+KSDDKAPI
+void
+NTAPI
KsGenerateEvents(
- IN PVOID Object,
- IN const GUID* EventSet OPTIONAL,
- IN ULONG EventId,
- IN ULONG DataSize,
- IN PVOID Data OPTIONAL,
- IN PFNKSGENERATEEVENTCALLBACK CallBack OPTIONAL,
- IN PVOID CallBackContext OPTIONAL
- );
-
-
-KSDDKAPI NTSTATUS NTAPI
+ _In_ PVOID Object,
+ _In_opt_ const GUID *EventSet,
+ _In_ ULONG EventId,
+ _In_ ULONG DataSize,
+ _In_reads_bytes_opt_(DataSize) PVOID Data,
+ _In_opt_ PFNKSGENERATEEVENTCALLBACK CallBack,
+ _In_opt_ PVOID CallBackContext);
+
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+NTSTATUS
+NTAPI
KsEnableEventWithAllocator(
- IN PIRP Irp,
- IN ULONG EventSetsCount,
- IN PKSEVENT_SET EventSet,
- IN OUT PLIST_ENTRY EventsList OPTIONAL,
- IN KSEVENTS_LOCKTYPE EventsFlags OPTIONAL,
- IN PVOID EventsLock OPTIONAL,
- IN PFNKSALLOCATOR Allocator OPTIONAL,
- IN ULONG EventItemSize OPTIONAL);
-
-KSDDKAPI NTSTATUS NTAPI
+ _In_ PIRP Irp,
+ _In_ ULONG EventSetsCount,
+ _In_reads_(EventSetsCount) const PKSEVENT_SET EventSet,
+ _Inout_opt_ PLIST_ENTRY EventsList,
+ _In_opt_ KSEVENTS_LOCKTYPE EventsFlags,
+ _In_opt_ PVOID EventsLock,
+ _In_opt_ PFNKSALLOCATOR Allocator,
+ _In_opt_ ULONG EventItemSize);
+
+KSDDKAPI
+NTSTATUS
+NTAPI
KsGenerateDataEvent(
- IN PKSEVENT_ENTRY EventEntry,
- IN ULONG DataSize,
- IN PVOID Data);
+ _In_ PKSEVENT_ENTRY EventEntry,
+ _In_ ULONG DataSize,
+ _In_reads_bytes_(DataSize) PVOID Data);
-KSDDKAPI NTSTATUS NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+NTSTATUS
+NTAPI
KsEnableEvent(
- IN PIRP Irp,
- IN ULONG EventSetsCount,
- IN KSEVENT_SET* EventSet,
- IN OUT PLIST_ENTRY EventsList OPTIONAL,
- IN KSEVENTS_LOCKTYPE EventsFlags OPTIONAL,
- IN PVOID EventsLock OPTIONAL);
-
-KSDDKAPI VOID NTAPI
+ _In_ PIRP Irp,
+ _In_ ULONG EventSetsCount,
+ _In_reads_(EventSetsCount) KSEVENT_SET *EventSet,
+ _Inout_opt_ PLIST_ENTRY EventsList,
+ _In_opt_ KSEVENTS_LOCKTYPE EventsFlags,
+ _In_opt_ PVOID EventsLock);
+
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+VOID
+NTAPI
KsDiscardEvent(
- IN PKSEVENT_ENTRY EventEntry);
+ _In_ PKSEVENT_ENTRY EventEntry);
-KSDDKAPI NTSTATUS NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+NTSTATUS
+NTAPI
KsDisableEvent(
- IN PIRP Irp,
- IN OUT PLIST_ENTRY EventsList,
- IN KSEVENTS_LOCKTYPE EventsFlags,
- IN PVOID EventsLock);
+ _In_ PIRP Irp,
+ _Inout_ PLIST_ENTRY EventsList,
+ _In_ KSEVENTS_LOCKTYPE EventsFlags,
+ _In_ PVOID EventsLock);
-KSDDKAPI VOID NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+VOID
+NTAPI
KsFreeEventList(
- IN PFILE_OBJECT FileObject,
- IN OUT PLIST_ENTRY EventsList,
- IN KSEVENTS_LOCKTYPE EVentsFlags,
- IN PVOID EventsLock);
+ _In_ PFILE_OBJECT FileObject,
+ _Inout_ PLIST_ENTRY EventsList,
+ _In_ KSEVENTS_LOCKTYPE EventsFlags,
+ _In_ PVOID EventsLock);
/* ===============================================================
Topology Functions
*/
-KSDDKAPI NTSTATUS NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+NTSTATUS
+NTAPI
KsValidateTopologyNodeCreateRequest(
- IN PIRP Irp,
- IN PKSTOPOLOGY Topology,
- OUT PKSNODE_CREATE* NodeCreate);
+ _In_ PIRP Irp,
+ _In_ PKSTOPOLOGY Topology,
+ _Out_ PKSNODE_CREATE *NodeCreate);
-KSDDKAPI NTSTATUS NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+NTSTATUS
+NTAPI
KsCreateTopologyNode(
- IN HANDLE ParentHandle,
- IN PKSNODE_CREATE NodeCreate,
- IN ACCESS_MASK DesiredAccess,
- OUT PHANDLE NodeHandle);
+ _In_ HANDLE ParentHandle,
+ _In_ PKSNODE_CREATE NodeCreate,
+ _In_ ACCESS_MASK DesiredAccess,
+ _Out_ PHANDLE NodeHandle);
-KSDDKAPI NTSTATUS NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+NTSTATUS
+NTAPI
KsTopologyPropertyHandler(
- IN PIRP Irp,
- IN PKSPROPERTY Property,
- IN OUT PVOID Data,
- IN const KSTOPOLOGY* Topology);
-
-
+ _In_ PIRP Irp,
+ _In_ PKSPROPERTY Property,
+ _Inout_ PVOID Data,
+ _In_ const KSTOPOLOGY *Topology);
/* ===============================================================
Connectivity Functions
*/
-KSDDKAPI NTSTATUS NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+NTSTATUS
+NTAPI
KsCreatePin(
- IN HANDLE FilterHandle,
- IN PKSPIN_CONNECT Connect,
- IN ACCESS_MASK DesiredAccess,
- OUT PHANDLE ConnectionHandle);
+ _In_ HANDLE FilterHandle,
+ _In_ PKSPIN_CONNECT Connect,
+ _In_ ACCESS_MASK DesiredAccess,
+ _Out_ PHANDLE ConnectionHandle);
-KSDDKAPI NTSTATUS NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+NTSTATUS
+NTAPI
KsValidateConnectRequest(
- IN PIRP Irp,
- IN ULONG DescriptorsCount,
- IN KSPIN_DESCRIPTOR* Descriptor,
- OUT PKSPIN_CONNECT* Connect);
+ _In_ PIRP Irp,
+ _In_ ULONG DescriptorsCount,
+ _In_reads_(DescriptorsCount) KSPIN_DESCRIPTOR *Descriptor,
+ _Out_ PKSPIN_CONNECT *Connect);
-KSDDKAPI NTSTATUS NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+NTSTATUS
+NTAPI
KsPinPropertyHandler(
- IN PIRP Irp,
- IN PKSPROPERTY Property,
- IN OUT PVOID Data,
- IN ULONG DescriptorsCount,
- IN const KSPIN_DESCRIPTOR* Descriptor);
-
-KSDDKAPI NTSTATUS NTAPI
+ _In_ PIRP Irp,
+ _In_ PKSPROPERTY Property,
+ _Inout_ PVOID Data,
+ _In_ ULONG DescriptorsCount,
+ _In_reads_(DescriptorsCount) const KSPIN_DESCRIPTOR *Descriptor);
+
+_Must_inspect_result_
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+NTSTATUS
+NTAPI
KsPinDataIntersection(
- IN PIRP Irp,
- IN PKSP_PIN Pin,
- OUT PVOID Data,
- IN ULONG DescriptorsCount,
- IN const KSPIN_DESCRIPTOR* Descriptor,
- IN PFNKSINTERSECTHANDLER IntersectHandler);
-
-KSDDKAPI NTSTATUS NTAPI
+ _In_ PIRP Irp,
+ _In_ PKSP_PIN Pin,
+ _Out_opt_ PVOID Data,
+ _In_ ULONG DescriptorsCount,
+ _In_reads_(DescriptorsCount) const KSPIN_DESCRIPTOR *Descriptor,
+ _In_ PFNKSINTERSECTHANDLER IntersectHandler);
+
+_Must_inspect_result_
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+NTSTATUS
+NTAPI
KsPinDataIntersectionEx(
- IN PIRP Irp,
- IN PKSP_PIN Pin,
- OUT PVOID Data,
- IN ULONG DescriptorsCount,
- IN const KSPIN_DESCRIPTOR* Descriptor,
- IN ULONG DescriptorSize,
- IN PFNKSINTERSECTHANDLEREX IntersectHandler OPTIONAL,
- IN PVOID HandlerContext OPTIONAL);
-
-KSDDKAPI PKSFILTER NTAPI
+ _In_ PIRP Irp,
+ _In_ PKSP_PIN Pin,
+ _Out_ PVOID Data,
+ _In_ ULONG DescriptorsCount,
+ _In_reads_bytes_(DescriptorsCount * DescriptorSize) const KSPIN_DESCRIPTOR *Descriptor,
+ _In_ ULONG DescriptorSize,
+ _In_opt_ PFNKSINTERSECTHANDLEREX IntersectHandler,
+ _In_opt_ PVOID HandlerContext);
+
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+PKSFILTER
+NTAPI
KsPinGetParentFilter(
- IN PKSPIN Pin
- );
+ _In_ PKSPIN Pin);
-KSDDKAPI PKSPIN NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+PKSPIN
+NTAPI
KsPinGetNextSiblingPin(
- IN PKSPIN Pin
- );
-
+ _In_ PKSPIN Pin);
/* Does this belong here? */
-KSDDKAPI NTSTATUS NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+NTSTATUS
+NTAPI
KsHandleSizedListQuery(
- IN PIRP Irp,
- IN ULONG DataItemsCount,
- IN ULONG DataItemSize,
- IN const VOID* DataItems);
-
+ _In_ PIRP Irp,
+ _In_ ULONG DataItemsCount,
+ _In_ ULONG DataItemSize,
+ _In_reads_bytes_(DataItemsCount * DataItemSize) const VOID *DataItems);
/* ===============================================================
IRP Helper Functions
*/
-typedef NTSTATUS (NTAPI *PFNKSIRPLISTCALLBACK)(
- IN PIRP Irp,
- IN PVOID Context);
+_IRQL_requires_max_(DISPATCH_LEVEL)
+typedef NTSTATUS
+(NTAPI *PFNKSIRPLISTCALLBACK)(
+ _In_ PIRP Irp,
+ _In_ PVOID Context);
-KSDDKAPI NTSTATUS NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+NTSTATUS
+NTAPI
KsAcquireResetValue(
- IN PIRP Irp,
- OUT KSRESET* ResetValue);
+ _In_ PIRP Irp,
+ _Out_ KSRESET *ResetValue);
-KSDDKAPI VOID NTAPI
+_IRQL_requires_max_(DISPATCH_LEVEL)
+KSDDKAPI
+VOID
+NTAPI
KsAddIrpToCancelableQueue(
- IN OUT PLIST_ENTRY QueueHead,
- IN PKSPIN_LOCK SpinLock,
- IN PIRP Irp,
- IN KSLIST_ENTRY_LOCATION ListLocation,
- IN PDRIVER_CANCEL DriverCancel OPTIONAL);
+ _Inout_ PLIST_ENTRY QueueHead,
+ _In_ PKSPIN_LOCK SpinLock,
+ _In_ PIRP Irp,
+ _In_ KSLIST_ENTRY_LOCATION ListLocation,
+ _In_opt_ PDRIVER_CANCEL DriverCancel);
-KSDDKAPI NTSTATUS NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+NTSTATUS
+NTAPI
KsAddObjectCreateItemToDeviceHeader(
- IN KSDEVICE_HEADER Header,
- IN PDRIVER_DISPATCH Create,
- IN PVOID Context,
- IN PWCHAR ObjectClass,
- IN PSECURITY_DESCRIPTOR SecurityDescriptor);
+ _In_ KSDEVICE_HEADER Header,
+ _In_ PDRIVER_DISPATCH Create,
+ _In_ PVOID Context,
+ _In_ PWSTR ObjectClass,
+ _In_opt_ PSECURITY_DESCRIPTOR SecurityDescriptor);
-KSDDKAPI NTSTATUS NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+NTSTATUS
+NTAPI
KsAddObjectCreateItemToObjectHeader(
- IN KSOBJECT_HEADER Header,
- IN PDRIVER_DISPATCH Create,
- IN PVOID Context,
- IN PWCHAR ObjectClass,
- IN PSECURITY_DESCRIPTOR SecurityDescriptor);
+ _In_ KSOBJECT_HEADER Header,
+ _In_ PDRIVER_DISPATCH Create,
+ _In_ PVOID Context,
+ _In_ PWSTR ObjectClass,
+ _In_opt_ PSECURITY_DESCRIPTOR SecurityDescriptor);
-KSDDKAPI NTSTATUS NTAPI
+_IRQL_requires_max_(APC_LEVEL)
+KSDDKAPI
+NTSTATUS
+NTAPI
KsAllocateDeviceHeader(
- OUT KSDEVICE_HEADER* Header,
- IN ULONG ItemsCount,
- IN PKSOBJECT_CREATE_ITEM ItemsList OPTIONAL);
+ _Out_ KSDEVICE_HEADER *Header,
+ _In_ ULONG ItemsCount,
+ _In_reads_opt_(ItemsCount) PKSOBJECT_CREATE_ITEM ItemsList);
-KSDDKAPI NTSTATUS NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+NTSTATUS
+NTAPI
KsAllocateExtraData(
- IN PIRP Irp,
- IN ULONG ExtraSize,
- OUT PVOID* ExtraBuffer);
+ _Inout_ PIRP Irp,
+ _In_ ULONG ExtraSize,
+ _Out_ PVOID *ExtraBuffer);
-KSDDKAPI NTSTATUS NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+NTSTATUS
+NTAPI
KsAllocateObjectCreateItem(
- IN KSDEVICE_HEADER Header,
- IN PKSOBJECT_CREATE_ITEM CreateItem,
- IN BOOLEAN AllocateEntry,
- IN PFNKSITEMFREECALLBACK ItemFreeCallback OPTIONAL);
+ _In_ KSDEVICE_HEADER Header,
+ _In_ PKSOBJECT_CREATE_ITEM CreateItem,
+ _In_ BOOLEAN AllocateEntry,
+ _In_opt_ PFNKSITEMFREECALLBACK ItemFreeCallback);
-KSDDKAPI NTSTATUS NTAPI
+_IRQL_requires_max_(APC_LEVEL)
+KSDDKAPI
+NTSTATUS
+NTAPI
KsAllocateObjectHeader(
- OUT KSOBJECT_HEADER *Header,
- IN ULONG ItemsCount,
- IN PKSOBJECT_CREATE_ITEM ItemsList OPTIONAL,
- IN PIRP Irp,
- IN KSDISPATCH_TABLE* Table);
+ _Out_ KSOBJECT_HEADER *Header,
+ _In_ ULONG ItemsCount,
+ _In_reads_opt_(ItemsCount) PKSOBJECT_CREATE_ITEM ItemsList,
+ _In_ PIRP Irp,
+ _In_ KSDISPATCH_TABLE *Table);
-KSDDKAPI VOID NTAPI
+_IRQL_requires_max_(DISPATCH_LEVEL)
+KSDDKAPI
+VOID
+NTAPI
KsCancelIo(
- IN OUT PLIST_ENTRY QueueHead,
- IN PKSPIN_LOCK SpinLock);
+ _Inout_ PLIST_ENTRY QueueHead,
+ _In_ PKSPIN_LOCK SpinLock);
-KSDDKAPI VOID NTAPI
+_IRQL_requires_max_(DISPATCH_LEVEL)
+KSDDKAPI
+VOID
+NTAPI
KsCancelRoutine(
- IN PDEVICE_OBJECT DeviceObject,
- IN PIRP Irp);
+ _In_ PDEVICE_OBJECT DeviceObject,
+ _In_ PIRP Irp);
-KSDDKAPI NTSTATUS NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+NTSTATUS
+NTAPI
KsDefaultDeviceIoCompletion(
- IN PDEVICE_OBJECT DeviceObject,
- IN PIRP Irp);
+ _In_ PDEVICE_OBJECT DeviceObject,
+ _In_ PIRP Irp);
-/* ELSEWHERE
-KSDDKAPI ULONG NTAPI
-KsDecrementCountedWorker(
- IN PKSWORKER Worker);
-*/
-
-KSDDKAPI BOOLEAN NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+BOOLEAN
+NTAPI
KsDispatchFastIoDeviceControlFailure(
- IN PFILE_OBJECT FileObject,
- IN BOOLEAN Wait,
- IN PVOID InputBuffer OPTIONAL,
- IN ULONG InputBufferLength,
- OUT PVOID OutputBuffer OPTIONAL,
- IN ULONG OutputBufferLength,
- IN ULONG IoControlCode,
- OUT PIO_STATUS_BLOCK IoStatus,
- IN PDEVICE_OBJECT DeviceObject); /* always return false */
-
-KSDDKAPI BOOLEAN NTAPI
+ _In_ PFILE_OBJECT FileObject,
+ _In_ BOOLEAN Wait,
+ _In_reads_bytes_opt_(InputBufferLength) PVOID InputBuffer,
+ _In_ ULONG InputBufferLength,
+ _Out_writes_bytes_opt_(OutputBufferLength) PVOID OutputBuffer,
+ _In_ ULONG OutputBufferLength,
+ _In_ ULONG IoControlCode,
+ _Out_ PIO_STATUS_BLOCK IoStatus,
+ _In_ PDEVICE_OBJECT DeviceObject); /* always return false */
+
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+BOOLEAN
+NTAPI
KsDispatchFastReadFailure(
- IN PFILE_OBJECT FileObject,
- IN PLARGE_INTEGER FileOffset,
- IN ULONG Length,
- IN BOOLEAN Wait,
- IN ULONG LockKey,
- OUT PVOID Buffer,
- OUT PIO_STATUS_BLOCK IoStatus,
- IN PDEVICE_OBJECT DeviceObject); /* always return false */
+ _In_ PFILE_OBJECT FileObject,
+ _In_ PLARGE_INTEGER FileOffset,
+ _In_ ULONG Length,
+ _In_ BOOLEAN Wait,
+ _In_ ULONG LockKey,
+ _Out_ PVOID Buffer,
+ _Out_ PIO_STATUS_BLOCK IoStatus,
+ _In_ PDEVICE_OBJECT DeviceObject); /* always return false */
/* This function does the same as the above */
#define KsDispatchFastWriteFailure KsDispatchFastReadFailure
-KSDDKAPI NTSTATUS NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+NTSTATUS
+NTAPI
KsDispatchInvalidDeviceRequest(
- IN PDEVICE_OBJECT DeviceObject,
- IN PIRP Irp);
+ _In_ PDEVICE_OBJECT DeviceObject,
+ _In_ PIRP Irp);
-KSDDKAPI NTSTATUS NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+NTSTATUS
+NTAPI
KsDispatchIrp(
- IN PDEVICE_OBJECT DeviceObject,
- IN PIRP Irp);
+ _In_ PDEVICE_OBJECT DeviceObject,
+ _In_ PIRP Irp);
-KSDDKAPI NTSTATUS NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+NTSTATUS
+NTAPI
KsDispatchSpecificMethod(
- IN PIRP Irp,
- IN PFNKSHANDLER Handler);
+ _In_ PIRP Irp,
+ _In_ PFNKSHANDLER Handler);
-KSDDKAPI NTSTATUS NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+NTSTATUS
+NTAPI
KsDispatchSpecificProperty(
- IN PIRP Irp,
- IN PFNKSHANDLER Handler);
+ _In_ PIRP Irp,
+ _In_ PFNKSHANDLER Handler);
-KSDDKAPI NTSTATUS NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+NTSTATUS
+NTAPI
KsForwardAndCatchIrp(
- IN PDEVICE_OBJECT DeviceObject,
- IN PIRP Irp,
- IN PFILE_OBJECT FileObject,
- IN KSSTACK_USE StackUse);
+ _In_ PDEVICE_OBJECT DeviceObject,
+ _In_ PIRP Irp,
+ _In_ PFILE_OBJECT FileObject,
+ _In_ KSSTACK_USE StackUse);
-KSDDKAPI NTSTATUS NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+NTSTATUS
+NTAPI
KsForwardIrp(
- IN PIRP Irp,
- IN PFILE_OBJECT FileObject,
- IN BOOLEAN ReuseStackLocation);
+ _In_ PIRP Irp,
+ _In_ PFILE_OBJECT FileObject,
+ _In_ BOOLEAN ReuseStackLocation);
-KSDDKAPI VOID NTAPI
+_IRQL_requires_max_(APC_LEVEL)
+KSDDKAPI
+VOID
+NTAPI
KsFreeDeviceHeader(
- IN KSDEVICE_HEADER Header);
+ _In_ KSDEVICE_HEADER Header);
-KSDDKAPI VOID NTAPI
+_IRQL_requires_max_(APC_LEVEL)
+KSDDKAPI
+VOID
+NTAPI
KsFreeObjectHeader(
- IN PVOID Header);
+ _In_ PVOID Header);
-KSDDKAPI NTSTATUS NTAPI
+KSDDKAPI
+NTSTATUS
+NTAPI
KsGetChildCreateParameter(
- IN PIRP Irp,
- OUT PVOID* CreateParameter);
+ _In_ PIRP Irp,
+ _Out_ PVOID *CreateParameter);
-KSDDKAPI NTSTATUS NTAPI
+_IRQL_requires_max_(DISPATCH_LEVEL)
+KSDDKAPI
+NTSTATUS
+NTAPI
KsMoveIrpsOnCancelableQueue(
- IN OUT PLIST_ENTRY SourceList,
- IN PKSPIN_LOCK SourceLock,
- IN OUT PLIST_ENTRY DestinationList,
- IN PKSPIN_LOCK DestinationLock OPTIONAL,
- IN KSLIST_ENTRY_LOCATION ListLocation,
- IN PFNKSIRPLISTCALLBACK ListCallback,
- IN PVOID Context);
-
-KSDDKAPI NTSTATUS NTAPI
+ _Inout_ PLIST_ENTRY SourceList,
+ _In_ PKSPIN_LOCK SourceLock,
+ _Inout_ PLIST_ENTRY DestinationList,
+ _In_opt_ PKSPIN_LOCK DestinationLock,
+ _In_ KSLIST_ENTRY_LOCATION ListLocation,
+ _In_ PFNKSIRPLISTCALLBACK ListCallback,
+ _In_ PVOID Context);
+
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+NTSTATUS
+NTAPI
KsProbeStreamIrp(
- IN PIRP Irp,
- IN ULONG ProbeFlags,
- IN ULONG HeaderSize);
+ _Inout_ PIRP Irp,
+ _In_ ULONG ProbeFlags,
+ _In_ ULONG HeaderSize);
-KSDDKAPI NTSTATUS NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+NTSTATUS
+NTAPI
KsQueryInformationFile(
- IN PFILE_OBJECT FileObject,
- OUT PVOID FileInformation,
- IN ULONG Length,
- IN FILE_INFORMATION_CLASS FileInformationClass);
+ _In_ PFILE_OBJECT FileObject,
+ _Out_writes_bytes_(Length) PVOID FileInformation,
+ _In_ ULONG Length,
+ _In_ FILE_INFORMATION_CLASS FileInformationClass);
-KSDDKAPI ACCESS_MASK NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+ACCESS_MASK
+NTAPI
KsQueryObjectAccessMask(
- IN KSOBJECT_HEADER Header);
+ _In_ KSOBJECT_HEADER Header);
-KSDDKAPI PKSOBJECT_CREATE_ITEM NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+PKSOBJECT_CREATE_ITEM
+NTAPI
KsQueryObjectCreateItem(
- IN KSOBJECT_HEADER Header);
+ _In_ KSOBJECT_HEADER Header);
-KSDDKAPI NTSTATUS NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+NTSTATUS
+NTAPI
KsReadFile(
- IN PFILE_OBJECT FileObject,
- IN PKEVENT Event OPTIONAL,
- IN PVOID PortContext OPTIONAL,
- OUT PIO_STATUS_BLOCK IoStatusBlock,
- OUT PVOID Buffer,
- IN ULONG Length,
- IN ULONG Key OPTIONAL,
- IN KPROCESSOR_MODE RequestorMode);
-
-KSDDKAPI VOID NTAPI
+ _In_ PFILE_OBJECT FileObject,
+ _In_opt_ PKEVENT Event,
+ _In_opt_ PVOID PortContext,
+ _Out_ PIO_STATUS_BLOCK IoStatusBlock,
+ _Out_writes_bytes_(Length) PVOID Buffer,
+ _In_ ULONG Length,
+ _In_opt_ ULONG Key,
+ _In_ KPROCESSOR_MODE RequestorMode);
+
+_IRQL_requires_max_(DISPATCH_LEVEL)
+KSDDKAPI
+VOID
+NTAPI
KsReleaseIrpOnCancelableQueue(
- IN PIRP Irp,
- IN PDRIVER_CANCEL DriverCancel OPTIONAL);
+ _In_ PIRP Irp,
+ _In_opt_ PDRIVER_CANCEL DriverCancel);
-KSDDKAPI PIRP NTAPI
+_IRQL_requires_max_(DISPATCH_LEVEL)
+KSDDKAPI
+PIRP
+NTAPI
KsRemoveIrpFromCancelableQueue(
- IN OUT PLIST_ENTRY QueueHead,
- IN PKSPIN_LOCK SpinLock,
- IN KSLIST_ENTRY_LOCATION ListLocation,
- IN KSIRP_REMOVAL_OPERATION RemovalOperation);
+ _Inout_ PLIST_ENTRY QueueHead,
+ _In_ PKSPIN_LOCK SpinLock,
+ _In_ KSLIST_ENTRY_LOCATION ListLocation,
+ _In_ KSIRP_REMOVAL_OPERATION RemovalOperation);
-KSDDKAPI VOID NTAPI
+_IRQL_requires_max_(DISPATCH_LEVEL)
+KSDDKAPI
+VOID
+NTAPI
KsRemoveSpecificIrpFromCancelableQueue(
- IN PIRP Irp);
+ _In_ PIRP Irp);
-KSDDKAPI NTSTATUS NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+NTSTATUS
+NTAPI
KsSetInformationFile(
- IN PFILE_OBJECT FileObject,
- IN PVOID FileInformation,
- IN ULONG Length,
- IN FILE_INFORMATION_CLASS FileInformationClass);
+ _In_ PFILE_OBJECT FileObject,
+ _In_reads_bytes_(Length) PVOID FileInformation,
+ _In_ ULONG Length,
+ _In_ FILE_INFORMATION_CLASS FileInformationClass);
-KSDDKAPI NTSTATUS NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+NTSTATUS
+NTAPI
KsSetMajorFunctionHandler(
- IN PDRIVER_OBJECT DriverObject,
- IN ULONG MajorFunction);
+ _In_ PDRIVER_OBJECT DriverObject,
+ _In_ ULONG MajorFunction);
-KSDDKAPI NTSTATUS NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+NTSTATUS
+NTAPI
KsStreamIo(
- IN PFILE_OBJECT FileObject,
- IN PKEVENT Event OPTIONAL,
- IN PVOID PortContext OPTIONAL,
- IN PIO_COMPLETION_ROUTINE CompletionRoutine OPTIONAL,
- IN PVOID CompletionContext OPTIONAL,
- IN KSCOMPLETION_INVOCATION CompletionInvocationFlags OPTIONAL,
- OUT PIO_STATUS_BLOCK IoStatusBlock,
- IN OUT PVOID StreamHeaders,
- IN ULONG Length,
- IN ULONG Flags,
- IN KPROCESSOR_MODE RequestorMode);
-
-KSDDKAPI NTSTATUS NTAPI
- KsWriteFile(
- IN PFILE_OBJECT FileObject,
- IN PKEVENT Event OPTIONAL,
- IN PVOID PortContext OPTIONAL,
- OUT PIO_STATUS_BLOCK IoStatusBlock,
- IN PVOID Buffer,
- IN ULONG Length,
- IN ULONG Key OPTIONAL,
- IN KPROCESSOR_MODE RequestorMode);
-
-
-KSDDKAPI NTSTATUS NTAPI
- KsDefaultForwardIrp(
- IN PDEVICE_OBJECT DeviceObject,
- IN PIRP Irp);
+ _In_ PFILE_OBJECT FileObject,
+ _In_opt_ PKEVENT Event,
+ _In_opt_ PVOID PortContext,
+ _In_opt_ PIO_COMPLETION_ROUTINE CompletionRoutine,
+ _In_opt_ PVOID CompletionContext,
+ _In_opt_ KSCOMPLETION_INVOCATION CompletionInvocationFlags,
+ _Out_ PIO_STATUS_BLOCK IoStatusBlock,
+ _Inout_updates_bytes_(Length) PVOID StreamHeaders,
+ _In_ ULONG Length,
+ _In_ ULONG Flags,
+ _In_ KPROCESSOR_MODE RequestorMode);
+
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+NTSTATUS
+NTAPI
+KsWriteFile(
+ _In_ PFILE_OBJECT FileObject,
+ _In_opt_ PKEVENT Event,
+ _In_opt_ PVOID PortContext,
+ _Out_ PIO_STATUS_BLOCK IoStatusBlock,
+ _In_reads_bytes_(Length) PVOID Buffer,
+ _In_ ULONG Length,
+ _In_opt_ ULONG Key,
+ _In_ KPROCESSOR_MODE RequestorMode);
+
+KSDDKAPI
+NTSTATUS
+NTAPI
+KsDefaultForwardIrp(
+ _In_ PDEVICE_OBJECT DeviceObject,
+ _In_ PIRP Irp);
/* ===============================================================
Worker Management Functions
*/
-KSDDKAPI NTSTATUS NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+NTSTATUS
+NTAPI
KsRegisterWorker(
- IN WORK_QUEUE_TYPE WorkQueueType,
- OUT PKSWORKER* Worker);
+ _In_ WORK_QUEUE_TYPE WorkQueueType,
+ _Out_ PKSWORKER* Worker);
-KSDDKAPI VOID NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+VOID
+NTAPI
KsUnregisterWorker(
- IN PKSWORKER Worker);
+ _In_ PKSWORKER Worker);
-KSDDKAPI NTSTATUS NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+NTSTATUS
+NTAPI
KsRegisterCountedWorker(
- IN WORK_QUEUE_TYPE WorkQueueType,
- IN PWORK_QUEUE_ITEM CountedWorkItem,
- OUT PKSWORKER* Worker);
+ _In_ WORK_QUEUE_TYPE WorkQueueType,
+ _In_ PWORK_QUEUE_ITEM CountedWorkItem,
+ _Out_ PKSWORKER *Worker);
-KSDDKAPI ULONG NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+ULONG
+NTAPI
KsDecrementCountedWorker(
- IN PKSWORKER Worker);
+ _In_ PKSWORKER Worker);
-KSDDKAPI ULONG NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+ULONG
+NTAPI
KsIncrementCountedWorker(
- IN PKSWORKER Worker);
+ _In_ PKSWORKER Worker);
-KSDDKAPI NTSTATUS NTAPI
+_IRQL_requires_max_(DISPATCH_LEVEL)
+KSDDKAPI
+NTSTATUS
+NTAPI
KsQueueWorkItem(
- IN PKSWORKER Worker,
- IN PWORK_QUEUE_ITEM WorkItem);
-
+ _In_ PKSWORKER Worker,
+ _In_ PWORK_QUEUE_ITEM WorkItem);
/* ===============================================================
Resources / Images
*/
-KSDDKAPI NTSTATUS NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+NTSTATUS
+NTAPI
KsLoadResource(
- IN PVOID ImageBase,
- IN POOL_TYPE PoolType,
- IN ULONG_PTR ResourceName,
- IN ULONG ResourceType,
- OUT PVOID* Resource,
- OUT PULONG ResourceSize);
-
-/* TODO: Implement
-KSDDKAPI NTSTATUS NTAPI
+ _In_ PVOID ImageBase,
+ _In_ POOL_TYPE PoolType,
+ _In_ ULONG_PTR ResourceName,
+ _In_ ULONG ResourceType,
+ _Outptr_result_bytebuffer_(ResourceSize) PVOID *Resource,
+ _Out_opt_ PULONG ResourceSize);
+
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+NTSTATUS
+NTAPI
KsGetImageNameAndResourceId(
- IN HANDLE RegKey,
- OUT PUNICODE_STRING ImageName,
- OUT PULONG_PTR ResourceId,
- OUT PULONG ValueType);
+ _In_ HANDLE RegKey,
+ _Out_ PUNICODE_STRING ImageName,
+ _Out_ PULONG_PTR ResourceId,
+ _Out_ PULONG ValueType);
-KSDDKAPI NTSTATUS NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+NTSTATUS
+NTAPI
KsMapModuleName(
- IN PDEVICE_OBJECT PhysicalDeviceObject,
- IN PUNICODE_STRING ModuleName,
- OUT PUNICODE_STRING ImageName,
- OUT PULONG_PTR ResourceId,
- OUT PULONG ValueType);
-*/
-
+ _In_ PDEVICE_OBJECT PhysicalDeviceObject,
+ _In_ PUNICODE_STRING ModuleName,
+ _Out_ PUNICODE_STRING ImageName,
+ _Out_ PULONG_PTR ResourceId,
+ _Out_ PULONG ValueType);
/* ===============================================================
Misc. Helper Functions
*/
-KSDDKAPI PVOID NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+PVOID
+NTAPI
KsGetNextSibling(
- IN PVOID Object);
+ _In_ PVOID Object);
-
-KSDDKAPI NTSTATUS NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+NTSTATUS
+NTAPI
KsCacheMedium(
- IN PUNICODE_STRING SymbolicLink,
- IN PKSPIN_MEDIUM Medium,
- IN ULONG PinDirection);
+ _In_ PUNICODE_STRING SymbolicLink,
+ _In_ PKSPIN_MEDIUM Medium,
+ _In_ ULONG PinDirection);
-KSDDKAPI NTSTATUS NTAPI
+KSDDKAPI
+NTSTATUS
+NTAPI
KsDefaultDispatchPnp(
- IN PDEVICE_OBJECT DeviceObject,
- IN PIRP Irp);
+ _In_ PDEVICE_OBJECT DeviceObject,
+ _In_ PIRP Irp);
-KSDDKAPI VOID NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+VOID
+NTAPI
KsSetDevicePnpAndBaseObject(
- IN KSDEVICE_HEADER Header,
- IN PDEVICE_OBJECT PnpDeviceObject,
- IN PDEVICE_OBJECT BaseDevice);
+ _In_ KSDEVICE_HEADER Header,
+ _In_ PDEVICE_OBJECT PnpDeviceObject,
+ _In_ PDEVICE_OBJECT BaseDevice);
-KSDDKAPI NTSTATUS NTAPI
+KSDDKAPI
+NTSTATUS
+NTAPI
KsDefaultDispatchPower(
- IN PDEVICE_OBJECT DeviceObject,
- IN PIRP Irp);
+ _In_ PDEVICE_OBJECT DeviceObject,
+ _In_ PIRP Irp);
-KSDDKAPI VOID NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+VOID
+NTAPI
KsSetPowerDispatch(
- IN KSOBJECT_HEADER Header,
- IN PFNKSCONTEXT_DISPATCH PowerDispatch OPTIONAL,
- IN PVOID PowerContext OPTIONAL);
+ _In_ KSOBJECT_HEADER Header,
+ _In_opt_ PFNKSCONTEXT_DISPATCH PowerDispatch,
+ _In_opt_ PVOID PowerContext);
-KSDDKAPI NTSTATUS NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+NTSTATUS
+NTAPI
KsReferenceBusObject(
- IN KSDEVICE_HEADER Header);
+ _In_ KSDEVICE_HEADER Header);
-KSDDKAPI VOID NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+VOID
+NTAPI
KsDereferenceBusObject(
- IN KSDEVICE_HEADER Header);
+ _In_ KSDEVICE_HEADER Header);
-KSDDKAPI NTSTATUS NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+NTSTATUS
+NTAPI
KsFreeObjectCreateItem(
- IN KSDEVICE_HEADER Header,
- IN PUNICODE_STRING CreateItem);
+ _In_ KSDEVICE_HEADER Header,
+ _In_ PUNICODE_STRING CreateItem);
-KSDDKAPI NTSTATUS NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+NTSTATUS
+NTAPI
KsFreeObjectCreateItemsByContext(
- IN KSDEVICE_HEADER Header,
- IN PVOID Context);
+ _In_ KSDEVICE_HEADER Header,
+ _In_ PVOID Context);
-KSDDKAPI VOID NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+VOID
+NTAPI
KsNullDriverUnload(
- IN PDRIVER_OBJECT DriverObject);
+ _In_ PDRIVER_OBJECT DriverObject);
-KSDDKAPI PDEVICE_OBJECT NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+PDEVICE_OBJECT
+NTAPI
KsQueryDevicePnpObject(
- IN KSDEVICE_HEADER Header);
+ _In_ KSDEVICE_HEADER Header);
-KSDDKAPI VOID NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+VOID
+NTAPI
KsRecalculateStackDepth(
- IN KSDEVICE_HEADER Header,
- IN BOOLEAN ReuseStackLocation);
+ _In_ KSDEVICE_HEADER Header,
+ _In_ BOOLEAN ReuseStackLocation);
-KSDDKAPI VOID NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+VOID
+NTAPI
KsSetTargetDeviceObject(
- IN KSOBJECT_HEADER Header,
- IN PDEVICE_OBJECT TargetDevice OPTIONAL);
+ _In_ KSOBJECT_HEADER Header,
+ _In_opt_ PDEVICE_OBJECT TargetDevice);
-KSDDKAPI VOID NTAPI
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+VOID
+NTAPI
KsSetTargetState(
- IN KSOBJECT_HEADER Header,
- IN KSTARGET_STATE TargetState);
+ _In_ KSOBJECT_HEADER Header,
+ _In_ KSTARGET_STATE TargetState);
-KSDDKAPI NTSTATUS NTAPI
+_Must_inspect_result_
+_IRQL_requires_max_(PASSIVE_LEVEL)
+KSDDKAPI
+NTSTATUS
+NTAPI
KsSynchronousIoControlDevice(
- IN PFILE_OBJECT FileObject,
- IN KPROCESSOR_MODE RequestorMode,
- IN ULONG IoControl,
- IN PVOID InBuffer,
- IN ULONG InSize,
- OUT PVOID OutBuffer,
- IN ULONG OUtSize,
- OUT PULONG BytesReturned);
-
+ _In_ PFILE_OBJECT FileObject,
+ _In_ KPROCESSOR_MODE RequestorMode,
+ _In_ ULONG IoControl,
+ _In_reads_bytes_(InSize) PVOID InBuffer,
+ _In_ ULONG InSize,
+ _Out_writes_bytes_to_(OutSize, *BytesReturned) PVOID OutBuffer,
+ _In_ ULONG OutSize,
+ _Out_ PULONG BytesReturned);
+
+_IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI
PKSPIN
NTAPI
KsFilterGetFirstChildPin(
- IN PKSFILTER Filter,
- IN ULONG PinId
- );
+ _In_ PKSFILTER Filter,
+ _In_ ULONG PinId);
+_IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI
PFILE_OBJECT
NTAPI
KsPinGetConnectedPinFileObject(
- IN PKSPIN Pin
- );
+ _In_ PKSPIN Pin);
-#else
+#else /* _NTDDK_ */
#if !defined( KS_NO_CREATE_FUNCTIONS )
+_IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI
DWORD
WINAPI
KsCreateAllocator(
- IN HANDLE ConnectionHandle,
- IN PKSALLOCATOR_FRAMING AllocatorFraming,
- OUT PHANDLE AllocatorHandle
- );
+ _In_ HANDLE ConnectionHandle,
+ _In_ PKSALLOCATOR_FRAMING AllocatorFraming,
+ _Out_ PHANDLE AllocatorHandle);
+_IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI
DWORD
NTAPI
KsCreateClock(
- IN HANDLE ConnectionHandle,
- IN PKSCLOCK_CREATE ClockCreate,
- OUT PHANDLE ClockHandle
- );
+ _In_ HANDLE ConnectionHandle,
+ _In_ PKSCLOCK_CREATE ClockCreate,
+ _Out_ PHANDLE ClockHandle);
+_IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI
DWORD
WINAPI
KsCreatePin(
- IN HANDLE FilterHandle,
- IN PKSPIN_CONNECT Connect,
- IN ACCESS_MASK DesiredAccess,
- OUT PHANDLE ConnectionHandle
- );
+ _In_ HANDLE FilterHandle,
+ _In_ PKSPIN_CONNECT Connect,
+ _In_ ACCESS_MASK DesiredAccess,
+ _Out_ PHANDLE ConnectionHandle);
+_IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI
DWORD
WINAPI
KsCreateTopologyNode(
- IN HANDLE ParentHandle,
- IN PKSNODE_CREATE NodeCreate,
- IN ACCESS_MASK DesiredAccess,
- OUT PHANDLE NodeHandle
- );
-
-#endif
+ _In_ HANDLE ParentHandle,
+ _In_ PKSNODE_CREATE NodeCreate,
+ _In_ ACCESS_MASK DesiredAccess,
+ _Out_ PHANDLE NodeHandle);
#endif
+#endif /* _NTDDK_ */
+
/* ===============================================================
AVStream Functions (XP / DirectX 8)
NOT IMPLEMENTED YET
#if defined(_NTDDK_)
+_IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI
NTSTATUS
NTAPI
KsMergeAutomationTables(
- OUT PKSAUTOMATION_TABLE* AutomationTableAB,
- IN PKSAUTOMATION_TABLE AutomationTableA OPTIONAL,
- IN PKSAUTOMATION_TABLE AutomationTableB OPTIONAL,
- IN KSOBJECT_BAG Bag OPTIONAL
- );
+ _Out_ PKSAUTOMATION_TABLE *AutomationTableAB,
+ _In_opt_ PKSAUTOMATION_TABLE AutomationTableA,
+ _In_opt_ PKSAUTOMATION_TABLE AutomationTableB,
+ _In_opt_ KSOBJECT_BAG Bag);
+_Must_inspect_result_
+_IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI
NTSTATUS
NTAPI
KsInitializeDriver(
- IN PDRIVER_OBJECT DriverObject,
- IN PUNICODE_STRING RegistryPath,
- IN const KSDEVICE_DESCRIPTOR *Descriptor OPTIONAL);
+ _In_ PDRIVER_OBJECT DriverObject,
+ _In_ PUNICODE_STRING RegistryPath,
+ _In_opt_ const KSDEVICE_DESCRIPTOR *Descriptor);
typedef struct _KSFILTERFACTORY KSFILTERFACTORY, *PKSFILTERFACTORY; //FIXME
-
-
+_IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI
NTSTATUS
NTAPI
KsInitializeDevice (
- IN PDEVICE_OBJECT FunctionalDeviceObject,
- IN PDEVICE_OBJECT PhysicalDeviceObject,
- IN PDEVICE_OBJECT NextDeviceObject,
- IN const KSDEVICE_DESCRIPTOR* Descriptor OPTIONAL);
-
-
-typedef void (NTAPI *PFNKSFILTERFACTORYPOWER)(
- IN PKSFILTERFACTORY FilterFactory,
- IN DEVICE_POWER_STATE State);
-
+ _In_ PDEVICE_OBJECT FunctionalDeviceObject,
+ _In_ PDEVICE_OBJECT PhysicalDeviceObject,
+ _In_ PDEVICE_OBJECT NextDeviceObject,
+ _In_opt_ const KSDEVICE_DESCRIPTOR *Descriptor);
+
+_IRQL_requires_max_(PASSIVE_LEVEL)
+typedef void
+(NTAPI *PFNKSFILTERFACTORYPOWER)(
+ _In_ PKSFILTERFACTORY FilterFactory,
+ _In_ DEVICE_POWER_STATE State);
+
+_Must_inspect_result_
+_IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI
NTSTATUS
NTAPI
_KsEdit(
- IN KSOBJECT_BAG ObjectBag,
- IN OUT PVOID* PointerToPointerToItem,
- IN ULONG NewSize,
- IN ULONG OldSize,
- IN ULONG Tag);
+ _In_ KSOBJECT_BAG ObjectBag,
+ _Inout_ PVOID *PointerToPointerToItem,
+ _In_ ULONG NewSize,
+ _In_ ULONG OldSize,
+ _In_ ULONG Tag);
+_IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI
VOID
NTAPI
KsAcquireControl(
- IN PVOID Object);
+ _In_ PVOID Object);
+_IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI
VOID
NTAPI
KsAcquireDevice(
- IN PKSDEVICE Device);
+ _In_ PKSDEVICE Device);
+_IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI
NTSTATUS
NTAPI
KsAddDevice(
- IN PDRIVER_OBJECT DriverObject,
- IN PDEVICE_OBJECT PhysicalDeviceObject);
+ _In_ PDRIVER_OBJECT DriverObject,
+ _In_ PDEVICE_OBJECT PhysicalDeviceObject);
+_IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI
VOID
NTAPI
KsAddEvent(
- IN PVOID Object,
- IN PKSEVENT_ENTRY EventEntry);
+ _In_ PVOID Object,
+ _In_ PKSEVENT_ENTRY EventEntry);
+_Must_inspect_result_
+_IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI
NTSTATUS
NTAPI
KsAddItemToObjectBag(
- IN KSOBJECT_BAG ObjectBag,
- IN PVOID Item,
- IN PFNKSFREE Free OPTIONAL);
+ _In_ KSOBJECT_BAG ObjectBag,
+ _In_ __drv_aliasesMem PVOID Item,
+ _In_opt_ PFNKSFREE Free);
+_IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI
ULONG
NTAPI
KsRemoveItemFromObjectBag(
- IN KSOBJECT_BAG ObjectBag,
- IN PVOID Item,
- IN BOOLEAN Free);
+ _In_ KSOBJECT_BAG ObjectBag,
+ _In_ PVOID Item,
+ _In_ BOOLEAN Free);
+_IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI
NTSTATUS
NTAPI
KsAllocateObjectBag(
- IN PKSDEVICE Device,
- OUT KSOBJECT_BAG* ObjectBag);
+ _In_ PKSDEVICE Device,
+ _Out_ KSOBJECT_BAG *ObjectBag);
+_IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI
VOID
NTAPI
KsFreeObjectBag(
- IN KSOBJECT_BAG ObjectBag
- );
+ _In_ KSOBJECT_BAG ObjectBag);
+_IRQL_requires_max_(DISPATCH_LEVEL)
KSDDKAPI
VOID
NTAPI
KsCompletePendingRequest(
- IN PIRP Irp);
+ _In_ PIRP Irp);
+_IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI
NTSTATUS
NTAPI
KsCopyObjectBagItems(
- IN KSOBJECT_BAG ObjectBagDestination,
- IN KSOBJECT_BAG ObjectBagSource);
+ _In_ KSOBJECT_BAG ObjectBagDestination,
+ _In_ KSOBJECT_BAG ObjectBagSource);
+_IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI
NTSTATUS
NTAPI
KsCreateDevice(
- IN PDRIVER_OBJECT DriverObject,
- IN PDEVICE_OBJECT PhysicalDeviceObject,
- IN const KSDEVICE_DESCRIPTOR* Descriptor OPTIONAL,
- IN ULONG ExtensionSize OPTIONAL,
- OUT PKSDEVICE* Device OPTIONAL);
-
+ _In_ PDRIVER_OBJECT DriverObject,
+ _In_ PDEVICE_OBJECT PhysicalDeviceObject,
+ _In_opt_ const KSDEVICE_DESCRIPTOR *Descriptor,
+ _In_ ULONG ExtensionSize,
+ _Out_opt_ PKSDEVICE *Device);
+
+_Must_inspect_result_
+_IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI
NTSTATUS
NTAPI
KsCreateFilterFactory(
- IN PDEVICE_OBJECT DeviceObject,
- IN const KSFILTER_DESCRIPTOR* Descriptor,
- IN PWCHAR RefString OPTIONAL,
- IN PSECURITY_DESCRIPTOR SecurityDescriptor OPTIONAL,
- IN ULONG CreateItemFlags,
- IN PFNKSFILTERFACTORYPOWER SleepCallback OPTIONAL,
- IN PFNKSFILTERFACTORYPOWER WakeCallback OPTIONAL,
- OUT PKSFILTERFACTORY *FilterFactory OPTIONAL);
-
+ _In_ PDEVICE_OBJECT DeviceObject,
+ _In_ const KSFILTER_DESCRIPTOR *Descriptor,
+ _In_opt_ PWSTR RefString,
+ _In_opt_ PSECURITY_DESCRIPTOR SecurityDescriptor,
+ _In_ ULONG CreateItemFlags,
+ _In_opt_ PFNKSFILTERFACTORYPOWER SleepCallback,
+ _In_opt_ PFNKSFILTERFACTORYPOWER WakeCallback,
+ _Out_opt_ PKSFILTERFACTORY *FilterFactory);
+
+_IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI
NTSTATUS
NTAPI
KsFilterFactorySetDeviceClassesState(
- IN PKSFILTERFACTORY FilterFactory,
- IN BOOLEAN NewState
- );
+ _In_ PKSFILTERFACTORY FilterFactory,
+ _In_ BOOLEAN NewState);
+_Must_inspect_result_
+_IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI
NTSTATUS
NTAPI
KsFilterFactoryUpdateCacheData(
- IN PKSFILTERFACTORY FilterFactory,
- IN const KSFILTER_DESCRIPTOR *FilterDescriptor OPTIONAL
- );
+ _In_ PKSFILTERFACTORY FilterFactory,
+ _In_opt_ const KSFILTER_DESCRIPTOR *FilterDescriptor);
+_IRQL_requires_max_(DISPATCH_LEVEL)
KSDDKAPI
PKSPIN
NTAPI
KsGetPinFromIrp(
- IN PIRP Irp
- );
+ _In_ PIRP Irp);
+_IRQL_requires_max_(DISPATCH_LEVEL)
KSDDKAPI
PKSFILTER
NTAPI
KsGetFilterFromIrp(
- IN PIRP Irp
- );
+ _In_ PIRP Irp);
+_IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI
NTSTATUS
NTAPI
KsDefaultAddEventHandler(
- IN PIRP Irp,
- IN PKSEVENTDATA EventData,
- IN OUT PKSEVENT_ENTRY EventEntry);
+ _In_ PIRP Irp,
+ _In_ PKSEVENTDATA EventData,
+ _Inout_ PKSEVENT_ENTRY EventEntry);
+_IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI
NTSTATUS
NTAPI
KsDispatchQuerySecurity(
- IN PDEVICE_OBJECT DeviceObject,
- IN PIRP Irp
- );
+ _In_ PDEVICE_OBJECT DeviceObject,
+ _In_ PIRP Irp);
+_IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI
NTSTATUS
NTAPI
KsDispatchSetSecurity(
- IN PDEVICE_OBJECT DeviceObject,
- IN PIRP Irp
- );
+ _In_ PDEVICE_OBJECT DeviceObject,
+ _In_ PIRP Irp);
+_IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI
PVOID
NTAPI
KsGetParent(
- IN PVOID Object
- );
-
+ _In_ PVOID Object);
+_IRQL_requires_max_(PASSIVE_LEVEL)
static
PKSFILTERFACTORY
__inline
KsFilterGetParentFilterFactory(
- IN PKSFILTER Filter
- )
+ _In_ PKSFILTER Filter)
{
return (PKSFILTERFACTORY) KsGetParent((PVOID) Filter);
}
+_IRQL_requires_max_(PASSIVE_LEVEL)
static
PKSDEVICE
__inline
KsFilterFactoryGetParentDevice(
- IN PKSFILTERFACTORY FilterFactory
- )
+ _In_ PKSFILTERFACTORY FilterFactory)
{
return (PKSDEVICE) KsGetParent((PVOID) FilterFactory);
}
-
-
-#define KsDeleteFilterFactory(FilterFactory) \
- KsFreeObjectCreateItemsByContext( \
- *(KSDEVICE_HEADER *)( \
- KsFilterFactoryGetParentDevice(FilterFactory)->FunctionalDeviceObject-> \
- DeviceExtension), \
+#define KsDeleteFilterFactory(FilterFactory) \
+ KsFreeObjectCreateItemsByContext( \
+ *(KSDEVICE_HEADER *)( \
+ KsFilterFactoryGetParentDevice(FilterFactory)->FunctionalDeviceObject-> \
+ DeviceExtension), \
FilterFactory)
+_IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI
ULONG
NTAPI
KsDeviceGetBusData(
- IN PKSDEVICE Device,
- IN ULONG DataType,
- IN PVOID Buffer,
- IN ULONG Offset,
- IN ULONG Length);
-
+ _In_ PKSDEVICE Device,
+ _In_ ULONG DataType,
+ _In_reads_bytes_(Length) PVOID Buffer,
+ _In_ ULONG Offset,
+ _In_ ULONG Length);
+_IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI
PVOID
NTAPI
KsGetFirstChild(
- IN PVOID Object
- );
+ _In_ PVOID Object);
+_IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI
PKSFILTERFACTORY
NTAPI
KsDeviceGetFirstChildFilterFactory(
- IN PKSDEVICE Device);
+ _In_ PKSDEVICE Device);
#if defined(_UNKNOWN_H_) || defined(__IUnknown_INTERFACE_DEFINED__)
+_IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI
PUNKNOWN
NTAPI
KsGetOuterUnknown(
- IN PVOID Object
- );
+ _In_ PVOID Object);
+_IRQL_requires_max_(PASSIVE_LEVEL)
static
__inline
PUNKNOWN
KsDeviceGetOuterUnknown(
- IN PKSDEVICE Device)
+ _In_ PKSDEVICE Device)
{
return KsGetOuterUnknown((PVOID) Device);
}
+_IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI
PUNKNOWN
NTAPI
KsDeviceRegisterAggregatedClientUnknown(
- IN PKSDEVICE Device,
- IN PUNKNOWN ClientUnknown);
-
+ _In_ PKSDEVICE Device,
+ _In_ PUNKNOWN ClientUnknown);
#endif
STDMETHOD_(LONGLONG,GetPhysicalTime)(THIS
) PURE;
STDMETHOD_(LONGLONG,GetCorrelatedTime)(THIS_
- OUT PLONGLONG SystemTime
+ _Out_ PLONGLONG SystemTime
) PURE;
STDMETHOD_(LONGLONG,GetCorrelatedPhysicalTime)(THIS_
- OUT PLONGLONG SystemTime
+ _Out_ PLONGLONG SystemTime
) PURE;
STDMETHOD_(NTSTATUS, GetResolution)(THIS_
- OUT PKSRESOLUTION Resolution
+ _Out_ PKSRESOLUTION Resolution
) PURE;
STDMETHOD_(NTSTATUS, GetState)(THIS_
- OUT PKSSTATE State
+ _Out_ PKSSTATE State
) PURE;
};
STDMETHOD_(ULONG, Release)(THIS) PURE;
STDMETHOD_(NTSTATUS, KsProperty)(THIS_
- IN PKSPROPERTY Property,
- IN ULONG PropertyLength,
- IN OUT PVOID PropertyData,
- IN ULONG DataLength,
- OUT ULONG* BytesReturned
+ _In_reads_bytes_(PropertyLength) PKSPROPERTY Property,
+ _In_ ULONG PropertyLength,
+ _Inout_updates_bytes_(DataLength) PVOID PropertyData,
+ _In_ ULONG DataLength,
+ _Out_ ULONG *BytesReturned
) PURE;
STDMETHOD_(NTSTATUS, KsMethod)(THIS_
- IN PKSMETHOD Method,
- IN ULONG MethodLength,
- IN OUT PVOID MethodData,
- IN ULONG DataLength,
- OUT ULONG* BytesReturned
+ _In_reads_bytes_(MethodLength) PKSMETHOD Method,
+ _In_ ULONG MethodLength,
+ _Inout_updates_bytes_(DataLength) PVOID MethodData,
+ _In_ ULONG DataLength,
+ _Out_ ULONG *BytesReturned
) PURE;
STDMETHOD_(NTSTATUS, KsEvent)(THIS_
- IN PKSEVENT Event OPTIONAL,
- IN ULONG EventLength,
- IN OUT PVOID EventData,
- IN ULONG DataLength,
- OUT ULONG* BytesReturned
+ _In_reads_bytes_opt_(EventLength) PKSEVENT Event,
+ _In_ ULONG EventLength,
+ _Inout_updates_bytes_(DataLength) PVOID EventData,
+ _In_ ULONG DataLength,
+ _Out_ ULONG *BytesReturned
) PURE;
};
#endif
+_IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI
VOID
NTAPI
KsDeviceRegisterAdapterObject(
- IN PKSDEVICE Device,
- IN PADAPTER_OBJECT AdapterObject,
- IN ULONG MaxMappingByteCount,
- IN ULONG MappingTableStride);
+ _In_ PKSDEVICE Device,
+ _In_ PADAPTER_OBJECT AdapterObject,
+ _In_ ULONG MaxMappingByteCount,
+ _In_ ULONG MappingTableStride);
+_IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI
ULONG
NTAPI
KsDeviceSetBusData(
- IN PKSDEVICE Device,
- IN ULONG DataType,
- IN PVOID Buffer,
- IN ULONG Offset,
- IN ULONG Length);
-
+ _In_ PKSDEVICE Device,
+ _In_ ULONG DataType,
+ _In_reads_bytes_(Length) PVOID Buffer,
+ _In_ ULONG Offset,
+ _In_ ULONG Length);
+_IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI
VOID
NTAPI
KsReleaseControl(
- IN PVOID Object
- );
+ _In_ PVOID Object);
#define KsDiscard(object, pointer) \
KsRemoveItemFromObjectBag(object->Bag, pointer, TRUE)
#define KsFilterAddEvent(Filter, EventEntry) \
KsAddEvent(Filter,EventEntry);
+_IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI
VOID
NTAPI
KsFilterAcquireProcessingMutex(
- IN PKSFILTER Filter);
-
+ _In_ PKSFILTER Filter);
+_IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI
NTSTATUS
NTAPI
KsFilterAddTopologyConnections(
- IN PKSFILTER Filter,
- IN ULONG NewConnectionsCount,
- IN const KSTOPOLOGY_CONNECTION *const NewTopologyConnections);
+ _In_ PKSFILTER Filter,
+ _In_ ULONG NewConnectionsCount,
+ _In_reads_(NewConnectionsCount) const KSTOPOLOGY_CONNECTION *const NewTopologyConnections);
+_IRQL_requires_max_(DISPATCH_LEVEL)
KSDDKAPI
VOID
NTAPI
KsFilterAttemptProcessing(
- IN PKSFILTER Filter,
- IN BOOLEAN Asynchronous);
+ _In_ PKSFILTER Filter,
+ _In_ BOOLEAN Asynchronous);
+_IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI
NTSTATUS
NTAPI
KsFilterCreateNode(
- IN PKSFILTER Filter,
- IN const KSNODE_DESCRIPTOR *const NodeDescriptor,
- OUT PULONG NodeID);
+ _In_ PKSFILTER Filter,
+ _In_ const KSNODE_DESCRIPTOR *const NodeDescriptor,
+ _Out_ PULONG NodeID);
+_IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI
NTSTATUS
NTAPI
KsFilterCreatePinFactory(
- IN PKSFILTER Filter,
- IN const KSPIN_DESCRIPTOR_EX *const PinDescriptor,
- OUT PULONG PinID);
+ _In_ PKSFILTER Filter,
+ _In_ const KSPIN_DESCRIPTOR_EX *const PinDescriptor,
+ _Out_ PULONG PinID);
+_IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI
PKSDEVICE
__inline
KsFilterFactoryGetDevice(
- IN PKSFILTERFACTORY FilterFactory);
+ _In_ PKSFILTERFACTORY FilterFactory);
/* etc. */
#endif /* avstream */
}
#endif
-#endif
+#endif /* _KS_ */
#include <wincrypt.h>
#endif
+#define MAX_GUID_CHARS 38
+
#ifdef __cplusplus
extern "C" {
#endif
typedef INT (CALLBACK *INSTALLUI_HANDLER_RECORD)(LPVOID, UINT, MSIHANDLE);
typedef INSTALLUI_HANDLER_RECORD* PINSTALLUI_HANDLER_RECORD;
-UINT WINAPI MsiAdvertiseProductA(LPCSTR, LPCSTR, LPCSTR, LANGID);
-UINT WINAPI MsiAdvertiseProductW(LPCWSTR, LPCWSTR, LPCWSTR, LANGID);
+UINT
+WINAPI
+MsiAdvertiseProductA(
+ _In_ LPCSTR,
+ _In_opt_ LPCSTR,
+ _In_opt_ LPCSTR,
+ _In_ LANGID);
+
+UINT
+WINAPI
+MsiAdvertiseProductW(
+ _In_ LPCWSTR,
+ _In_opt_ LPCWSTR,
+ _In_opt_ LPCWSTR,
+ _In_ LANGID);
+
#define MsiAdvertiseProduct WINELIB_NAME_AW(MsiAdvertiseProduct)
-UINT WINAPI MsiAdvertiseProductExA(LPCSTR, LPCSTR, LPCSTR, LANGID, DWORD, DWORD);
-UINT WINAPI MsiAdvertiseProductExW(LPCWSTR, LPCWSTR, LPCWSTR, LANGID, DWORD, DWORD);
+UINT
+WINAPI
+MsiAdvertiseProductExA(
+ _In_ LPCSTR,
+ _In_opt_ LPCSTR,
+ _In_opt_ LPCSTR,
+ _In_ LANGID,
+ _In_ DWORD,
+ _In_ DWORD);
+
+UINT
+WINAPI
+MsiAdvertiseProductExW(
+ _In_ LPCWSTR,
+ _In_opt_ LPCWSTR,
+ _In_opt_ LPCWSTR,
+ _In_ LANGID,
+ _In_ DWORD,
+ _In_ DWORD);
+
#define MsiAdvertiseProductEx WINELIB_NAME_AW(MsiAdvertiseProductEx)
-UINT WINAPI MsiInstallProductA(LPCSTR, LPCSTR);
-UINT WINAPI MsiInstallProductW(LPCWSTR, LPCWSTR);
+UINT WINAPI MsiInstallProductA(_In_ LPCSTR, _In_opt_ LPCSTR);
+UINT WINAPI MsiInstallProductW(_In_ LPCWSTR, _In_opt_ LPCWSTR);
#define MsiInstallProduct WINELIB_NAME_AW(MsiInstallProduct)
-UINT WINAPI MsiReinstallProductA(LPCSTR, DWORD);
-UINT WINAPI MsiReinstallProductW(LPCWSTR, DWORD);
+UINT WINAPI MsiReinstallProductA(_In_ LPCSTR, _In_ DWORD);
+UINT WINAPI MsiReinstallProductW(_In_ LPCWSTR, _In_ DWORD);
#define MsiReinstallProduct WINELIB_NAME_AW(MsiReinstallProduct)
-UINT WINAPI MsiApplyPatchA(LPCSTR, LPCSTR, INSTALLTYPE, LPCSTR);
-UINT WINAPI MsiApplyPatchW(LPCWSTR, LPCWSTR, INSTALLTYPE, LPCWSTR);
+UINT
+WINAPI
+MsiApplyPatchA(
+ _In_ LPCSTR,
+ _In_opt_ LPCSTR,
+ _In_ INSTALLTYPE,
+ _In_opt_ LPCSTR);
+
+UINT
+WINAPI
+MsiApplyPatchW(
+ _In_ LPCWSTR,
+ _In_opt_ LPCWSTR,
+ _In_ INSTALLTYPE,
+ _In_opt_ LPCWSTR);
+
#define MsiApplyPatch WINELIB_NAME_AW(MsiApplyPatch)
UINT WINAPI MsiEnumComponentCostsA(MSIHANDLE, LPCSTR, DWORD, INSTALLSTATE, LPSTR, LPDWORD, LPINT, LPINT);
UINT WINAPI MsiEnumComponentCostsW(MSIHANDLE, LPCWSTR, DWORD, INSTALLSTATE, LPWSTR, LPDWORD, LPINT, LPINT);
#define MsiEnumComponentCosts WINELIB_NAME_AW(MsiEnumComponentCosts)
-UINT WINAPI MsiEnumProductsA(DWORD, LPSTR);
-UINT WINAPI MsiEnumProductsW(DWORD, LPWSTR);
+UINT
+WINAPI
+MsiEnumProductsA(
+ _In_ DWORD,
+ _Out_writes_(MAX_GUID_CHARS + 1) LPSTR);
+
+UINT
+WINAPI
+MsiEnumProductsW(
+ _In_ DWORD,
+ _Out_writes_(MAX_GUID_CHARS + 1) LPWSTR);
+
#define MsiEnumProducts WINELIB_NAME_AW(MsiEnumProducts)
-UINT WINAPI MsiEnumProductsExA(LPCSTR, LPCSTR, DWORD, DWORD, CHAR[39], MSIINSTALLCONTEXT*, LPSTR, LPDWORD);
-UINT WINAPI MsiEnumProductsExW(LPCWSTR, LPCWSTR, DWORD, DWORD, WCHAR[39], MSIINSTALLCONTEXT*, LPWSTR, LPDWORD);
+UINT
+WINAPI
+MsiEnumProductsExA(
+ _In_opt_ LPCSTR,
+ _In_opt_ LPCSTR,
+ _In_ DWORD,
+ _In_ DWORD,
+ _Out_writes_opt_(MAX_GUID_CHARS + 1) CHAR[39],
+ _Out_opt_ MSIINSTALLCONTEXT*,
+ _Out_writes_opt_(*pcchSid) LPSTR,
+ _Inout_opt_ LPDWORD pcchSid);
+
+UINT
+WINAPI
+MsiEnumProductsExW(
+ _In_opt_ LPCWSTR,
+ _In_opt_ LPCWSTR,
+ _In_ DWORD,
+ _In_ DWORD,
+ _Out_writes_opt_(MAX_GUID_CHARS + 1) WCHAR[39],
+ _Out_opt_ MSIINSTALLCONTEXT*,
+ _Out_writes_opt_(*pcchSid) LPWSTR,
+ _Inout_opt_ LPDWORD pcchSid);
+
#define MsiEnumProductsEx WINELIB_NAME_AW(MsiEnumProductsEx)
-UINT WINAPI MsiEnumFeaturesA(LPCSTR, DWORD, LPSTR, LPSTR);
-UINT WINAPI MsiEnumFeaturesW(LPCWSTR, DWORD, LPWSTR, LPWSTR);
+UINT
+WINAPI
+MsiEnumFeaturesA(
+ _In_ LPCSTR,
+ _In_ DWORD,
+ _Out_writes_(MAX_FEATURE_CHARS + 1) LPSTR,
+ _Out_writes_opt_(MAX_FEATURE_CHARS + 1) LPSTR);
+
+UINT
+WINAPI
+MsiEnumFeaturesW(
+ _In_ LPCWSTR,
+ _In_ DWORD,
+ _Out_writes_(MAX_FEATURE_CHARS + 1) LPWSTR,
+ _Out_writes_opt_(MAX_FEATURE_CHARS + 1) LPWSTR);
+
#define MsiEnumFeatures WINELIB_NAME_AW(MsiEnumFeatures)
-UINT WINAPI MsiEnumComponentsA(DWORD, LPSTR);
-UINT WINAPI MsiEnumComponentsW(DWORD, LPWSTR);
+UINT
+WINAPI
+MsiEnumComponentsA(
+ _In_ DWORD,
+ _Out_writes_(MAX_GUID_CHARS + 1) LPSTR);
+
+UINT
+WINAPI
+MsiEnumComponentsW(
+ _In_ DWORD,
+ _Out_writes_(MAX_GUID_CHARS + 1) LPWSTR);
+
#define MsiEnumComponents WINELIB_NAME_AW(MsiEnumComponents)
-UINT WINAPI MsiEnumComponentsExA(LPCSTR, DWORD, DWORD, CHAR[39],
- MSIINSTALLCONTEXT *, LPSTR, LPDWORD);
-UINT WINAPI MsiEnumComponentsExW(LPCWSTR, DWORD, DWORD, WCHAR[39],
- MSIINSTALLCONTEXT *, LPWSTR, LPDWORD);
+UINT
+WINAPI
+MsiEnumComponentsExA(
+ _In_opt_ LPCSTR,
+ _In_ DWORD,
+ _In_ DWORD,
+ _Out_writes_opt_(MAX_GUID_CHARS + 1) CHAR[39],
+ _Out_opt_ MSIINSTALLCONTEXT *,
+ _Out_writes_opt_(*pcchSid) LPSTR,
+ _Inout_opt_ LPDWORD pcchSid);
+
+UINT
+WINAPI
+MsiEnumComponentsExW(
+ _In_opt_ LPCWSTR,
+ _In_ DWORD,
+ _In_ DWORD,
+ _Out_writes_opt_(MAX_GUID_CHARS + 1) WCHAR[39],
+ _Out_opt_ MSIINSTALLCONTEXT *,
+ _Out_writes_opt_(*pcchSid) LPWSTR,
+ _Inout_opt_ LPDWORD pcchSid);
+
#define MsiEnumComponentsEx WINELIB_NAME_AW(MsiEnumComponentsEx)
-UINT WINAPI MsiEnumClientsA(LPCSTR, DWORD, LPSTR);
-UINT WINAPI MsiEnumClientsW(LPCWSTR, DWORD, LPWSTR);
+UINT
+WINAPI
+MsiEnumClientsA(
+ _In_ LPCSTR,
+ _In_ DWORD,
+ _Out_writes_(MAX_GUID_CHARS + 1) LPSTR);
+
+UINT
+WINAPI
+MsiEnumClientsW(
+ _In_ LPCWSTR,
+ _In_ DWORD,
+ _Out_writes_(MAX_GUID_CHARS + 1) LPWSTR);
+
#define MsiEnumClients WINELIB_NAME_AW(MsiEnumClients)
-UINT WINAPI MsiOpenPackageA(LPCSTR, MSIHANDLE*);
-UINT WINAPI MsiOpenPackageW(LPCWSTR, MSIHANDLE*);
+UINT WINAPI MsiOpenPackageA(_In_ LPCSTR, _Out_ MSIHANDLE*);
+UINT WINAPI MsiOpenPackageW(_In_ LPCWSTR, _Out_ MSIHANDLE*);
#define MsiOpenPackage WINELIB_NAME_AW(MsiOpenPackage)
-UINT WINAPI MsiOpenPackageExA(LPCSTR, DWORD, MSIHANDLE*);
-UINT WINAPI MsiOpenPackageExW(LPCWSTR, DWORD, MSIHANDLE*);
+UINT WINAPI MsiOpenPackageExA(_In_ LPCSTR, _In_ DWORD, _Out_ MSIHANDLE*);
+UINT WINAPI MsiOpenPackageExW(_In_ LPCWSTR, _In_ DWORD, _Out_ MSIHANDLE*);
#define MsiOpenPackageEx WINELIB_NAME_AW(MsiOpenPackageEx)
-UINT WINAPI MsiOpenProductA(LPCSTR, MSIHANDLE*);
-UINT WINAPI MsiOpenProductW(LPCWSTR, MSIHANDLE*);
+UINT WINAPI MsiOpenProductA(_In_ LPCSTR, _Out_ MSIHANDLE*);
+UINT WINAPI MsiOpenProductW(_In_ LPCWSTR, _Out_ MSIHANDLE*);
#define MsiOpenProduct WINELIB_NAME_AW(MsiOpenProduct)
-UINT WINAPI MsiGetProductPropertyA(MSIHANDLE,LPCSTR,LPSTR,LPDWORD);
-UINT WINAPI MsiGetProductPropertyW(MSIHANDLE,LPCWSTR,LPWSTR,LPDWORD);
+UINT
+WINAPI
+MsiGetProductPropertyA(
+ _In_ MSIHANDLE,
+ _In_ LPCSTR,
+ _Out_writes_opt_(*pcchValueBuf) LPSTR,
+ _Inout_opt_ LPDWORD pcchValueBuf);
+
+UINT
+WINAPI
+MsiGetProductPropertyW(
+ _In_ MSIHANDLE,
+ _In_ LPCWSTR,
+ _Out_writes_opt_(*pcchValueBuf) LPWSTR,
+ _Inout_opt_ LPDWORD pcchValueBuf);
+
#define MsiGetProductProperty WINELIB_NAME_AW(MsiGetProductProperty)
-UINT WINAPI MsiVerifyPackageA(LPCSTR);
-UINT WINAPI MsiVerifyPackageW(LPCWSTR);
+UINT WINAPI MsiVerifyPackageA(_In_ LPCSTR);
+UINT WINAPI MsiVerifyPackageW(_In_ LPCWSTR);
#define MsiVerifyPackage WINELIB_NAME_AW(MsiVerifyPackage)
-UINT WINAPI MsiQueryComponentStateA(LPCSTR,LPCSTR,MSIINSTALLCONTEXT,LPCSTR,INSTALLSTATE*);
-UINT WINAPI MsiQueryComponentStateW(LPCWSTR,LPCWSTR,MSIINSTALLCONTEXT,LPCWSTR,INSTALLSTATE*);
+UINT
+WINAPI
+MsiQueryComponentStateA(
+ _In_ LPCSTR,
+ _In_opt_ LPCSTR,
+ _In_ MSIINSTALLCONTEXT,
+ _In_ LPCSTR,
+ _Out_opt_ INSTALLSTATE*);
+
+UINT
+WINAPI
+MsiQueryComponentStateW(
+ _In_ LPCWSTR,
+ _In_opt_ LPCWSTR,
+ _In_ MSIINSTALLCONTEXT,
+ _In_ LPCWSTR,
+ _Out_opt_ INSTALLSTATE*);
+
#define MsiQueryComponentState WINELIB_NAME_AW(MsiQueryComponentState)
-INSTALLSTATE WINAPI MsiQueryProductStateA(LPCSTR);
-INSTALLSTATE WINAPI MsiQueryProductStateW(LPCWSTR);
+INSTALLSTATE WINAPI MsiQueryProductStateA(_In_ LPCSTR);
+INSTALLSTATE WINAPI MsiQueryProductStateW(_In_ LPCWSTR);
#define MsiQueryProductState WINELIB_NAME_AW(MsiQueryProductState)
-UINT WINAPI MsiConfigureProductA(LPCSTR, int, INSTALLSTATE);
-UINT WINAPI MsiConfigureProductW(LPCWSTR, int, INSTALLSTATE);
+UINT WINAPI MsiConfigureProductA(_In_ LPCSTR, _In_ int, _In_ INSTALLSTATE);
+UINT WINAPI MsiConfigureProductW(_In_ LPCWSTR, _In_ int, _In_ INSTALLSTATE);
#define MsiConfigureProduct WINELIB_NAME_AW(MsiConfigureProduct);
-UINT WINAPI MsiConfigureProductExA(LPCSTR, int, INSTALLSTATE, LPCSTR);
-UINT WINAPI MsiConfigureProductExW(LPCWSTR, int, INSTALLSTATE, LPCWSTR);
+UINT
+WINAPI
+MsiConfigureProductExA(
+ _In_ LPCSTR,
+ _In_ int,
+ _In_ INSTALLSTATE,
+ _In_opt_ LPCSTR);
+
+UINT
+WINAPI
+MsiConfigureProductExW(
+ _In_ LPCWSTR,
+ _In_ int,
+ _In_ INSTALLSTATE,
+ _In_opt_ LPCWSTR);
+
#define MsiConfigureProductEx WINELIB_NAME_AW(MsiConfigureProductEx);
-UINT WINAPI MsiConfigureFeatureA(LPCSTR, LPCSTR, INSTALLSTATE);
-UINT WINAPI MsiConfigureFeatureW(LPCWSTR, LPCWSTR, INSTALLSTATE);
+UINT
+WINAPI
+MsiConfigureFeatureA(
+ _In_ LPCSTR,
+ _In_ LPCSTR,
+ _In_ INSTALLSTATE);
+
+UINT
+WINAPI
+MsiConfigureFeatureW(
+ _In_ LPCWSTR,
+ _In_ LPCWSTR,
+ _In_ INSTALLSTATE);
+
#define MsiConfigureFeature WINELIB_NAME_AW(MsiConfigureFeature);
-UINT WINAPI MsiGetProductCodeA(LPCSTR, LPSTR);
-UINT WINAPI MsiGetProductCodeW(LPCWSTR, LPWSTR);
+UINT
+WINAPI
+MsiGetProductCodeA(
+ _In_ LPCSTR,
+ _Out_writes_(MAX_GUID_CHARS + 1) LPSTR);
+
+UINT
+WINAPI
+MsiGetProductCodeW(
+ _In_ LPCWSTR,
+ _Out_writes_(MAX_GUID_CHARS + 1) LPWSTR);
+
#define MsiGetProductCode WINELIB_NAME_AW(MsiGetProductCode)
-UINT WINAPI MsiGetProductInfoA(LPCSTR, LPCSTR, LPSTR, LPDWORD);
-UINT WINAPI MsiGetProductInfoW(LPCWSTR, LPCWSTR, LPWSTR, LPDWORD);
+UINT
+WINAPI
+MsiGetProductInfoA(
+ _In_ LPCSTR,
+ _In_ LPCSTR,
+ _Out_writes_opt_(*pcchValueBuf) LPSTR,
+ _Inout_opt_ LPDWORD pcchValueBuf);
+
+UINT
+WINAPI
+MsiGetProductInfoW(
+ _In_ LPCWSTR,
+ _In_ LPCWSTR,
+ _Out_writes_opt_(*pcchValueBuf) LPWSTR,
+ _Inout_opt_ LPDWORD pcchValueBuf);
+
#define MsiGetProductInfo WINELIB_NAME_AW(MsiGetProductInfo)
-UINT WINAPI MsiGetProductInfoExA(LPCSTR, LPCSTR, MSIINSTALLCONTEXT, LPCSTR, LPSTR, LPDWORD);
-UINT WINAPI MsiGetProductInfoExW(LPCWSTR, LPCWSTR, MSIINSTALLCONTEXT, LPCWSTR, LPWSTR, LPDWORD);
+UINT
+WINAPI
+MsiGetProductInfoExA(
+ _In_ LPCSTR,
+ _In_opt_ LPCSTR,
+ _In_ MSIINSTALLCONTEXT,
+ _In_ LPCSTR,
+ _Out_writes_opt_(*pcchValue) LPSTR,
+ _Inout_opt_ LPDWORD pcchValue);
+
+UINT
+WINAPI
+MsiGetProductInfoExW(
+ _In_ LPCWSTR,
+ _In_opt_ LPCWSTR,
+ _In_ MSIINSTALLCONTEXT,
+ _In_ LPCWSTR,
+ _Out_writes_opt_(*pcchValue) LPWSTR,
+ _Inout_opt_ LPDWORD pcchValue);
+
#define MsiGetProductInfoEx WINELIB_NAME_AW(MsiGetProductInfoEx)
-UINT WINAPI MsiGetPatchInfoExA(LPCSTR, LPCSTR, LPCSTR, MSIINSTALLCONTEXT, LPCSTR, LPSTR, LPDWORD);
-UINT WINAPI MsiGetPatchInfoExW(LPCWSTR, LPCWSTR, LPCWSTR, MSIINSTALLCONTEXT, LPCWSTR, LPWSTR, LPDWORD);
+UINT
+WINAPI
+MsiGetPatchInfoExA(
+ _In_ LPCSTR,
+ _In_ LPCSTR,
+ _In_opt_ LPCSTR,
+ _In_ MSIINSTALLCONTEXT,
+ _In_ LPCSTR,
+ _Out_writes_opt_(*pcchValue) LPSTR,
+ _Inout_opt_ LPDWORD pcchValue);
+
+UINT
+WINAPI
+MsiGetPatchInfoExW(
+ _In_ LPCWSTR,
+ _In_ LPCWSTR,
+ _In_opt_ LPCWSTR,
+ _In_ MSIINSTALLCONTEXT,
+ _In_ LPCWSTR,
+ _Out_writes_opt_(*pcchValue) LPWSTR,
+ _Inout_opt_ LPDWORD pcchValue);
+
#define MsiGetPatchInfoEx WINELIB_NAME_AW(MsiGetPatchInfoEx)
-UINT WINAPI MsiGetPatchInfoA(LPCSTR, LPCSTR, LPSTR, LPDWORD);
-UINT WINAPI MsiGetPatchInfoW(LPCWSTR, LPCWSTR, LPWSTR, LPDWORD);
+UINT
+WINAPI
+MsiGetPatchInfoA(
+ _In_ LPCSTR,
+ _In_ LPCSTR,
+ _Out_writes_opt_(*pcchValueBuf) LPSTR,
+ _Inout_opt_ LPDWORD pcchValueBuf);
+
+UINT
+WINAPI
+MsiGetPatchInfoW(
+ _In_ LPCWSTR,
+ _In_ LPCWSTR,
+ _Out_writes_opt_(*pcchValueBuf) LPWSTR,
+ _Inout_opt_ LPDWORD pcchValueBuf);
+
#define MsiGetPatchInfo WINELIB_NAME_AW(MsiGetPatchInfo)
-UINT WINAPI MsiEnableLogA(DWORD, LPCSTR, DWORD);
-UINT WINAPI MsiEnableLogW(DWORD, LPCWSTR, DWORD);
+UINT WINAPI MsiEnableLogA(_In_ DWORD, _In_opt_ LPCSTR, _In_ DWORD);
+UINT WINAPI MsiEnableLogW(_In_ DWORD, _In_opt_ LPCWSTR, _In_ DWORD);
#define MsiEnableLog WINELIB_NAME_AW(MsiEnableLog)
-INSTALLUI_HANDLERA WINAPI MsiSetExternalUIA(INSTALLUI_HANDLERA, DWORD, LPVOID);
-INSTALLUI_HANDLERW WINAPI MsiSetExternalUIW(INSTALLUI_HANDLERW, DWORD, LPVOID);
+INSTALLUI_HANDLERA
+WINAPI
+MsiSetExternalUIA(
+ _In_opt_ INSTALLUI_HANDLERA,
+ _In_ DWORD,
+ _In_opt_ LPVOID);
+
+INSTALLUI_HANDLERW
+WINAPI
+MsiSetExternalUIW(
+ _In_opt_ INSTALLUI_HANDLERW,
+ _In_ DWORD,
+ _In_opt_ LPVOID);
+
#define MsiSetExternalUI WINELIB_NAME_AW(MsiSetExternalUI)
-INSTALLSTATE WINAPI MsiGetComponentPathA(LPCSTR, LPCSTR, LPSTR, LPDWORD);
-INSTALLSTATE WINAPI MsiGetComponentPathW(LPCWSTR, LPCWSTR, LPWSTR, LPDWORD);
+INSTALLSTATE
+WINAPI
+MsiGetComponentPathA(
+ _In_ LPCSTR,
+ _In_ LPCSTR,
+ _Out_writes_opt_(*pcchBuf) LPSTR,
+ _Inout_opt_ LPDWORD pcchBuf);
+
+INSTALLSTATE
+WINAPI
+MsiGetComponentPathW(
+ _In_ LPCWSTR,
+ _In_ LPCWSTR,
+ _Out_writes_opt_(*pcchBuf) LPWSTR,
+ _Inout_opt_ LPDWORD pcchBuf);
+
#define MsiGetComponentPath WINELIB_NAME_AW(MsiGetComponentPath)
-INSTALLSTATE WINAPI MsiQueryFeatureStateA(LPCSTR, LPCSTR);
-INSTALLSTATE WINAPI MsiQueryFeatureStateW(LPCWSTR, LPCWSTR);
+INSTALLSTATE WINAPI MsiQueryFeatureStateA(_In_ LPCSTR, _In_ LPCSTR);
+INSTALLSTATE WINAPI MsiQueryFeatureStateW(_In_ LPCWSTR, _In_ LPCWSTR);
#define MsiQueryFeatureState WINELIB_NAME_AW(MsiQueryFeatureState)
-UINT WINAPI MsiQueryFeatureStateExA(LPCSTR, LPCSTR, MSIINSTALLCONTEXT, LPCSTR, INSTALLSTATE*);
-UINT WINAPI MsiQueryFeatureStateExW(LPCWSTR, LPCWSTR, MSIINSTALLCONTEXT, LPCWSTR, INSTALLSTATE*);
+UINT
+WINAPI
+MsiQueryFeatureStateExA(
+ _In_ LPCSTR,
+ _In_opt_ LPCSTR,
+ _In_ MSIINSTALLCONTEXT,
+ _In_ LPCSTR,
+ _Out_opt_ INSTALLSTATE*);
+
+UINT
+WINAPI
+MsiQueryFeatureStateExW(
+ _In_ LPCWSTR,
+ _In_opt_ LPCWSTR,
+ _In_ MSIINSTALLCONTEXT,
+ _In_ LPCWSTR,
+ _Out_opt_ INSTALLSTATE*);
+
#define MsiQueryFeatureStateEx WINELIB_NAME_AW(MsiQueryFeatureStateEx)
-UINT WINAPI MsiGetFeatureInfoA(MSIHANDLE, LPCSTR, LPDWORD, LPSTR, LPDWORD, LPSTR, LPDWORD);
-UINT WINAPI MsiGetFeatureInfoW(MSIHANDLE, LPCWSTR, LPDWORD, LPWSTR, LPDWORD, LPWSTR, LPDWORD);
+UINT
+WINAPI
+MsiGetFeatureInfoA(
+ _In_ MSIHANDLE,
+ _In_ LPCSTR,
+ _Out_opt_ LPDWORD,
+ _Out_writes_opt_(*pcchTitleBuf) LPSTR,
+ _Inout_opt_ LPDWORD pcchTitleBuf,
+ _Out_writes_opt_(*pcchHelpBuf) LPSTR,
+ _Inout_opt_ LPDWORD pcchHelpBuf);
+
+UINT
+WINAPI
+MsiGetFeatureInfoW(
+ _In_ MSIHANDLE,
+ _In_ LPCWSTR,
+ _Out_opt_ LPDWORD,
+ _Out_writes_opt_(*pcchTitleBuf) LPWSTR,
+ _Inout_opt_ LPDWORD pcchTitleBuf,
+ _Out_writes_opt_(*pcchHelpBuf) LPWSTR,
+ _Inout_opt_ LPDWORD pcchHelpBuf);
+
#define MsiGetFeatureInfo WINELIB_NAME_AW(MsiGetFeatureInfo)
-UINT WINAPI MsiGetFeatureUsageA(LPCSTR, LPCSTR, LPDWORD, LPWORD);
-UINT WINAPI MsiGetFeatureUsageW(LPCWSTR, LPCWSTR, LPDWORD, LPWORD);
+UINT
+WINAPI
+MsiGetFeatureUsageA(
+ _In_ LPCSTR,
+ _In_ LPCSTR,
+ _Out_opt_ LPDWORD,
+ _Out_opt_ LPWORD);
+
+UINT
+WINAPI
+MsiGetFeatureUsageW(
+ _In_ LPCWSTR,
+ _In_ LPCWSTR,
+ _Out_opt_ LPDWORD,
+ _Out_opt_ LPWORD);
+
#define MsiGetFeatureUsage WINELIB_NAME_AW(MsiGetFeatureUsage)
-UINT WINAPI MsiEnumRelatedProductsA(LPCSTR, DWORD, DWORD, LPSTR);
-UINT WINAPI MsiEnumRelatedProductsW(LPCWSTR, DWORD, DWORD, LPWSTR);
+UINT
+WINAPI
+MsiEnumRelatedProductsA(
+ _In_ LPCSTR,
+ _Reserved_ DWORD,
+ _In_ DWORD,
+ _Out_writes_(MAX_GUID_CHARS + 1) LPSTR);
+
+UINT
+WINAPI
+MsiEnumRelatedProductsW(
+ _In_ LPCWSTR,
+ _Reserved_ DWORD,
+ _In_ DWORD,
+ _Out_writes_(MAX_GUID_CHARS + 1) LPWSTR);
+
#define MsiEnumRelatedProducts WINELIB_NAME_AW(MsiEnumRelatedProducts)
-UINT WINAPI MsiProvideAssemblyA(LPCSTR, LPCSTR, DWORD, DWORD, LPSTR, LPDWORD);
-UINT WINAPI MsiProvideAssemblyW(LPCWSTR, LPCWSTR, DWORD, DWORD, LPWSTR, LPDWORD);
+UINT
+WINAPI
+MsiProvideAssemblyA(
+ _In_ LPCSTR,
+ _In_opt_ LPCSTR,
+ _In_ DWORD,
+ _In_ DWORD,
+ _Out_writes_opt_(*pcchPathBuf) LPSTR,
+ _Inout_opt_ LPDWORD pcchPathBuf);
+
+UINT
+WINAPI
+MsiProvideAssemblyW(
+ _In_ LPCWSTR,
+ _In_opt_ LPCWSTR,
+ _In_ DWORD,
+ _In_ DWORD,
+ _Out_writes_opt_(*pcchPathBuf) LPWSTR,
+ _Inout_opt_ LPDWORD pcchPathBuf);
+
#define MsiProvideAssembly WINELIB_NAME_AW(MsiProvideAssembly)
-UINT WINAPI MsiEnumComponentQualifiersA(LPCSTR, DWORD, LPSTR, LPDWORD, LPSTR, LPDWORD);
-UINT WINAPI MsiEnumComponentQualifiersW(LPCWSTR, DWORD, LPWSTR, LPDWORD, LPWSTR, LPDWORD);
+UINT
+WINAPI
+MsiEnumComponentQualifiersA(
+ _In_ LPCSTR,
+ _In_ DWORD,
+ _Out_writes_(*pcchQualifierBuf) LPSTR,
+ _Inout_ LPDWORD pcchQualifierBuf,
+ _Out_writes_opt_(*pcchApplicationDataBuf) LPSTR,
+ _Inout_opt_ LPDWORD pcchApplicationDataBuf);
+
+UINT
+WINAPI
+MsiEnumComponentQualifiersW(
+ _In_ LPCWSTR,
+ _In_ DWORD,
+ _Out_writes_(*pcchQualifierBuf) LPWSTR,
+ _Inout_ LPDWORD pcchQualifierBuf,
+ _Out_writes_opt_(*pcchApplicationDataBuf) LPWSTR,
+ _Inout_opt_ LPDWORD pcchApplicationDataBuf);
+
#define MsiEnumComponentQualifiers WINELIB_NAME_AW(MsiEnumComponentQualifiers)
-UINT WINAPI MsiGetFileVersionA(LPCSTR, LPSTR, LPDWORD, LPSTR, LPDWORD);
-UINT WINAPI MsiGetFileVersionW(LPCWSTR, LPWSTR, LPDWORD, LPWSTR, LPDWORD);
+UINT
+WINAPI
+MsiGetFileVersionA(
+ _In_ LPCSTR,
+ _Out_writes_opt_(*pcchVersionBuf) LPSTR,
+ _Inout_opt_ LPDWORD pcchVersionBuf,
+ _Out_writes_opt_(*pcchLangBuf) LPSTR,
+ _Inout_opt_ LPDWORD pcchLangBuf);
+
+UINT
+WINAPI
+MsiGetFileVersionW(
+ _In_ LPCWSTR,
+ _Out_writes_opt_(*pcchVersionBuf) LPWSTR,
+ _Inout_opt_ LPDWORD pcchVersionBuf,
+ _Out_writes_opt_(*pcchLangBuf) LPWSTR,
+ _Inout_opt_ LPDWORD pcchLangBuf);
+
#define MsiGetFileVersion WINELIB_NAME_AW(MsiGetFileVersion)
UINT WINAPI MsiMessageBoxA(HWND, LPCSTR, LPCSTR, UINT, WORD, DWORD);
UINT WINAPI MsiMessageBoxW(HWND, LPCWSTR, LPCWSTR, UINT, WORD, DWORD);
#define MsiMessageBox WINELIB_NAME_AW(MsiMessageBox)
-UINT WINAPI MsiProvideQualifiedComponentExA(LPCSTR, LPCSTR, DWORD, LPCSTR, DWORD, DWORD, LPSTR, LPDWORD);
-UINT WINAPI MsiProvideQualifiedComponentExW(LPCWSTR, LPCWSTR, DWORD, LPCWSTR, DWORD, DWORD, LPWSTR, LPDWORD);
+UINT
+WINAPI
+MsiProvideQualifiedComponentExA(
+ _In_ LPCSTR,
+ _In_ LPCSTR,
+ _In_ DWORD,
+ _In_opt_ LPCSTR,
+ _Reserved_ DWORD,
+ _Reserved_ DWORD,
+ _Out_writes_opt_(*pcchPathBuf) LPSTR,
+ _Inout_opt_ LPDWORD pcchPathBuf);
+
+UINT
+WINAPI
+MsiProvideQualifiedComponentExW(
+ _In_ LPCWSTR,
+ _In_ LPCWSTR,
+ _In_ DWORD,
+ _In_opt_ LPCWSTR,
+ _Reserved_ DWORD,
+ _Reserved_ DWORD,
+ _Out_writes_opt_(*pcchPathBuf) LPWSTR,
+ _Inout_opt_ LPDWORD pcchPathBuf);
+
#define MsiProvideQualifiedComponentEx WINELIB_NAME_AW(MsiProvideQualifiedComponentEx)
-UINT WINAPI MsiProvideQualifiedComponentA(LPCSTR, LPCSTR, DWORD, LPSTR, LPDWORD);
-UINT WINAPI MsiProvideQualifiedComponentW(LPCWSTR, LPCWSTR, DWORD, LPWSTR, LPDWORD);
+UINT
+WINAPI
+MsiProvideQualifiedComponentA(
+ _In_ LPCSTR,
+ _In_ LPCSTR,
+ _In_ DWORD,
+ _Out_writes_opt_(*pcchPathBuf) LPSTR,
+ _Inout_opt_ LPDWORD pcchPathBuf);
+
+UINT
+WINAPI
+MsiProvideQualifiedComponentW(
+ _In_ LPCWSTR,
+ _In_ LPCWSTR,
+ _In_ DWORD,
+ _Out_writes_opt_(*pcchPathBuf) LPWSTR,
+ _Inout_opt_ LPDWORD pcchPathBuf);
+
#define MsiProvideQualifiedComponent WINELIB_NAME_AW(MsiProvideQualifiedComponent)
-USERINFOSTATE WINAPI MsiGetUserInfoA(LPCSTR, LPSTR, LPDWORD, LPSTR, LPDWORD, LPSTR, LPDWORD);
-USERINFOSTATE WINAPI MsiGetUserInfoW(LPCWSTR, LPWSTR, LPDWORD, LPWSTR, LPDWORD, LPWSTR, LPDWORD);
+USERINFOSTATE
+WINAPI
+MsiGetUserInfoA(
+ _In_ LPCSTR,
+ _Out_writes_opt_(*pcchUserNameBuf) LPSTR,
+ _Inout_opt_ LPDWORD pcchUserNameBuf,
+ _Out_writes_opt_(*pcchOrgNameBuf) LPSTR,
+ _Inout_opt_ LPDWORD pcchOrgNameBuf,
+ _Out_writes_opt_(*pcchSerialBuf) LPSTR,
+ _Inout_opt_ LPDWORD pcchSerialBuf);
+
+USERINFOSTATE
+WINAPI
+MsiGetUserInfoW(
+ _In_ LPCWSTR,
+ _Out_writes_opt_(*pcchUserNameBuf) LPWSTR,
+ _Inout_opt_ LPDWORD pcchUserNameBuf,
+ _Out_writes_opt_(*pcchOrgNameBuf) LPWSTR,
+ _Inout_opt_ LPDWORD pcchOrgNameBuf,
+ _Out_writes_opt_(*pcchSerialBuf) LPWSTR,
+ _Inout_opt_ LPDWORD pcchSerialBuf);
+
#define MsiGetUserInfo WINELIB_NAME_AW(MsiGetUserInfo)
-UINT WINAPI MsiCollectUserInfoA(LPCSTR);
-UINT WINAPI MsiCollectUserInfoW(LPCWSTR);
+UINT WINAPI MsiCollectUserInfoA(_In_ LPCSTR);
+UINT WINAPI MsiCollectUserInfoW(_In_ LPCWSTR);
#define MsiCollectUserInfo WINELIB_NAME_AW(MsiCollectUserInfo)
-UINT WINAPI MsiReinstallFeatureA(LPCSTR, LPCSTR, DWORD);
-UINT WINAPI MsiReinstallFeatureW(LPCWSTR, LPCWSTR, DWORD);
+UINT WINAPI MsiReinstallFeatureA(_In_ LPCSTR, _In_ LPCSTR, _In_ DWORD);
+UINT WINAPI MsiReinstallFeatureW(_In_ LPCWSTR, _In_ LPCWSTR, _In_ DWORD);
#define MsiReinstallFeature WINELIB_NAME_AW(MsiReinstallFeature)
-UINT WINAPI MsiGetShortcutTargetA(LPCSTR, LPSTR, LPSTR, LPSTR);
-UINT WINAPI MsiGetShortcutTargetW(LPCWSTR, LPWSTR, LPWSTR, LPWSTR);
+UINT
+WINAPI
+MsiGetShortcutTargetA(
+ _In_ LPCSTR,
+ _Out_writes_opt_(MAX_GUID_CHARS + 1) LPSTR,
+ _Out_writes_opt_(MAX_FEATURE_CHARS + 1) LPSTR,
+ _Out_writes_opt_(MAX_GUID_CHARS + 1) LPSTR);
+
+UINT
+WINAPI
+MsiGetShortcutTargetW(
+ _In_ LPCWSTR,
+ _Out_writes_opt_(MAX_GUID_CHARS + 1) LPWSTR,
+ _Out_writes_opt_(MAX_FEATURE_CHARS + 1) LPWSTR,
+ _Out_writes_opt_(MAX_GUID_CHARS + 1) LPWSTR);
+
#define MsiGetShortcutTarget WINELIB_NAME_AW(MsiGetShortcutTarget)
-INSTALLSTATE WINAPI MsiUseFeatureW(LPCWSTR, LPCWSTR);
-INSTALLSTATE WINAPI MsiUseFeatureA(LPCSTR, LPCSTR);
+INSTALLSTATE WINAPI MsiUseFeatureW(_In_ LPCWSTR, _In_ LPCWSTR);
+INSTALLSTATE WINAPI MsiUseFeatureA(_In_ LPCSTR, _In_ LPCSTR);
#define MsiUseFeature WINELIB_NAME_AW(MsiUseFeature)
-INSTALLSTATE WINAPI MsiUseFeatureExW(LPCWSTR, LPCWSTR, DWORD, DWORD);
-INSTALLSTATE WINAPI MsiUseFeatureExA(LPCSTR, LPCSTR, DWORD, DWORD);
+INSTALLSTATE
+WINAPI
+MsiUseFeatureExW(
+ _In_ LPCWSTR,
+ _In_ LPCWSTR,
+ _In_ DWORD,
+ _Reserved_ DWORD);
+
+INSTALLSTATE
+WINAPI
+MsiUseFeatureExA(
+ _In_ LPCSTR,
+ _In_ LPCSTR,
+ _In_ DWORD,
+ _Reserved_ DWORD);
+
#define MsiUseFeatureEx WINELIB_NAME_AW(MsiUseFeatureEx)
-HRESULT WINAPI MsiGetFileSignatureInformationA(LPCSTR, DWORD, PCCERT_CONTEXT*, LPBYTE, LPDWORD);
-HRESULT WINAPI MsiGetFileSignatureInformationW(LPCWSTR, DWORD, PCCERT_CONTEXT*, LPBYTE, LPDWORD);
+HRESULT
+WINAPI
+MsiGetFileSignatureInformationA(
+ _In_ LPCSTR,
+ _In_ DWORD,
+ _Outptr_ PCCERT_CONTEXT*,
+ _Out_writes_bytes_opt_(*pcbHashData) LPBYTE,
+ _Inout_opt_ LPDWORD pcbHashData);
+
+HRESULT
+WINAPI
+MsiGetFileSignatureInformationW(
+ _In_ LPCWSTR,
+ _In_ DWORD,
+ _Outptr_ PCCERT_CONTEXT*,
+ _Out_writes_bytes_opt_(*pcbHashData) LPBYTE,
+ _Inout_opt_ LPDWORD pcbHashData);
+
#define MsiGetFileSignatureInformation WINELIB_NAME_AW(MsiGetFileSignatureInformation)
-INSTALLSTATE WINAPI MsiLocateComponentA(LPCSTR, LPSTR, LPDWORD);
-INSTALLSTATE WINAPI MsiLocateComponentW(LPCWSTR, LPWSTR, LPDWORD);
+INSTALLSTATE
+WINAPI
+MsiLocateComponentA(
+ _In_ LPCSTR,
+ _Out_writes_opt_(*pcchBuf) LPSTR,
+ _Inout_opt_ LPDWORD pcchBuf);
+
+INSTALLSTATE
+WINAPI
+MsiLocateComponentW(
+ _In_ LPCWSTR,
+ _Out_writes_opt_(*pcchBuf) LPWSTR,
+ _Inout_opt_ LPDWORD pcchBuf);
+
#define MsiLocateComponent WINELIB_NAME_AW(MsiLocateComponent)
-UINT WINAPI MsiSourceListAddSourceA(LPCSTR, LPCSTR, DWORD, LPCSTR);
-UINT WINAPI MsiSourceListAddSourceW(LPCWSTR, LPCWSTR, DWORD, LPCWSTR);
+UINT
+WINAPI
+MsiSourceListAddSourceA(
+ _In_ LPCSTR,
+ _In_opt_ LPCSTR,
+ _Reserved_ DWORD,
+ _In_ LPCSTR);
+
+UINT
+WINAPI
+MsiSourceListAddSourceW(
+ _In_ LPCWSTR,
+ _In_opt_ LPCWSTR,
+ _Reserved_ DWORD,
+ _In_ LPCWSTR);
+
#define MsiSourceListAddSource WINELIB_NAME_AW(MsiSourceListAddSource)
-UINT WINAPI MsiSourceListEnumMediaDisksA(LPCSTR, LPCSTR, MSIINSTALLCONTEXT, DWORD, DWORD, LPDWORD,
- LPSTR, LPDWORD, LPSTR, LPDWORD);
-UINT WINAPI MsiSourceListEnumMediaDisksW(LPCWSTR, LPCWSTR, MSIINSTALLCONTEXT, DWORD, DWORD, LPDWORD,
- LPWSTR, LPDWORD, LPWSTR, LPDWORD);
+UINT
+WINAPI
+MsiSourceListEnumMediaDisksA(
+ _In_ LPCSTR,
+ _In_opt_ LPCSTR,
+ _In_ MSIINSTALLCONTEXT,
+ _In_ DWORD,
+ _In_ DWORD,
+ _Out_opt_ LPDWORD,
+ _Out_writes_opt_(*pcchVolumeLabel) LPSTR,
+ _Inout_opt_ LPDWORD pcchVolumeLabel,
+ _Out_writes_opt_(*pcchDiskPrompt) LPSTR,
+ _Inout_opt_ LPDWORD pcchDiskPrompt);
+
+UINT
+WINAPI
+MsiSourceListEnumMediaDisksW(
+ _In_ LPCWSTR,
+ _In_opt_ LPCWSTR,
+ _In_ MSIINSTALLCONTEXT,
+ _In_ DWORD,
+ _In_ DWORD,
+ _Out_opt_ LPDWORD,
+ _Out_writes_opt_(*pcchVolumeLabel) LPWSTR,
+ _Inout_opt_ LPDWORD pcchVolumeLabel,
+ _Out_writes_opt_(*pcchDiskPrompt) LPWSTR,
+ _Inout_opt_ LPDWORD pcchDiskPrompt);
+
#define MsiSourceListEnumMediaDisks WINELIB_NAME_AW(MsiSourceListEnumMediaDisks)
-UINT WINAPI MsiSourceListEnumSourcesA(LPCSTR, LPCSTR, MSIINSTALLCONTEXT, DWORD, DWORD, LPSTR, LPDWORD);
-UINT WINAPI MsiSourceListEnumSourcesW(LPCWSTR, LPCWSTR, MSIINSTALLCONTEXT, DWORD, DWORD, LPWSTR, LPDWORD);
+UINT
+WINAPI
+MsiSourceListEnumSourcesA(
+ _In_ LPCSTR,
+ _In_opt_ LPCSTR,
+ _In_ MSIINSTALLCONTEXT,
+ _In_ DWORD,
+ _In_ DWORD,
+ _Out_writes_opt_(*pcchSource) LPSTR,
+ _Inout_opt_ LPDWORD pcchSource);
+
+UINT
+WINAPI
+MsiSourceListEnumSourcesW(
+ _In_ LPCWSTR,
+ _In_opt_ LPCWSTR,
+ _In_ MSIINSTALLCONTEXT,
+ _In_ DWORD,
+ _In_ DWORD,
+ _Out_writes_opt_(*pcchSource) LPWSTR,
+ _Inout_opt_ LPDWORD pcchSource);
+
#define MsiSourceListEnumSources WINELIB_NAME_AW(MsiSourceListEnumSources)
-UINT WINAPI MsiSourceListClearSourceA(LPCSTR, LPCSTR, MSIINSTALLCONTEXT, DWORD, LPCSTR);
-UINT WINAPI MsiSourceListClearSourceW(LPCWSTR, LPCWSTR, MSIINSTALLCONTEXT, DWORD, LPCWSTR);
+UINT
+WINAPI
+MsiSourceListClearSourceA(
+ _In_ LPCSTR,
+ _In_opt_ LPCSTR,
+ _In_ MSIINSTALLCONTEXT,
+ _In_ DWORD,
+ _In_ LPCSTR);
+
+UINT
+WINAPI
+MsiSourceListClearSourceW(
+ _In_ LPCWSTR,
+ _In_opt_ LPCWSTR,
+ _In_ MSIINSTALLCONTEXT,
+ _In_ DWORD,
+ _In_ LPCWSTR);
+
#define MsiSourceListClearSource WINELIB_NAME_AW(MsiSourceListClearSource)
-UINT WINAPI MsiSourceListClearAllA(LPCSTR, LPCSTR, DWORD);
-UINT WINAPI MsiSourceListClearAllW(LPCWSTR, LPCWSTR, DWORD);
+UINT
+WINAPI
+MsiSourceListClearAllA(
+ _In_ LPCSTR,
+ _In_opt_ LPCSTR,
+ _Reserved_ DWORD);
+
+UINT
+WINAPI
+MsiSourceListClearAllW(
+ _In_ LPCWSTR,
+ _In_opt_ LPCWSTR,
+ _Reserved_ DWORD);
+
#define MsiSourceListClearAll WINELIB_NAME_AW(MsiSourceListClearAll)
-UINT WINAPI MsiSourceListGetInfoA(LPCSTR, LPCSTR, MSIINSTALLCONTEXT, DWORD, LPCSTR, LPSTR, LPDWORD);
-UINT WINAPI MsiSourceListGetInfoW(LPCWSTR, LPCWSTR, MSIINSTALLCONTEXT, DWORD, LPCWSTR, LPWSTR, LPDWORD);
+UINT
+WINAPI
+MsiSourceListGetInfoA(
+ _In_ LPCSTR,
+ _In_opt_ LPCSTR,
+ _In_ MSIINSTALLCONTEXT,
+ _In_ DWORD,
+ _In_ LPCSTR,
+ _Out_writes_opt_(*pcchValue) LPSTR,
+ _Inout_opt_ LPDWORD pcchValue);
+
+UINT
+WINAPI
+MsiSourceListGetInfoW(
+ _In_ LPCWSTR,
+ _In_opt_ LPCWSTR,
+ _In_ MSIINSTALLCONTEXT,
+ _In_ DWORD,
+ _In_ LPCWSTR,
+ _Out_writes_opt_(*pcchValue) LPWSTR,
+ _Inout_opt_ LPDWORD pcchValue);
+
#define MsiSourceListGetInfo WINELIB_NAME_AW(MsiSourceListGetInfo)
-UINT WINAPI MsiSourceListSetInfoA(LPCSTR, LPCSTR, MSIINSTALLCONTEXT, DWORD, LPCSTR, LPCSTR);
-UINT WINAPI MsiSourceListSetInfoW(LPCWSTR, LPCWSTR, MSIINSTALLCONTEXT, DWORD, LPCWSTR, LPCWSTR);
+UINT
+WINAPI
+MsiSourceListSetInfoA(
+ _In_ LPCSTR,
+ _In_opt_ LPCSTR,
+ _In_ MSIINSTALLCONTEXT,
+ _In_ DWORD,
+ _In_ LPCSTR,
+ _In_ LPCSTR);
+
+UINT
+WINAPI
+MsiSourceListSetInfoW(
+ _In_ LPCWSTR,
+ _In_opt_ LPCWSTR,
+ _In_ MSIINSTALLCONTEXT,
+ _In_ DWORD,
+ _In_ LPCWSTR,
+ _In_ LPCWSTR);
+
#define MsiSourceListSetInfo WINELIB_NAME_AW(MsiSourceListSetInfo)
-UINT WINAPI MsiSourceListAddSourceExA(LPCSTR, LPCSTR, MSIINSTALLCONTEXT, DWORD, LPCSTR, DWORD);
-UINT WINAPI MsiSourceListAddSourceExW(LPCWSTR, LPCWSTR, MSIINSTALLCONTEXT, DWORD, LPCWSTR, DWORD);
+UINT
+WINAPI
+MsiSourceListAddSourceExA(
+ _In_ LPCSTR,
+ _In_opt_ LPCSTR,
+ _In_ MSIINSTALLCONTEXT,
+ _In_ DWORD,
+ _In_ LPCSTR,
+ _In_ DWORD);
+
+UINT
+WINAPI
+MsiSourceListAddSourceExW(
+ _In_ LPCWSTR,
+ _In_opt_ LPCWSTR,
+ _In_ MSIINSTALLCONTEXT,
+ _In_ DWORD,
+ _In_ LPCWSTR,
+ _In_ DWORD);
+
#define MsiSourceListAddSourceEx WINELIB_NAME_AW(MsiSourceListAddSourceEx)
-UINT WINAPI MsiSourceListAddMediaDiskA(LPCSTR, LPCSTR, MSIINSTALLCONTEXT, DWORD, DWORD, LPCSTR, LPCSTR);
-UINT WINAPI MsiSourceListAddMediaDiskW(LPCWSTR, LPCWSTR, MSIINSTALLCONTEXT, DWORD, DWORD, LPCWSTR, LPCWSTR);
+UINT
+WINAPI
+MsiSourceListAddMediaDiskA(
+ _In_ LPCSTR,
+ _In_opt_ LPCSTR,
+ _In_ MSIINSTALLCONTEXT,
+ _In_ DWORD,
+ _In_ DWORD,
+ _In_opt_ LPCSTR,
+ _In_opt_ LPCSTR);
+
+UINT
+WINAPI
+MsiSourceListAddMediaDiskW(
+ _In_ LPCWSTR,
+ _In_opt_ LPCWSTR,
+ _In_ MSIINSTALLCONTEXT,
+ _In_ DWORD,
+ _In_ DWORD,
+ _In_opt_ LPCWSTR,
+ _In_opt_ LPCWSTR);
+
#define MsiSourceListAddMediaDisk WINELIB_NAME_AW(MsiSourceListAddMediaDisk)
-UINT WINAPI MsiEnumPatchesA(LPCSTR, DWORD, LPSTR, LPSTR, LPDWORD);
-UINT WINAPI MsiEnumPatchesW(LPCWSTR, DWORD, LPWSTR, LPWSTR, LPDWORD);
+UINT
+WINAPI
+MsiEnumPatchesA(
+ _In_ LPCSTR,
+ _In_ DWORD,
+ _Out_writes_(MAX_GUID_CHARS + 1) LPSTR,
+ _Out_writes_(*pcchTransformsBuf) LPSTR,
+ _Inout_ LPDWORD pcchTransformsBuf);
+
+UINT
+WINAPI
+MsiEnumPatchesW(
+ _In_ LPCWSTR,
+ _In_ DWORD,
+ _Out_writes_(MAX_GUID_CHARS + 1) LPWSTR,
+ _Out_writes_(*pcchTransformsBuf) LPWSTR,
+ _Inout_ LPDWORD pcchTransformsBuf);
+
#define MsiEnumPatches WINELIB_NAME_AW(MsiEnumPatches)
-UINT WINAPI MsiEnumPatchesExA(LPCSTR, LPCSTR, DWORD, DWORD, DWORD, LPSTR, LPSTR,
- MSIINSTALLCONTEXT*, LPSTR, LPDWORD);
-UINT WINAPI MsiEnumPatchesExW(LPCWSTR, LPCWSTR, DWORD, DWORD, DWORD, LPWSTR, LPWSTR,
- MSIINSTALLCONTEXT*, LPWSTR, LPDWORD);
+UINT
+WINAPI
+MsiEnumPatchesExA(
+ _In_opt_ LPCSTR,
+ _In_opt_ LPCSTR,
+ _In_ DWORD,
+ _In_ DWORD,
+ _In_ DWORD,
+ _Out_writes_opt_(MAX_GUID_CHARS + 1) LPSTR,
+ _Out_writes_opt_(MAX_GUID_CHARS + 1) LPSTR,
+ _Out_opt_ MSIINSTALLCONTEXT*,
+ _Out_writes_opt_(*pcchTargetUserSid) LPSTR,
+ _Inout_opt_ LPDWORD pcchTargetUserSid);
+
+UINT
+WINAPI
+MsiEnumPatchesExW(
+ _In_opt_ LPCWSTR,
+ _In_opt_ LPCWSTR,
+ _In_ DWORD,
+ _In_ DWORD,
+ _In_ DWORD,
+ _Out_writes_opt_(MAX_GUID_CHARS + 1) LPWSTR,
+ _Out_writes_opt_(MAX_GUID_CHARS + 1) LPWSTR,
+ _Out_opt_ MSIINSTALLCONTEXT*,
+ _Out_writes_opt_(*pcchTargetUserSid) LPWSTR,
+ _Inout_opt_ LPDWORD pcchTargetUserSid);
+
#define MsiEnumPatchesEx WINELIB_NAME_AW(MsiEnumPatchesEx)
-UINT WINAPI MsiGetFileHashA(LPCSTR, DWORD, PMSIFILEHASHINFO);
-UINT WINAPI MsiGetFileHashW(LPCWSTR, DWORD, PMSIFILEHASHINFO);
+UINT
+WINAPI
+MsiGetFileHashA(
+ _In_ LPCSTR,
+ _In_ DWORD,
+ _Inout_ PMSIFILEHASHINFO);
+
+UINT
+WINAPI
+MsiGetFileHashW(
+ _In_ LPCWSTR,
+ _In_ DWORD,
+ _Inout_ PMSIFILEHASHINFO);
+
#define MsiGetFileHash WINELIB_NAME_AW(MsiGetFileHash)
-UINT WINAPI MsiAdvertiseScriptA(LPCSTR, DWORD, PHKEY, BOOL);
-UINT WINAPI MsiAdvertiseScriptW(LPCWSTR, DWORD, PHKEY, BOOL);
+UINT
+WINAPI
+MsiAdvertiseScriptA(
+ _In_ LPCSTR,
+ _In_ DWORD,
+ _In_opt_ PHKEY,
+ _In_ BOOL);
+
+UINT
+WINAPI
+MsiAdvertiseScriptW(
+ _In_ LPCWSTR,
+ _In_ DWORD,
+ _In_opt_ PHKEY,
+ _In_ BOOL);
+
#define MsiAdvertiseScript WINELIB_NAME_AW(MsiAdvertiseScript)
-UINT WINAPI MsiIsProductElevatedA(LPCSTR, BOOL *);
-UINT WINAPI MsiIsProductElevatedW(LPCWSTR, BOOL *);
+UINT WINAPI MsiIsProductElevatedA(_In_ LPCSTR, _Out_ BOOL *);
+UINT WINAPI MsiIsProductElevatedW(_In_ LPCWSTR, _Out_ BOOL *);
#define MsiIsProductElevated WINELIB_NAME_AW(MsiIsProductElevated)
UINT WINAPI MsiDatabaseMergeA(MSIHANDLE, MSIHANDLE, LPCSTR);
UINT WINAPI MsiDatabaseMergeW(MSIHANDLE, MSIHANDLE, LPCWSTR);
#define MsiDatabaseMerge WINELIB_NAME_AW(MsiDatabaseMerge)
-UINT WINAPI MsiInstallMissingComponentA(LPCSTR, LPCSTR, INSTALLSTATE);
-UINT WINAPI MsiInstallMissingComponentW(LPCWSTR, LPCWSTR, INSTALLSTATE);
+UINT
+WINAPI
+MsiInstallMissingComponentA(
+ _In_ LPCSTR,
+ _In_ LPCSTR,
+ _In_ INSTALLSTATE);
+
+UINT
+WINAPI
+MsiInstallMissingComponentW(
+ _In_ LPCWSTR,
+ _In_ LPCWSTR,
+ _In_ INSTALLSTATE);
+
#define MsiInstallMissingComponent WINELIB_NAME_AW(MsiInstallMissingComponent)
-UINT WINAPI MsiDetermineApplicablePatchesA(LPCSTR, DWORD, PMSIPATCHSEQUENCEINFOA);
-UINT WINAPI MsiDetermineApplicablePatchesW(LPCWSTR, DWORD, PMSIPATCHSEQUENCEINFOW);
+UINT
+WINAPI
+MsiDetermineApplicablePatchesA(
+ _In_ LPCSTR,
+ _In_ DWORD cPatchInfo,
+ _Inout_updates_(cPatchInfo) PMSIPATCHSEQUENCEINFOA);
+
+UINT
+WINAPI
+MsiDetermineApplicablePatchesW(
+ _In_ LPCWSTR,
+ _In_ DWORD cPatchInfo,
+ _Inout_updates_(cPatchInfo) PMSIPATCHSEQUENCEINFOW);
+
#define MsiDetermineApplicablePatches WINELIB_NAME_AW(MsiDetermineApplicablePatches)
-UINT WINAPI MsiDeterminePatchSequenceA(LPCSTR, LPCSTR, MSIINSTALLCONTEXT, DWORD, PMSIPATCHSEQUENCEINFOA);
-UINT WINAPI MsiDeterminePatchSequenceW(LPCWSTR, LPCWSTR, MSIINSTALLCONTEXT, DWORD, PMSIPATCHSEQUENCEINFOW);
+UINT
+WINAPI
+MsiDeterminePatchSequenceA(
+ _In_ LPCSTR,
+ _In_opt_ LPCSTR,
+ _In_ MSIINSTALLCONTEXT,
+ _In_ DWORD cPatchInfo,
+ _Inout_updates_(cPatchInfo) PMSIPATCHSEQUENCEINFOA);
+
+UINT
+WINAPI
+MsiDeterminePatchSequenceW(
+ _In_ LPCWSTR,
+ _In_opt_ LPCWSTR,
+ _In_ MSIINSTALLCONTEXT,
+ _In_ DWORD cPatchInfo,
+ _Inout_updates_(cPatchInfo) PMSIPATCHSEQUENCEINFOW);
+
#define MsiDeterminePatchSequence WINELIB_NAME_AW(MsiDeterminePatchSequence)
-UINT WINAPI MsiApplyMultiplePatchesA(LPCSTR, LPCSTR, LPCSTR);
-UINT WINAPI MsiApplyMultiplePatchesW(LPCWSTR, LPCWSTR, LPCWSTR);
+UINT
+WINAPI
+MsiApplyMultiplePatchesA(
+ _In_ LPCSTR,
+ _In_opt_ LPCSTR,
+ _In_opt_ LPCSTR);
+
+UINT
+WINAPI
+MsiApplyMultiplePatchesW(
+ _In_ LPCWSTR,
+ _In_opt_ LPCWSTR,
+ _In_opt_ LPCWSTR);
+
#define MsiApplyMultiplePatches WINELIB_NAME_AW(MsiApplyMultiplePatches)
-UINT WINAPI MsiBeginTransactionA(LPCSTR, DWORD, MSIHANDLE *, HANDLE *);
-UINT WINAPI MsiBeginTransactionW(LPCWSTR, DWORD, MSIHANDLE *, HANDLE *);
+UINT
+WINAPI
+MsiBeginTransactionA(
+ _In_ LPCSTR,
+ _In_ DWORD,
+ _Out_ MSIHANDLE *,
+ _Out_ HANDLE *);
+
+UINT
+WINAPI
+MsiBeginTransactionW(
+ _In_ LPCWSTR,
+ _In_ DWORD,
+ _Out_ MSIHANDLE *,
+ _Out_ HANDLE *);
+
#define MsiBeginTransaction WINELIB_NAME_AW(MsiBeginTransaction)
-UINT WINAPI MsiEndTransaction(DWORD);
+UINT WINAPI MsiEndTransaction(_In_ DWORD);
/* Non Unicode */
UINT WINAPI MsiCloseHandle(MSIHANDLE);
UINT WINAPI MsiCloseAllHandles(void);
-INSTALLUILEVEL WINAPI MsiSetInternalUI(INSTALLUILEVEL, HWND*);
-UINT WINAPI MsiSetExternalUIRecord(INSTALLUI_HANDLER_RECORD, DWORD, LPVOID, PINSTALLUI_HANDLER_RECORD);
+INSTALLUILEVEL WINAPI MsiSetInternalUI(_In_ INSTALLUILEVEL, _Inout_opt_ HWND*);
+
+UINT
+WINAPI
+MsiSetExternalUIRecord(
+ _In_opt_ INSTALLUI_HANDLER_RECORD,
+ _In_ DWORD,
+ _In_opt_ LPVOID,
+ _Out_opt_ PINSTALLUI_HANDLER_RECORD);
#ifdef __cplusplus
}
COINIT_SPEED_OVER_MEMORY = 0x8 /* Trade memory for speed */
} COINIT;
-HRESULT WINAPI CoInitialize(LPVOID lpReserved);
-HRESULT WINAPI CoInitializeEx(LPVOID lpReserved, DWORD dwCoInit);
+_Check_return_ HRESULT WINAPI CoInitialize(_In_opt_ LPVOID lpReserved);
+
+_Check_return_
+HRESULT
+WINAPI
+CoInitializeEx(
+ _In_opt_ LPVOID lpReserved,
+ _In_ DWORD dwCoInit);
+
void WINAPI CoUninitialize(void);
DWORD WINAPI CoGetCurrentProcess(void);
-HINSTANCE WINAPI CoLoadLibrary(LPOLESTR lpszLibName, BOOL bAutoFree);
+HINSTANCE WINAPI CoLoadLibrary(_In_ LPOLESTR lpszLibName, _In_ BOOL bAutoFree);
void WINAPI CoFreeAllLibraries(void);
-void WINAPI CoFreeLibrary(HINSTANCE hLibrary);
+void WINAPI CoFreeLibrary(_In_ HINSTANCE hLibrary);
void WINAPI CoFreeUnusedLibraries(void);
-void WINAPI CoFreeUnusedLibrariesEx(DWORD dwUnloadDelay, DWORD dwReserved);
-HRESULT WINAPI CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv);
-HRESULT WINAPI CoCreateInstanceEx(REFCLSID rclsid,
- LPUNKNOWN pUnkOuter,
- DWORD dwClsContext,
- COSERVERINFO* pServerInfo,
- ULONG cmq,
- MULTI_QI* pResults);
+void
+WINAPI
+CoFreeUnusedLibrariesEx(
+ _In_ DWORD dwUnloadDelay,
+ _In_ DWORD dwReserved);
+
+_Check_return_
+HRESULT
+WINAPI
+CoCreateInstance(
+ _In_ REFCLSID rclsid,
+ _In_opt_ LPUNKNOWN pUnkOuter,
+ _In_ DWORD dwClsContext,
+ _In_ REFIID iid,
+ _Outptr_ _At_(*ppv, _Post_readable_size_(_Inexpressible_(varies))) LPVOID *ppv);
+
+_Check_return_
+HRESULT
+WINAPI
+CoCreateInstanceEx(
+ _In_ REFCLSID rclsid,
+ _In_opt_ LPUNKNOWN pUnkOuter,
+ _In_ DWORD dwClsContext,
+ _In_opt_ COSERVERINFO *pServerInfo,
+ _In_ ULONG cmq,
+ _Inout_updates_(cmq) MULTI_QI *pResults);
+
+_Check_return_
+HRESULT
+WINAPI
+CoGetInstanceFromFile(
+ _In_opt_ COSERVERINFO *pServerInfo,
+ _In_opt_ CLSID *pClsid,
+ _In_opt_ IUnknown *punkOuter,
+ _In_ DWORD dwClsCtx,
+ _In_ DWORD grfMode,
+ _In_ _Null_terminated_ OLECHAR *pwszName,
+ _In_ DWORD dwCount,
+ _Inout_updates_(dwCount) MULTI_QI *pResults);
-HRESULT WINAPI CoGetInstanceFromFile(COSERVERINFO* pServerInfo, CLSID* pClsid, IUnknown* punkOuter, DWORD dwClsCtx, DWORD grfMode, OLECHAR* pwszName, DWORD dwCount, MULTI_QI* pResults);
-HRESULT WINAPI CoGetInstanceFromIStorage(COSERVERINFO* pServerInfo, CLSID* pClsid, IUnknown* punkOuter, DWORD dwClsCtx, IStorage* pstg, DWORD dwCount, MULTI_QI* pResults);
+_Check_return_
+HRESULT
+WINAPI
+CoGetInstanceFromIStorage(
+ _In_opt_ COSERVERINFO *pServerInfo,
+ _In_opt_ CLSID *pClsid,
+ _In_opt_ IUnknown *punkOuter,
+ _In_ DWORD dwClsCtx,
+ _In_ IStorage *pstg,
+ _In_ DWORD dwCount,
+ _Inout_updates_(dwCount) MULTI_QI *pResults);
-HRESULT WINAPI CoGetMalloc(DWORD dwMemContext, LPMALLOC* lpMalloc);
-LPVOID WINAPI CoTaskMemAlloc(ULONG size) __WINE_ALLOC_SIZE(1);
-void WINAPI CoTaskMemFree(LPVOID ptr);
-LPVOID WINAPI CoTaskMemRealloc(LPVOID ptr, ULONG size);
+_Check_return_
+HRESULT
+WINAPI
+CoGetMalloc(
+ _In_ DWORD dwMemContext,
+ _Outptr_ LPMALLOC *lpMalloc);
-HRESULT WINAPI CoRegisterMallocSpy(LPMALLOCSPY pMallocSpy);
+_Ret_opt_
+_Post_writable_byte_size_(size)
+__drv_allocatesMem(Mem)
+_Check_return_
+LPVOID
+WINAPI
+CoTaskMemAlloc(_In_ ULONG size) __WINE_ALLOC_SIZE(1);
+
+void
+WINAPI
+CoTaskMemFree(
+ _In_opt_ __drv_freesMem(Mem) _Post_invalid_ LPVOID ptr);
+
+_Ret_opt_
+_Post_writable_byte_size_(size)
+_When_(size > 0, __drv_allocatesMem(Mem) _Check_return_)
+LPVOID
+WINAPI
+CoTaskMemRealloc(
+ _In_opt_ __drv_freesMem(Mem) _Post_invalid_ LPVOID ptr,
+ _In_ ULONG size);
+
+HRESULT WINAPI CoRegisterMallocSpy(_In_ LPMALLOCSPY pMallocSpy);
HRESULT WINAPI CoRevokeMallocSpy(void);
-HRESULT WINAPI CoGetContextToken( ULONG_PTR *token );
+_Check_return_ HRESULT WINAPI CoGetContextToken(_Out_ ULONG_PTR *token);
/* class registration flags; passed to CoRegisterClassObject */
typedef enum tagREGCLS
REGCLS_SURROGATE = 8
} REGCLS;
-HRESULT WINAPI CoGetClassObject(REFCLSID rclsid, DWORD dwClsContext, COSERVERINFO *pServerInfo, REFIID iid, LPVOID *ppv);
-HRESULT WINAPI CoRegisterClassObject(REFCLSID rclsid,LPUNKNOWN pUnk,DWORD dwClsContext,DWORD flags,LPDWORD lpdwRegister);
-HRESULT WINAPI CoRevokeClassObject(DWORD dwRegister);
-HRESULT WINAPI CoGetPSClsid(REFIID riid,CLSID *pclsid);
-HRESULT WINAPI CoRegisterPSClsid(REFIID riid, REFCLSID rclsid);
-HRESULT WINAPI CoRegisterSurrogate(LPSURROGATE pSurrogate);
-HRESULT WINAPI CoSuspendClassObjects(void);
-HRESULT WINAPI CoResumeClassObjects(void);
+_Check_return_
+HRESULT
+WINAPI
+CoGetClassObject(
+ _In_ REFCLSID rclsid,
+ _In_ DWORD dwClsContext,
+ _In_opt_ COSERVERINFO *pServerInfo,
+ _In_ REFIID iid,
+ _Outptr_ LPVOID *ppv);
+
+_Check_return_
+HRESULT
+WINAPI
+CoRegisterClassObject(
+ _In_ REFCLSID rclsid,
+ _In_ LPUNKNOWN pUnk,
+ _In_ DWORD dwClsContext,
+ _In_ DWORD flags,
+ _Out_ LPDWORD lpdwRegister);
+
+_Check_return_
+HRESULT
+WINAPI
+CoRevokeClassObject(
+ _In_ DWORD dwRegister);
+
+_Check_return_
+HRESULT
+WINAPI
+CoGetPSClsid(
+ _In_ REFIID riid,
+ _Out_ CLSID *pclsid);
+
+_Check_return_
+HRESULT
+WINAPI
+CoRegisterPSClsid(
+ _In_ REFIID riid,
+ _In_ REFCLSID rclsid);
+
+_Check_return_ HRESULT WINAPI CoRegisterSurrogate(_In_ LPSURROGATE pSurrogate);
+_Check_return_ HRESULT WINAPI CoSuspendClassObjects(void);
+_Check_return_ HRESULT WINAPI CoResumeClassObjects(void);
ULONG WINAPI CoAddRefServerProcess(void);
ULONG WINAPI CoReleaseServerProcess(void);
/* marshalling */
-HRESULT WINAPI CoCreateFreeThreadedMarshaler(LPUNKNOWN punkOuter, LPUNKNOWN* ppunkMarshal);
-HRESULT WINAPI CoGetInterfaceAndReleaseStream(LPSTREAM pStm, REFIID iid, LPVOID* ppv);
-HRESULT WINAPI CoGetMarshalSizeMax(ULONG* pulSize, REFIID riid, LPUNKNOWN pUnk, DWORD dwDestContext, LPVOID pvDestContext, DWORD mshlflags);
-HRESULT WINAPI CoGetStandardMarshal(REFIID riid, LPUNKNOWN pUnk, DWORD dwDestContext, LPVOID pvDestContext, DWORD mshlflags, LPMARSHAL* ppMarshal);
-HRESULT WINAPI CoMarshalHresult(LPSTREAM pstm, HRESULT hresult);
-HRESULT WINAPI CoMarshalInterface(LPSTREAM pStm, REFIID riid, LPUNKNOWN pUnk, DWORD dwDestContext, LPVOID pvDestContext, DWORD mshlflags);
-HRESULT WINAPI CoMarshalInterThreadInterfaceInStream(REFIID riid, LPUNKNOWN pUnk, LPSTREAM* ppStm);
-HRESULT WINAPI CoReleaseMarshalData(LPSTREAM pStm);
-HRESULT WINAPI CoDisconnectObject(LPUNKNOWN lpUnk, DWORD reserved);
-HRESULT WINAPI CoUnmarshalHresult(LPSTREAM pstm, HRESULT* phresult);
-HRESULT WINAPI CoUnmarshalInterface(LPSTREAM pStm, REFIID riid, LPVOID* ppv);
-HRESULT WINAPI CoLockObjectExternal(LPUNKNOWN pUnk, BOOL fLock, BOOL fLastUnlockReleases);
-BOOL WINAPI CoIsHandlerConnected(LPUNKNOWN pUnk);
+
+_Check_return_
+HRESULT
+WINAPI
+CoCreateFreeThreadedMarshaler(
+ _In_opt_ LPUNKNOWN punkOuter,
+ _Outptr_ LPUNKNOWN *ppunkMarshal);
+
+_Check_return_
+HRESULT
+WINAPI
+CoGetInterfaceAndReleaseStream(
+ _In_ LPSTREAM pStm,
+ _In_ REFIID iid,
+ _Outptr_ LPVOID *ppv);
+
+_Check_return_
+HRESULT
+WINAPI
+CoGetMarshalSizeMax(
+ _Out_ ULONG *pulSize,
+ _In_ REFIID riid,
+ _In_ LPUNKNOWN pUnk,
+ _In_ DWORD dwDestContext,
+ _In_opt_ LPVOID pvDestContext,
+ _In_ DWORD mshlflags);
+
+_Check_return_
+HRESULT
+WINAPI
+CoGetStandardMarshal(
+ _In_ REFIID riid,
+ _In_ LPUNKNOWN pUnk,
+ _In_ DWORD dwDestContext,
+ _In_opt_ LPVOID pvDestContext,
+ _In_ DWORD mshlflags,
+ _Outptr_ LPMARSHAL *ppMarshal);
+
+HRESULT WINAPI CoMarshalHresult(_In_ LPSTREAM pstm, _In_ HRESULT hresult);
+
+_Check_return_
+HRESULT
+WINAPI
+CoMarshalInterface(
+ _In_ LPSTREAM pStm,
+ _In_ REFIID riid,
+ _In_ LPUNKNOWN pUnk,
+ _In_ DWORD dwDestContext,
+ _In_opt_ LPVOID pvDestContext,
+ _In_ DWORD mshlflags);
+
+_Check_return_
+HRESULT
+WINAPI
+CoMarshalInterThreadInterfaceInStream(
+ _In_ REFIID riid,
+ _In_ LPUNKNOWN pUnk,
+ _Outptr_ LPSTREAM *ppStm);
+
+_Check_return_ HRESULT WINAPI CoReleaseMarshalData(_In_ LPSTREAM pStm);
+
+_Check_return_
+HRESULT
+WINAPI
+CoDisconnectObject(
+ _In_ LPUNKNOWN lpUnk,
+ _In_ DWORD reserved);
+
+HRESULT WINAPI CoUnmarshalHresult(_In_ LPSTREAM pstm, _Out_ HRESULT *phresult);
+
+_Check_return_
+HRESULT
+WINAPI
+CoUnmarshalInterface(
+ _In_ LPSTREAM pStm,
+ _In_ REFIID riid,
+ _Outptr_ LPVOID *ppv);
+
+_Check_return_
+HRESULT
+WINAPI
+CoLockObjectExternal(
+ _In_ LPUNKNOWN pUnk,
+ _In_ BOOL fLock,
+ _In_ BOOL fLastUnlockReleases);
+
+BOOL WINAPI CoIsHandlerConnected(_In_ LPUNKNOWN pUnk);
/* security */
-HRESULT WINAPI CoInitializeSecurity(PSECURITY_DESCRIPTOR pSecDesc, LONG cAuthSvc, SOLE_AUTHENTICATION_SERVICE* asAuthSvc, void* pReserved1, DWORD dwAuthnLevel, DWORD dwImpLevel, void* pReserved2, DWORD dwCapabilities, void* pReserved3);
-HRESULT WINAPI CoGetCallContext(REFIID riid, void** ppInterface);
-HRESULT WINAPI CoSwitchCallContext(IUnknown *pContext, IUnknown **ppOldContext);
-HRESULT WINAPI CoQueryAuthenticationServices(DWORD* pcAuthSvc, SOLE_AUTHENTICATION_SERVICE** asAuthSvc);
-HRESULT WINAPI CoQueryProxyBlanket(IUnknown* pProxy, DWORD* pwAuthnSvc, DWORD* pAuthzSvc, OLECHAR** pServerPrincName, DWORD* pAuthnLevel, DWORD* pImpLevel, RPC_AUTH_IDENTITY_HANDLE* pAuthInfo, DWORD* pCapabilities);
-HRESULT WINAPI CoSetProxyBlanket(IUnknown* pProxy, DWORD dwAuthnSvc, DWORD dwAuthzSvc, OLECHAR* pServerPrincName, DWORD dwAuthnLevel, DWORD dwImpLevel, RPC_AUTH_IDENTITY_HANDLE pAuthInfo, DWORD dwCapabilities);
-HRESULT WINAPI CoCopyProxy(IUnknown* pProxy, IUnknown** ppCopy);
+_Check_return_
+HRESULT
+WINAPI
+CoInitializeSecurity(
+ _In_opt_ PSECURITY_DESCRIPTOR pSecDesc,
+ _In_ LONG cAuthSvc,
+ _In_reads_opt_(cAuthSvc) SOLE_AUTHENTICATION_SERVICE *asAuthSvc,
+ _In_opt_ void *pReserved1,
+ _In_ DWORD dwAuthnLevel,
+ _In_ DWORD dwImpLevel,
+ _In_opt_ void *pReserved2,
+ _In_ DWORD dwCapabilities,
+ _In_opt_ void *pReserved3);
+
+_Check_return_
+HRESULT
+WINAPI
+CoGetCallContext(
+ _In_ REFIID riid,
+ _Outptr_ void **ppInterface);
+
+_Check_return_
+HRESULT
+WINAPI
+CoSwitchCallContext(
+ _In_opt_ IUnknown *pContext,
+ _Outptr_ IUnknown **ppOldContext);
-HRESULT WINAPI CoImpersonateClient(void);
-HRESULT WINAPI CoQueryClientBlanket(DWORD* pAuthnSvc, DWORD* pAuthzSvc, OLECHAR** pServerPrincName, DWORD* pAuthnLevel, DWORD* pImpLevel, RPC_AUTHZ_HANDLE* pPrivs, DWORD* pCapabilities);
-HRESULT WINAPI CoRevertToSelf(void);
+_Check_return_
+HRESULT
+WINAPI
+CoQueryAuthenticationServices(
+ _Out_ DWORD *pcAuthSvc,
+ _Outptr_result_buffer_(*pcAuthSvc) SOLE_AUTHENTICATION_SERVICE **asAuthSvc);
+
+_Check_return_
+HRESULT
+WINAPI
+CoQueryProxyBlanket(
+ _In_ IUnknown *pProxy,
+ _Out_opt_ DWORD *pwAuthnSvc,
+ _Out_opt_ DWORD *pAuthzSvc,
+ _Outptr_opt_ OLECHAR **pServerPrincName,
+ _Out_opt_ DWORD *pAuthnLevel,
+ _Out_opt_ DWORD *pImpLevel,
+ _Out_opt_ RPC_AUTH_IDENTITY_HANDLE *pAuthInfo,
+ _Out_opt_ DWORD *pCapabilities);
+
+_Check_return_
+HRESULT
+WINAPI
+CoSetProxyBlanket(
+ _In_ IUnknown *pProxy,
+ _In_ DWORD dwAuthnSvc,
+ _In_ DWORD dwAuthzSvc,
+ _In_opt_ OLECHAR *pServerPrincName,
+ _In_ DWORD dwAuthnLevel,
+ _In_ DWORD dwImpLevel,
+ _In_opt_ RPC_AUTH_IDENTITY_HANDLE pAuthInfo,
+ _In_ DWORD dwCapabilities);
+
+_Check_return_
+HRESULT
+WINAPI CoCopyProxy(
+ _In_ IUnknown *pProxy,
+ _Outptr_ IUnknown **ppCopy);
+
+_Check_return_ HRESULT WINAPI CoImpersonateClient(void);
+
+_Check_return_
+HRESULT
+WINAPI
+CoQueryClientBlanket(
+ _Out_opt_ DWORD *pAuthnSvc,
+ _Out_opt_ DWORD *pAuthzSvc,
+ _Outptr_opt_ OLECHAR **pServerPrincName,
+ _Out_opt_ DWORD *pAuthnLevel,
+ _Out_opt_ DWORD *pImpLevel,
+ _Outptr_opt_ RPC_AUTHZ_HANDLE *pPrivs,
+ _Inout_opt_ DWORD *pCapabilities);
+
+_Check_return_ HRESULT WINAPI CoRevertToSelf(void);
/* misc */
-HRESULT WINAPI CoGetTreatAsClass(REFCLSID clsidOld, LPCLSID pClsidNew);
-HRESULT WINAPI CoTreatAsClass(REFCLSID clsidOld, REFCLSID clsidNew);
-HRESULT WINAPI CoAllowSetForegroundWindow(IUnknown *pUnk, LPVOID lpvReserved);
-HRESULT WINAPI CoGetObjectContext(REFIID riid, LPVOID *ppv);
-HRESULT WINAPI CoCreateGuid(GUID* pguid);
-BOOL WINAPI CoIsOle1Class(REFCLSID rclsid);
+_Check_return_
+HRESULT
+WINAPI
+CoGetTreatAsClass(
+ _In_ REFCLSID clsidOld,
+ _Out_ LPCLSID pClsidNew);
+
+_Check_return_
+HRESULT
+WINAPI
+CoTreatAsClass(
+ _In_ REFCLSID clsidOld,
+ _In_ REFCLSID clsidNew);
+
+HRESULT
+WINAPI
+CoAllowSetForegroundWindow(
+ _In_ IUnknown *pUnk,
+ _In_opt_ LPVOID lpvReserved);
+
+_Check_return_
+HRESULT
+WINAPI
+CoGetObjectContext(
+ _In_ REFIID riid,
+ _Outptr_ LPVOID *ppv);
-BOOL WINAPI CoDosDateTimeToFileTime(WORD nDosDate, WORD nDosTime, FILETIME* lpFileTime);
-BOOL WINAPI CoFileTimeToDosDateTime(FILETIME* lpFileTime, WORD* lpDosDate, WORD* lpDosTime);
-HRESULT WINAPI CoFileTimeNow(FILETIME* lpFileTime);
-HRESULT WINAPI CoRegisterMessageFilter(LPMESSAGEFILTER lpMessageFilter,LPMESSAGEFILTER *lplpMessageFilter);
-HRESULT WINAPI CoRegisterChannelHook(REFGUID ExtensionGuid, IChannelHook *pChannelHook);
+_Check_return_ HRESULT WINAPI CoCreateGuid(_Out_ GUID *pguid);
+BOOL WINAPI CoIsOle1Class(_In_ REFCLSID rclsid);
+
+BOOL
+WINAPI
+CoDosDateTimeToFileTime(
+ _In_ WORD nDosDate,
+ _In_ WORD nDosTime,
+ _Out_ FILETIME *lpFileTime);
+
+BOOL
+WINAPI
+CoFileTimeToDosDateTime(
+ _In_ FILETIME *lpFileTime,
+ _Out_ WORD *lpDosDate,
+ _Out_ WORD *lpDosTime);
+
+HRESULT WINAPI CoFileTimeNow(_Out_ FILETIME *lpFileTime);
+
+_Check_return_
+HRESULT
+WINAPI
+CoRegisterMessageFilter(
+ _In_opt_ LPMESSAGEFILTER lpMessageFilter,
+ _Outptr_opt_result_maybenull_ LPMESSAGEFILTER *lplpMessageFilter);
+
+HRESULT
+WINAPI
+CoRegisterChannelHook(
+ _In_ REFGUID ExtensionGuid,
+ _In_ IChannelHook *pChannelHook);
typedef enum tagCOWAIT_FLAGS
{
COWAIT_ALERTABLE = 0x00000002
} COWAIT_FLAGS;
-HRESULT WINAPI CoWaitForMultipleHandles(DWORD dwFlags,DWORD dwTimeout,ULONG cHandles,LPHANDLE pHandles,LPDWORD lpdwindex);
+_Check_return_
+HRESULT
+WINAPI
+CoWaitForMultipleHandles(
+ _In_ DWORD dwFlags,
+ _In_ DWORD dwTimeout,
+ _In_ ULONG cHandles,
+ _In_reads_(cHandles) LPHANDLE pHandles,
+ _Out_ LPDWORD lpdwindex);
/*****************************************************************************
* GUID API
*/
-HRESULT WINAPI StringFromCLSID(REFCLSID id, LPOLESTR*);
-HRESULT WINAPI CLSIDFromString(LPCOLESTR, LPCLSID);
-HRESULT WINAPI CLSIDFromProgID(LPCOLESTR progid, LPCLSID riid);
-HRESULT WINAPI ProgIDFromCLSID(REFCLSID clsid, LPOLESTR *lplpszProgID);
-INT WINAPI StringFromGUID2(REFGUID id, LPOLESTR str, INT cmax);
+_Check_return_
+HRESULT
+WINAPI
+StringFromCLSID(
+ _In_ REFCLSID id,
+ _Outptr_ LPOLESTR*);
+
+_Check_return_
+HRESULT
+WINAPI
+CLSIDFromString(
+ _In_ LPCOLESTR,
+ _Out_ LPCLSID);
+
+_Check_return_
+HRESULT
+WINAPI
+CLSIDFromProgID(
+ _In_ LPCOLESTR progid,
+ _Out_ LPCLSID riid);
+
+_Check_return_
+HRESULT
+WINAPI
+ProgIDFromCLSID(
+ _In_ REFCLSID clsid,
+ _Outptr_ LPOLESTR *lplpszProgID);
+
+_Check_return_
+INT
+WINAPI
+StringFromGUID2(
+ _In_ REFGUID id,
+ _Out_writes_to_(cmax, return) LPOLESTR str,
+ _In_ INT cmax);
/*****************************************************************************
* COM Server dll - exports
*/
-HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID * ppv) DECLSPEC_HIDDEN;
+
+_Check_return_
+HRESULT
+WINAPI
+DllGetClassObject(
+ _In_ REFCLSID rclsid,
+ _In_ REFIID riid,
+ _Outptr_ LPVOID *ppv) DECLSPEC_HIDDEN;
+
HRESULT WINAPI DllCanUnloadNow(void) DECLSPEC_HIDDEN;
/* shouldn't be here, but is nice for type checking */
/*****************************************************************************
* Data Object
*/
-HRESULT WINAPI CreateDataAdviseHolder(LPDATAADVISEHOLDER* ppDAHolder);
-HRESULT WINAPI CreateDataCache(LPUNKNOWN pUnkOuter, REFCLSID rclsid, REFIID iid, LPVOID* ppv);
+
+HRESULT
+WINAPI
+CreateDataAdviseHolder(
+ _Outptr_ LPDATAADVISEHOLDER *ppDAHolder);
+
+HRESULT
+WINAPI
+CreateDataCache(
+ _In_opt_ LPUNKNOWN pUnkOuter,
+ _In_ REFCLSID rclsid,
+ _In_ REFIID iid,
+ _Out_ LPVOID *ppv);
/*****************************************************************************
* Moniker API
*/
-HRESULT WINAPI BindMoniker(LPMONIKER pmk, DWORD grfOpt, REFIID iidResult, LPVOID* ppvResult);
-HRESULT WINAPI CoGetObject(LPCWSTR pszName, BIND_OPTS *pBindOptions, REFIID riid, void **ppv);
-HRESULT WINAPI CreateAntiMoniker(LPMONIKER * ppmk);
-HRESULT WINAPI CreateBindCtx(DWORD reserved, LPBC* ppbc);
-HRESULT WINAPI CreateClassMoniker(REFCLSID rclsid, LPMONIKER* ppmk);
-HRESULT WINAPI CreateFileMoniker(LPCOLESTR lpszPathName, LPMONIKER* ppmk);
-HRESULT WINAPI CreateGenericComposite(LPMONIKER pmkFirst, LPMONIKER pmkRest, LPMONIKER* ppmkComposite);
-HRESULT WINAPI CreateItemMoniker(LPCOLESTR lpszDelim, LPCOLESTR lpszItem, LPMONIKER* ppmk);
-HRESULT WINAPI CreateObjrefMoniker(LPUNKNOWN punk, LPMONIKER * ppmk);
-HRESULT WINAPI CreatePointerMoniker(LPUNKNOWN punk, LPMONIKER * ppmk);
-HRESULT WINAPI GetClassFile(LPCOLESTR filePathName,CLSID *pclsid);
-HRESULT WINAPI GetRunningObjectTable(DWORD reserved, LPRUNNINGOBJECTTABLE *pprot);
-HRESULT WINAPI MkParseDisplayName(LPBC pbc, LPCOLESTR szUserName, ULONG * pchEaten, LPMONIKER * ppmk);
-HRESULT WINAPI MonikerCommonPrefixWith(IMoniker* pmkThis,IMoniker* pmkOther,IMoniker** ppmkCommon);
-HRESULT WINAPI MonikerRelativePathTo(LPMONIKER pmkSrc, LPMONIKER pmkDest, LPMONIKER * ppmkRelPath, BOOL dwReserved);
+
+_Check_return_
+HRESULT
+WINAPI
+BindMoniker(
+ _In_ LPMONIKER pmk,
+ _In_ DWORD grfOpt,
+ _In_ REFIID iidResult,
+ _Outptr_ LPVOID *ppvResult);
+
+_Check_return_
+HRESULT
+WINAPI
+CoGetObject(
+ _In_ LPCWSTR pszName,
+ _In_opt_ BIND_OPTS *pBindOptions,
+ _In_ REFIID riid,
+ _Outptr_ void **ppv);
+
+_Check_return_ HRESULT WINAPI CreateAntiMoniker(_Outptr_ LPMONIKER *ppmk);
+
+_Check_return_
+HRESULT
+WINAPI
+CreateBindCtx(
+ _In_ DWORD reserved,
+ _Outptr_ LPBC *ppbc);
+
+_Check_return_
+HRESULT
+WINAPI
+CreateClassMoniker(
+ _In_ REFCLSID rclsid,
+ _Outptr_ LPMONIKER *ppmk);
+
+_Check_return_
+HRESULT
+WINAPI
+CreateFileMoniker(
+ _In_ LPCOLESTR lpszPathName,
+ _Outptr_ LPMONIKER *ppmk);
+
+_Check_return_
+HRESULT
+WINAPI
+CreateGenericComposite(
+ _In_opt_ LPMONIKER pmkFirst,
+ _In_opt_ LPMONIKER pmkRest,
+ _Outptr_ LPMONIKER *ppmkComposite);
+
+_Check_return_
+HRESULT
+WINAPI
+CreateItemMoniker(
+ _In_ LPCOLESTR lpszDelim,
+ _In_ LPCOLESTR lpszItem,
+ _Outptr_ LPMONIKER *ppmk);
+
+_Check_return_
+HRESULT
+WINAPI
+CreateObjrefMoniker(
+ _In_opt_ LPUNKNOWN punk,
+ _Outptr_ LPMONIKER *ppmk);
+
+_Check_return_
+HRESULT
+WINAPI
+CreatePointerMoniker(
+ _In_opt_ LPUNKNOWN punk,
+ _Outptr_ LPMONIKER *ppmk);
+
+_Check_return_
+HRESULT
+WINAPI
+GetClassFile(
+ _In_ LPCOLESTR filePathName,
+ _Out_ CLSID *pclsid);
+
+_Check_return_
+HRESULT
+WINAPI
+GetRunningObjectTable(
+ _In_ DWORD reserved,
+ _Outptr_ LPRUNNINGOBJECTTABLE *pprot);
+
+_Check_return_
+HRESULT
+WINAPI
+MkParseDisplayName(
+ _In_ LPBC pbc,
+ _In_ LPCOLESTR szUserName,
+ _Out_ ULONG *pchEaten,
+ _Outptr_ LPMONIKER *ppmk);
+
+_Check_return_
+HRESULT
+WINAPI
+MonikerCommonPrefixWith(
+ _In_ IMoniker *pmkThis,
+ _In_ IMoniker *pmkOther,
+ _Outptr_ IMoniker **ppmkCommon);
+
+_Check_return_
+HRESULT
+WINAPI
+MonikerRelativePathTo(
+ _In_ LPMONIKER pmkSrc,
+ _In_ LPMONIKER pmkDest,
+ _Outptr_ LPMONIKER *ppmkRelPath,
+ _In_ BOOL dwReserved);
/*****************************************************************************
* Storage API
const WCHAR* pwcsTemplateFile;
} STGOPTIONS;
-HRESULT WINAPI StringFromIID(REFIID rclsid, LPOLESTR *lplpsz);
-HRESULT WINAPI StgCreateDocfile(LPCOLESTR pwcsName,DWORD grfMode,DWORD reserved,IStorage **ppstgOpen);
-HRESULT WINAPI StgCreateStorageEx(const WCHAR*,DWORD,DWORD,DWORD,STGOPTIONS*,void*,REFIID,void**);
-HRESULT WINAPI StgIsStorageFile(LPCOLESTR fn);
-HRESULT WINAPI StgIsStorageILockBytes(ILockBytes *plkbyt);
-HRESULT WINAPI StgOpenStorage(const OLECHAR* pwcsName,IStorage* pstgPriority,DWORD grfMode,SNB snbExclude,DWORD reserved,IStorage**ppstgOpen);
-HRESULT WINAPI StgOpenStorageEx(const WCHAR* pwcwName,DWORD grfMode,DWORD stgfmt,DWORD grfAttrs,STGOPTIONS *pStgOptions, void *reserved, REFIID riid, void **ppObjectOpen);
-
-HRESULT WINAPI StgCreateDocfileOnILockBytes(ILockBytes *plkbyt,DWORD grfMode, DWORD reserved, IStorage** ppstgOpen);
-HRESULT WINAPI StgOpenStorageOnILockBytes(ILockBytes *plkbyt, IStorage *pstgPriority, DWORD grfMode, SNB snbExclude, DWORD reserved, IStorage **ppstgOpen);
-HRESULT WINAPI StgSetTimes( OLECHAR const *lpszName, FILETIME const *pctime, FILETIME const *patime, FILETIME const *pmtime);
+_Check_return_
+HRESULT
+WINAPI
+StringFromIID(
+ _In_ REFIID rclsid,
+ _Outptr_ LPOLESTR *lplpsz);
+
+_Check_return_
+HRESULT
+WINAPI
+StgCreateDocfile(
+ _In_opt_ _Null_terminated_ LPCOLESTR pwcsName,
+ _In_ DWORD grfMode,
+ _Reserved_ DWORD reserved,
+ _Outptr_ IStorage **ppstgOpen);
+
+_Check_return_
+HRESULT
+WINAPI
+StgCreateStorageEx(
+ _In_opt_ _Null_terminated_ const WCHAR*,
+ _In_ DWORD,
+ _In_ DWORD,
+ _In_ DWORD,
+ _Inout_opt_ STGOPTIONS*,
+ _In_opt_ void*,
+ _In_ REFIID,
+ _Outptr_ void**);
+
+_Check_return_
+HRESULT
+WINAPI
+StgIsStorageFile(
+ _In_ _Null_terminated_ LPCOLESTR fn);
+
+_Check_return_
+HRESULT
+WINAPI
+StgIsStorageILockBytes(
+ _In_ ILockBytes *plkbyt);
+
+_Check_return_
+HRESULT
+WINAPI
+StgOpenStorage(
+ _In_opt_ _Null_terminated_ const OLECHAR *pwcsName,
+ _In_opt_ IStorage *pstgPriority,
+ _In_ DWORD grfMode,
+ _In_opt_z_ SNB snbExclude,
+ _In_ DWORD reserved,
+ _Outptr_ IStorage **ppstgOpen);
+
+_Check_return_
+HRESULT
+WINAPI
+StgOpenStorageEx(
+ _In_ _Null_terminated_ const WCHAR *pwcwName,
+ _In_ DWORD grfMode,
+ _In_ DWORD stgfmt,
+ _In_ DWORD grfAttrs,
+ _Inout_opt_ STGOPTIONS *pStgOptions,
+ _In_opt_ void *reserved,
+ _In_ REFIID riid,
+ _Outptr_ void **ppObjectOpen);
+
+_Check_return_
+HRESULT
+WINAPI
+StgCreateDocfileOnILockBytes(
+ _In_ ILockBytes *plkbyt,
+ _In_ DWORD grfMode,
+ _In_ DWORD reserved,
+ _Outptr_ IStorage **ppstgOpen);
+
+_Check_return_
+HRESULT
+WINAPI
+StgOpenStorageOnILockBytes(
+ _In_ ILockBytes *plkbyt,
+ _In_opt_ IStorage *pstgPriority,
+ _In_ DWORD grfMode,
+ _In_opt_z_ SNB snbExclude,
+ _Reserved_ DWORD reserved,
+ _Outptr_ IStorage **ppstgOpen);
+
+_Check_return_
+HRESULT
+WINAPI
+StgSetTimes(
+ _In_ _Null_terminated_ OLECHAR const *lpszName,
+ _In_opt_ FILETIME const *pctime,
+ _In_opt_ FILETIME const *patime,
+ _In_opt_ FILETIME const *pmtime);
#ifdef __cplusplus
}
ULONG WINAPI OaBuildVersion(void);
/* BSTR functions */
-BSTR WINAPI SysAllocString(const OLECHAR*);
-BSTR WINAPI SysAllocStringByteLen(LPCSTR,UINT);
-BSTR WINAPI SysAllocStringLen(const OLECHAR*,UINT);
-void WINAPI SysFreeString(BSTR);
-INT WINAPI SysReAllocString(LPBSTR,const OLECHAR*);
-int WINAPI SysReAllocStringLen(BSTR*,const OLECHAR*,UINT);
-UINT WINAPI SysStringByteLen(BSTR);
-UINT WINAPI SysStringLen(BSTR);
+BSTR WINAPI SysAllocString(_In_opt_z_ const OLECHAR*);
+BSTR WINAPI SysAllocStringByteLen(_In_opt_z_ LPCSTR, _In_ UINT);
+
+_Ret_writes_maybenull_z_(ui + 1)
+BSTR
+WINAPI
+SysAllocStringLen(
+ _In_reads_opt_(ui) const OLECHAR*,
+ UINT ui);
+
+void WINAPI SysFreeString(_In_opt_ BSTR);
+
+INT
+WINAPI
+SysReAllocString(
+ _Inout_ _At_(*pbstr, _Pre_z_ _Post_z_ _Post_readable_size_(_String_length_(psz) + 1)) LPBSTR pbstr,
+ _In_opt_z_ const OLECHAR *psz);
+
+_Check_return_
+int
+WINAPI
+SysReAllocStringLen(
+ _Inout_ _At_(*pbstr, _Pre_z_ _Post_z_ _Post_readable_size_(len + 1)) BSTR *pbstr,
+ _In_opt_z_ const OLECHAR*,
+ _In_ UINT len);
+
+_Post_equal_to_(_String_length_(bstr) * sizeof(OLECHAR))
+UINT
+WINAPI
+SysStringByteLen(
+ _In_opt_ BSTR bstr);
+
+_Post_equal_to_(pbstr == NULL ? 0 : _String_length_(pbstr))
+UINT
+WINAPI
+SysStringLen(
+ _In_opt_ BSTR pbstr);
/* IErrorInfo helpers */
-HRESULT WINAPI SetErrorInfo(ULONG,IErrorInfo*);
-HRESULT WINAPI GetErrorInfo(ULONG,IErrorInfo**);
-HRESULT WINAPI CreateErrorInfo(ICreateErrorInfo**);
+HRESULT WINAPI SetErrorInfo(_In_ ULONG, _In_opt_ IErrorInfo*);
+_Check_return_ HRESULT WINAPI GetErrorInfo(_In_ ULONG, _Outptr_ IErrorInfo**);
+_Check_return_ HRESULT WINAPI CreateErrorInfo(_Outptr_ ICreateErrorInfo**);
/* SafeArray functions */
-SAFEARRAY* WINAPI SafeArrayCreate(VARTYPE,UINT,SAFEARRAYBOUND*);
-SAFEARRAY* WINAPI SafeArrayCreateEx(VARTYPE,UINT,SAFEARRAYBOUND*,LPVOID);
-SAFEARRAY* WINAPI SafeArrayCreateVector(VARTYPE,LONG,ULONG);
-SAFEARRAY* WINAPI SafeArrayCreateVectorEx(VARTYPE,LONG,ULONG,LPVOID);
-
-HRESULT WINAPI SafeArrayAllocDescriptor(UINT,SAFEARRAY**);
-HRESULT WINAPI SafeArrayAllocDescriptorEx(VARTYPE,UINT,SAFEARRAY**);
-HRESULT WINAPI SafeArrayAllocData(SAFEARRAY*);
-HRESULT WINAPI SafeArrayDestroyDescriptor(SAFEARRAY*);
-HRESULT WINAPI SafeArrayPutElement(SAFEARRAY*,LONG*,void*);
-HRESULT WINAPI SafeArrayGetElement(SAFEARRAY*,LONG*,void*);
-HRESULT WINAPI SafeArrayLock(SAFEARRAY*);
-HRESULT WINAPI SafeArrayUnlock(SAFEARRAY*);
-HRESULT WINAPI SafeArrayGetUBound(SAFEARRAY*,UINT,LONG*);
-HRESULT WINAPI SafeArrayGetLBound(SAFEARRAY*,UINT,LONG*);
-UINT WINAPI SafeArrayGetDim(SAFEARRAY*);
-UINT WINAPI SafeArrayGetElemsize(SAFEARRAY*);
-HRESULT WINAPI SafeArrayGetVartype(SAFEARRAY*,VARTYPE*);
-HRESULT WINAPI SafeArrayAccessData(SAFEARRAY*,void**);
-HRESULT WINAPI SafeArrayUnaccessData(SAFEARRAY*);
-HRESULT WINAPI SafeArrayPtrOfIndex(SAFEARRAY*,LONG*,void **);
-HRESULT WINAPI SafeArrayCopyData(SAFEARRAY*,SAFEARRAY*);
-HRESULT WINAPI SafeArrayDestroyData(SAFEARRAY*);
-HRESULT WINAPI SafeArrayDestroy(SAFEARRAY*);
-HRESULT WINAPI SafeArrayCopy(SAFEARRAY*,SAFEARRAY**);
-HRESULT WINAPI SafeArrayRedim(SAFEARRAY*,SAFEARRAYBOUND*);
-HRESULT WINAPI SafeArraySetRecordInfo(SAFEARRAY*,IRecordInfo*);
-HRESULT WINAPI SafeArrayGetRecordInfo(SAFEARRAY*,IRecordInfo**);
-HRESULT WINAPI SafeArraySetIID(SAFEARRAY*,REFGUID);
-HRESULT WINAPI SafeArrayGetIID(SAFEARRAY*,GUID*);
-
-HRESULT WINAPI VectorFromBstr(BSTR,SAFEARRAY**);
-HRESULT WINAPI BstrFromVector(SAFEARRAY*,BSTR*);
+
+SAFEARRAY*
+WINAPI
+SafeArrayCreate(
+ _In_ VARTYPE,
+ _In_ UINT,
+ _In_ SAFEARRAYBOUND*);
+
+SAFEARRAY*
+WINAPI
+SafeArrayCreateEx(
+ _In_ VARTYPE,
+ _In_ UINT,
+ _In_ SAFEARRAYBOUND*,
+ _In_ LPVOID);
+
+SAFEARRAY*
+WINAPI
+SafeArrayCreateVector(
+ _In_ VARTYPE,
+ _In_ LONG,
+ _In_ ULONG);
+
+SAFEARRAY*
+WINAPI
+SafeArrayCreateVectorEx(
+ _In_ VARTYPE,
+ _In_ LONG,
+ _In_ ULONG,
+ _In_ LPVOID);
+
+HRESULT WINAPI SafeArrayAllocDescriptor(_In_ UINT, _Outptr_ SAFEARRAY**);
+
+HRESULT
+WINAPI
+SafeArrayAllocDescriptorEx(
+ _In_ VARTYPE,
+ _In_ UINT,
+ _Outptr_ SAFEARRAY**);
+
+HRESULT WINAPI SafeArrayAllocData(_In_ SAFEARRAY*);
+HRESULT WINAPI SafeArrayDestroyDescriptor(_In_ SAFEARRAY*);
+
+_Check_return_
+HRESULT
+WINAPI
+SafeArrayPutElement(
+ _In_ SAFEARRAY*,
+ LONG*,
+ _In_ void*);
+
+HRESULT WINAPI SafeArrayGetElement(_In_ SAFEARRAY*, LONG*, _Out_ void*);
+HRESULT WINAPI SafeArrayLock(_In_ SAFEARRAY*);
+HRESULT WINAPI SafeArrayUnlock(_In_ SAFEARRAY*);
+HRESULT WINAPI SafeArrayGetUBound(_In_ SAFEARRAY*, _In_ UINT, _Out_ LONG*);
+HRESULT WINAPI SafeArrayGetLBound(_In_ SAFEARRAY*, _In_ UINT, _Out_ LONG*);
+UINT WINAPI SafeArrayGetDim(_In_ SAFEARRAY*);
+UINT WINAPI SafeArrayGetElemsize(_In_ SAFEARRAY*);
+HRESULT WINAPI SafeArrayGetVartype(_In_ SAFEARRAY*, _Out_ VARTYPE*);
+HRESULT WINAPI SafeArrayAccessData(_In_ SAFEARRAY*, void**);
+HRESULT WINAPI SafeArrayUnaccessData(_In_ SAFEARRAY*);
+
+HRESULT
+WINAPI
+SafeArrayPtrOfIndex(
+ _In_ SAFEARRAY *psa,
+ _In_reads_(psa->cDims) LONG*,
+ _Outptr_result_bytebuffer_(psa->cbElements) void **);
+
+_Check_return_
+HRESULT
+WINAPI
+SafeArrayCopyData(
+ _In_ SAFEARRAY*,
+ _In_ SAFEARRAY*);
+
+HRESULT WINAPI SafeArrayDestroyData(_In_ SAFEARRAY*);
+HRESULT WINAPI SafeArrayDestroy(_In_ SAFEARRAY*);
+
+_Check_return_
+HRESULT
+WINAPI
+SafeArrayCopy(
+ _In_ SAFEARRAY*,
+ _Outptr_ SAFEARRAY**);
+
+HRESULT WINAPI SafeArrayRedim(_Inout_ SAFEARRAY*, _In_ SAFEARRAYBOUND*);
+HRESULT WINAPI SafeArraySetRecordInfo(_In_ SAFEARRAY*, _In_ IRecordInfo*);
+HRESULT WINAPI SafeArrayGetRecordInfo(_In_ SAFEARRAY*, _Outptr_ IRecordInfo**);
+HRESULT WINAPI SafeArraySetIID(_In_ SAFEARRAY*, _In_ REFGUID);
+HRESULT WINAPI SafeArrayGetIID(_In_ SAFEARRAY*, _Out_ GUID*);
+
+_Check_return_ HRESULT WINAPI VectorFromBstr(_In_ BSTR, _Outptr_ SAFEARRAY**);
+_Check_return_ HRESULT WINAPI BstrFromVector(_In_ SAFEARRAY*, _Out_ BSTR*);
/* Object registration helpers */
#define ACTIVEOBJECT_STRONG 0
#define ACTIVEOBJECT_WEAK 1
-HRESULT WINAPI RegisterActiveObject(LPUNKNOWN,REFCLSID,DWORD,LPDWORD);
+_Check_return_
+HRESULT
+WINAPI
+RegisterActiveObject(
+ LPUNKNOWN,
+ REFCLSID,
+ DWORD,
+ LPDWORD);
+
HRESULT WINAPI RevokeActiveObject(DWORD,LPVOID);
HRESULT WINAPI GetActiveObject(REFCLSID,LPVOID,LPUNKNOWN*);
#define V_UNKNOWNREF(A) V_UNION(A,ppunkVal)
#define V_VARIANTREF(A) V_UNION(A,pvarVal)
-void WINAPI VariantInit(VARIANT*);
-HRESULT WINAPI VariantClear(VARIANT*);
-HRESULT WINAPI VariantCopy(VARIANT*,VARIANT*);
-HRESULT WINAPI VariantCopyInd(VARIANT*,VARIANT*);
-HRESULT WINAPI VariantChangeType(VARIANT*,VARIANT*,USHORT,VARTYPE);
-HRESULT WINAPI VariantChangeTypeEx(VARIANT*,VARIANT*,LCID,USHORT,VARTYPE);
+void WINAPI VariantInit(_Out_ VARIANT*);
+HRESULT WINAPI VariantClear(_Inout_ VARIANT*);
+_Check_return_ HRESULT WINAPI VariantCopy(_Inout_ VARIANT*, _In_ VARIANT*);
+_Check_return_ HRESULT WINAPI VariantCopyInd(_Inout_ VARIANT*, _In_ VARIANT*);
+
+_Check_return_
+HRESULT
+WINAPI
+VariantChangeType(
+ _Inout_ VARIANT*,
+ _In_ VARIANT*,
+ _In_ USHORT,
+ _In_ VARTYPE);
+
+_Check_return_
+HRESULT
+WINAPI
+VariantChangeTypeEx(
+ _Inout_ VARIANT*,
+ _In_ VARIANT*,
+ _In_ LCID,
+ _In_ USHORT,
+ _In_ VARTYPE);
/* VariantChangeType/VariantChangeTypeEx flags */
#define VARIANT_NOVALUEPROP 0x01 /* Don't get the default value property from IDispatch */
#define VTDATEGRE_MIN -657434 /* Minimum possible Gregorian date: 1/1/100 */
#define VTDATEGRE_MAX 2958465 /* Maximum possible Gregorian date: 31/12/9999 */
-HRESULT WINAPI VarUI1FromI2(SHORT,BYTE*);
-HRESULT WINAPI VarUI1FromI4(LONG,BYTE*);
-HRESULT WINAPI VarUI1FromI8(LONG64,BYTE*);
-HRESULT WINAPI VarUI1FromR4(FLOAT,BYTE*);
-HRESULT WINAPI VarUI1FromR8(DOUBLE,BYTE*);
-HRESULT WINAPI VarUI1FromDate(DATE,BYTE*);
-HRESULT WINAPI VarUI1FromBool(VARIANT_BOOL,BYTE*);
-HRESULT WINAPI VarUI1FromI1(signed char,BYTE*);
-HRESULT WINAPI VarUI1FromUI2(USHORT,BYTE*);
-HRESULT WINAPI VarUI1FromUI4(ULONG,BYTE*);
-HRESULT WINAPI VarUI1FromUI8(ULONG64,BYTE*);
-HRESULT WINAPI VarUI1FromStr(OLECHAR*,LCID,ULONG,BYTE*);
-HRESULT WINAPI VarUI1FromCy(CY,BYTE*);
-HRESULT WINAPI VarUI1FromDec(DECIMAL*,BYTE*);
-HRESULT WINAPI VarUI1FromDisp(IDispatch*,LCID,BYTE*);
-
-HRESULT WINAPI VarI2FromUI1(BYTE,SHORT*);
-HRESULT WINAPI VarI2FromI4(LONG,SHORT*);
-HRESULT WINAPI VarI2FromI8(LONG64,SHORT*);
-HRESULT WINAPI VarI2FromR4(FLOAT,SHORT*);
-HRESULT WINAPI VarI2FromR8(DOUBLE,SHORT*);
-HRESULT WINAPI VarI2FromDate(DATE,SHORT*);
-HRESULT WINAPI VarI2FromBool(VARIANT_BOOL,SHORT*);
-HRESULT WINAPI VarI2FromI1(signed char,SHORT*);
-HRESULT WINAPI VarI2FromUI2(USHORT,SHORT*);
-HRESULT WINAPI VarI2FromUI4(ULONG,SHORT*);
-HRESULT WINAPI VarI2FromUI8(ULONG64,SHORT*);
-HRESULT WINAPI VarI2FromStr(OLECHAR*,LCID,ULONG,SHORT*);
+HRESULT WINAPI VarUI1FromI2(SHORT, _Out_ BYTE*);
+HRESULT WINAPI VarUI1FromI4(LONG, _Out_ BYTE*);
+HRESULT WINAPI VarUI1FromI8(LONG64, _Out_ BYTE*);
+HRESULT WINAPI VarUI1FromR4(FLOAT, _Out_ BYTE*);
+HRESULT WINAPI VarUI1FromR8(DOUBLE, _Out_ BYTE*);
+HRESULT WINAPI VarUI1FromDate(DATE, _Out_ BYTE*);
+HRESULT WINAPI VarUI1FromBool(VARIANT_BOOL, _Out_ BYTE*);
+HRESULT WINAPI VarUI1FromI1(signed char, _Out_ BYTE*);
+HRESULT WINAPI VarUI1FromUI2(USHORT, _Out_ BYTE*);
+HRESULT WINAPI VarUI1FromUI4(ULONG, _Out_ BYTE*);
+HRESULT WINAPI VarUI1FromUI8(ULONG64, _Out_ BYTE*);
+HRESULT WINAPI VarUI1FromStr(_In_ OLECHAR*, LCID, ULONG, _Out_ BYTE*);
+HRESULT WINAPI VarUI1FromCy(CY, _Out_ BYTE*);
+HRESULT WINAPI VarUI1FromDec(_In_ DECIMAL*, _Out_ BYTE*);
+HRESULT WINAPI VarUI1FromDisp(IDispatch*, LCID, _Out_ BYTE*);
+
+HRESULT WINAPI VarI2FromUI1(BYTE, _Out_ SHORT*);
+HRESULT WINAPI VarI2FromI4(LONG, _Out_ SHORT*);
+HRESULT WINAPI VarI2FromI8(LONG64, _Out_ SHORT*);
+HRESULT WINAPI VarI2FromR4(FLOAT, _Out_ SHORT*);
+HRESULT WINAPI VarI2FromR8(DOUBLE, _Out_ SHORT*);
+HRESULT WINAPI VarI2FromDate(DATE, _Out_ SHORT*);
+HRESULT WINAPI VarI2FromBool(VARIANT_BOOL, _Out_ SHORT*);
+HRESULT WINAPI VarI2FromI1(signed char, _Out_ SHORT*);
+HRESULT WINAPI VarI2FromUI2(USHORT, _Out_ SHORT*);
+HRESULT WINAPI VarI2FromUI4(ULONG, _Out_ SHORT*);
+HRESULT WINAPI VarI2FromUI8(ULONG64, _Out_ SHORT*);
+HRESULT WINAPI VarI2FromStr(_In_ OLECHAR*, LCID, ULONG, _Out_ SHORT*);
HRESULT WINAPI VarI2FromCy(CY,SHORT*);
-HRESULT WINAPI VarI2FromDec(DECIMAL*,SHORT*);
-HRESULT WINAPI VarI2FromDisp(IDispatch*,LCID,SHORT*);
-
-HRESULT WINAPI VarI4FromUI1(BYTE,LONG*);
-HRESULT WINAPI VarI4FromI2(SHORT,LONG*);
-HRESULT WINAPI VarI4FromI8(LONG64,LONG*);
-HRESULT WINAPI VarI4FromR4(FLOAT,LONG*);
-HRESULT WINAPI VarI4FromR8(DOUBLE,LONG*);
-HRESULT WINAPI VarI4FromDate(DATE,LONG*);
-HRESULT WINAPI VarI4FromBool(VARIANT_BOOL,LONG*);
-HRESULT WINAPI VarI4FromI1(signed char,LONG*);
-HRESULT WINAPI VarI4FromUI2(USHORT,LONG*);
-HRESULT WINAPI VarI4FromUI4(ULONG,LONG*);
-HRESULT WINAPI VarI4FromUI8(ULONG64,LONG*);
-HRESULT WINAPI VarI4FromStr(OLECHAR*,LCID,ULONG,LONG*);
-HRESULT WINAPI VarI4FromCy(CY,LONG*);
-HRESULT WINAPI VarI4FromDec(DECIMAL*,LONG*);
-HRESULT WINAPI VarI4FromDisp(IDispatch*,LCID,LONG*);
-
-HRESULT WINAPI VarI8FromUI1(BYTE,LONG64*);
-HRESULT WINAPI VarI8FromI2(SHORT,LONG64*);
+HRESULT WINAPI VarI2FromDec(_In_ DECIMAL*, _Out_ SHORT*);
+HRESULT WINAPI VarI2FromDisp(IDispatch*, LCID, _Out_ SHORT*);
+
+HRESULT WINAPI VarI4FromUI1(BYTE, _Out_ LONG*);
+HRESULT WINAPI VarI4FromI2(SHORT, _Out_ LONG*);
+HRESULT WINAPI VarI4FromI8(LONG64, _Out_ LONG*);
+HRESULT WINAPI VarI4FromR4(FLOAT, _Out_ LONG*);
+HRESULT WINAPI VarI4FromR8(DOUBLE, _Out_ LONG*);
+HRESULT WINAPI VarI4FromDate(DATE, _Out_ LONG*);
+HRESULT WINAPI VarI4FromBool(VARIANT_BOOL, _Out_ LONG*);
+HRESULT WINAPI VarI4FromI1(signed char, _Out_ LONG*);
+HRESULT WINAPI VarI4FromUI2(USHORT, _Out_ LONG*);
+HRESULT WINAPI VarI4FromUI4(ULONG, _Out_ LONG*);
+HRESULT WINAPI VarI4FromUI8(ULONG64, _Out_ LONG*);
+HRESULT WINAPI VarI4FromStr(_In_ OLECHAR*, LCID, ULONG, _Out_ LONG*);
+HRESULT WINAPI VarI4FromCy(CY, _Out_ LONG*);
+HRESULT WINAPI VarI4FromDec(_In_ DECIMAL*, _Out_ LONG*);
+HRESULT WINAPI VarI4FromDisp(IDispatch*, _In_ LCID, _Out_ LONG*);
+
+HRESULT WINAPI VarI8FromUI1(BYTE, _Out_ LONG64*);
+HRESULT WINAPI VarI8FromI2(SHORT, _Out_ LONG64*);
HRESULT WINAPI VarI8FromI4(LONG,LONG64*);
-HRESULT WINAPI VarI8FromR4(FLOAT,LONG64*);
-HRESULT WINAPI VarI8FromR8(DOUBLE,LONG64*);
-HRESULT WINAPI VarI8FromDate(DATE,LONG64*);
-HRESULT WINAPI VarI8FromStr(OLECHAR*,LCID,ULONG,LONG64*);
-HRESULT WINAPI VarI8FromBool(VARIANT_BOOL,LONG64*);
-HRESULT WINAPI VarI8FromI1(signed char,LONG64*);
-HRESULT WINAPI VarI8FromUI2(USHORT,LONG64*);
-HRESULT WINAPI VarI8FromUI4(ULONG,LONG64*);
-HRESULT WINAPI VarI8FromUI8(ULONG64,LONG64*);
-HRESULT WINAPI VarI8FromDec(DECIMAL *pdecIn,LONG64*);
+HRESULT WINAPI VarI8FromR4(FLOAT, _Out_ LONG64*);
+HRESULT WINAPI VarI8FromR8(DOUBLE, _Out_ LONG64*);
+HRESULT WINAPI VarI8FromDate(DATE, _Out_ LONG64*);
+HRESULT WINAPI VarI8FromStr(_In_ OLECHAR*, _In_ LCID, _In_ ULONG, _Out_ LONG64*);
+HRESULT WINAPI VarI8FromBool(VARIANT_BOOL, _Out_ LONG64*);
+HRESULT WINAPI VarI8FromI1(signed char, _Out_ LONG64*);
+HRESULT WINAPI VarI8FromUI2(USHORT, _Out_ LONG64*);
+HRESULT WINAPI VarI8FromUI4(ULONG, _Out_ LONG64*);
+HRESULT WINAPI VarI8FromUI8(ULONG64, _Out_ LONG64*);
+HRESULT WINAPI VarI8FromDec(_In_ DECIMAL *pdecIn, _Out_ LONG64*);
HRESULT WINAPI VarI8FromInt(INT intIn,LONG64*);
-HRESULT WINAPI VarI8FromCy(CY,LONG64*);
-HRESULT WINAPI VarI8FromDisp(IDispatch*,LCID,LONG64*);
-
-HRESULT WINAPI VarR4FromUI1(BYTE,FLOAT*);
-HRESULT WINAPI VarR4FromI2(SHORT,FLOAT*);
-HRESULT WINAPI VarR4FromI4(LONG,FLOAT*);
-HRESULT WINAPI VarR4FromI8(LONG64,FLOAT*);
-HRESULT WINAPI VarR4FromR8(DOUBLE,FLOAT*);
-HRESULT WINAPI VarR4FromDate(DATE,FLOAT*);
-HRESULT WINAPI VarR4FromBool(VARIANT_BOOL,FLOAT*);
-HRESULT WINAPI VarR4FromI1(signed char,FLOAT*);
-HRESULT WINAPI VarR4FromUI2(USHORT,FLOAT*);
-HRESULT WINAPI VarR4FromUI4(ULONG,FLOAT*);
-HRESULT WINAPI VarR4FromUI8(ULONG64,FLOAT*);
-HRESULT WINAPI VarR4FromStr(OLECHAR*,LCID,ULONG,FLOAT*);
+HRESULT WINAPI VarI8FromCy(_In_ CY, _Out_ LONG64*);
+HRESULT WINAPI VarI8FromDisp(IDispatch*, _In_ LCID, _Out_ LONG64*);
+
+HRESULT WINAPI VarR4FromUI1(BYTE, _Out_ FLOAT*);
+HRESULT WINAPI VarR4FromI2(SHORT, _Out_ FLOAT*);
+HRESULT WINAPI VarR4FromI4(LONG, _Out_ FLOAT*);
+HRESULT WINAPI VarR4FromI8(LONG64, _Out_ FLOAT*);
+HRESULT WINAPI VarR4FromR8(DOUBLE, _Out_ FLOAT*);
+HRESULT WINAPI VarR4FromDate(DATE, _Out_ FLOAT*);
+HRESULT WINAPI VarR4FromBool(VARIANT_BOOL, _Out_ FLOAT*);
+HRESULT WINAPI VarR4FromI1(signed char, _Out_ FLOAT*);
+HRESULT WINAPI VarR4FromUI2(USHORT, _Out_ FLOAT*);
+HRESULT WINAPI VarR4FromUI4(ULONG, _Out_ FLOAT*);
+HRESULT WINAPI VarR4FromUI8(ULONG64, _Out_ FLOAT*);
+HRESULT WINAPI VarR4FromStr(_In_ OLECHAR*, LCID, ULONG, _Out_ FLOAT*);
HRESULT WINAPI VarR4FromCy(CY,FLOAT*);
-HRESULT WINAPI VarR4FromDec(DECIMAL*,FLOAT*);
-HRESULT WINAPI VarR4FromDisp(IDispatch*,LCID,FLOAT*);
-
-HRESULT WINAPI VarR8FromUI1(BYTE,double*);
-HRESULT WINAPI VarR8FromI2(SHORT,double*);
-HRESULT WINAPI VarR8FromI4(LONG,double*);
-HRESULT WINAPI VarR8FromI8(LONG64,double*);
-HRESULT WINAPI VarR8FromR4(FLOAT,double*);
-HRESULT WINAPI VarR8FromDate(DATE,double*);
-HRESULT WINAPI VarR8FromBool(VARIANT_BOOL,double*);
+HRESULT WINAPI VarR4FromDec(_In_ DECIMAL*, _Out_ FLOAT*);
+HRESULT WINAPI VarR4FromDisp(IDispatch*, LCID, _Out_ FLOAT*);
+
+HRESULT WINAPI VarR8FromUI1(BYTE, _Out_ double*);
+HRESULT WINAPI VarR8FromI2(SHORT, _Out_ double*);
+HRESULT WINAPI VarR8FromI4(LONG, _Out_ double*);
+HRESULT WINAPI VarR8FromI8(LONG64, _Out_ double*);
+HRESULT WINAPI VarR8FromR4(FLOAT, _Out_ double*);
+HRESULT WINAPI VarR8FromDate(DATE, _Out_ double*);
+HRESULT WINAPI VarR8FromBool(VARIANT_BOOL, _Out_ double*);
HRESULT WINAPI VarR8FromI1(signed char,double*);
-HRESULT WINAPI VarR8FromUI2(USHORT,double*);
-HRESULT WINAPI VarR8FromUI4(ULONG,double*);
-HRESULT WINAPI VarR8FromUI8(ULONG64,double*);
-HRESULT WINAPI VarR8FromStr(OLECHAR*,LCID,ULONG,double*);
+HRESULT WINAPI VarR8FromUI2(USHORT, _Out_ double*);
+HRESULT WINAPI VarR8FromUI4(ULONG, _Out_ double*);
+HRESULT WINAPI VarR8FromUI8(ULONG64, _Out_ double*);
+HRESULT WINAPI VarR8FromStr(_In_ OLECHAR*, LCID, ULONG, _Out_ double*);
HRESULT WINAPI VarR8FromCy(CY,double*);
-HRESULT WINAPI VarR8FromDec(const DECIMAL*,double*);
-HRESULT WINAPI VarR8FromDisp(IDispatch*,LCID,double*);
-
-HRESULT WINAPI VarDateFromUI1(BYTE,DATE*);
-HRESULT WINAPI VarDateFromI2(SHORT,DATE*);
-HRESULT WINAPI VarDateFromI4(LONG,DATE*);
-HRESULT WINAPI VarDateFromI8(LONG64,DATE*);
-HRESULT WINAPI VarDateFromR4(FLOAT,DATE*);
-HRESULT WINAPI VarDateFromR8(DOUBLE,DATE*);
-HRESULT WINAPI VarDateFromStr(OLECHAR*,LCID,ULONG,DATE*);
-HRESULT WINAPI VarDateFromI1(signed char,DATE*);
-HRESULT WINAPI VarDateFromUI2(USHORT,DATE*);
-HRESULT WINAPI VarDateFromUI4(ULONG,DATE*);
-HRESULT WINAPI VarDateFromUI8(ULONG64,DATE*);
-HRESULT WINAPI VarDateFromBool(VARIANT_BOOL,DATE*);
-HRESULT WINAPI VarDateFromCy(CY,DATE*);
-HRESULT WINAPI VarDateFromDec(DECIMAL*,DATE*);
-HRESULT WINAPI VarDateFromDisp(IDispatch*,LCID,DATE*);
-
-HRESULT WINAPI VarCyFromUI1(BYTE,CY*);
-HRESULT WINAPI VarCyFromI2(SHORT sIn,CY*);
-HRESULT WINAPI VarCyFromI4(LONG,CY*);
-HRESULT WINAPI VarCyFromI8(LONG64,CY*);
-HRESULT WINAPI VarCyFromR4(FLOAT,CY*);
-HRESULT WINAPI VarCyFromR8(DOUBLE,CY*);
-HRESULT WINAPI VarCyFromDate(DATE,CY*);
-HRESULT WINAPI VarCyFromStr(OLECHAR*,LCID,ULONG,CY*);
-HRESULT WINAPI VarCyFromBool(VARIANT_BOOL,CY*);
-HRESULT WINAPI VarCyFromI1(signed char,CY*);
-HRESULT WINAPI VarCyFromUI2(USHORT,CY*);
-HRESULT WINAPI VarCyFromUI4(ULONG,CY*);
-HRESULT WINAPI VarCyFromUI8(ULONG64,CY*);
-HRESULT WINAPI VarCyFromDec(DECIMAL*,CY*);
-HRESULT WINAPI VarCyFromDisp(IDispatch*,LCID,CY*);
-
-HRESULT WINAPI VarBstrFromUI1(BYTE,LCID,ULONG,BSTR*);
+HRESULT WINAPI VarR8FromDec(_In_ const DECIMAL*, _Out_ double*);
+HRESULT WINAPI VarR8FromDisp(IDispatch*, LCID, _Out_ double*);
+
+HRESULT WINAPI VarDateFromUI1(BYTE, _Out_ DATE*);
+HRESULT WINAPI VarDateFromI2(SHORT, _Out_ DATE*);
+HRESULT WINAPI VarDateFromI4(LONG, _Out_ DATE*);
+HRESULT WINAPI VarDateFromI8(LONG64, _Out_ DATE*);
+HRESULT WINAPI VarDateFromR4(FLOAT, _Out_ DATE*);
+HRESULT WINAPI VarDateFromR8(DOUBLE, _Out_ DATE*);
+HRESULT WINAPI VarDateFromStr(_In_ OLECHAR*, _In_ LCID, _In_ ULONG, _Out_ DATE*);
+HRESULT WINAPI VarDateFromI1(signed char, _Out_ DATE*);
+HRESULT WINAPI VarDateFromUI2(USHORT, _Out_ DATE*);
+HRESULT WINAPI VarDateFromUI4(ULONG, _Out_ DATE*);
+HRESULT WINAPI VarDateFromUI8(ULONG64, _Out_ DATE*);
+HRESULT WINAPI VarDateFromBool(VARIANT_BOOL, _Out_ DATE*);
+HRESULT WINAPI VarDateFromCy(CY, _Out_ DATE*);
+HRESULT WINAPI VarDateFromDec(_In_ DECIMAL*, _Out_ DATE*);
+HRESULT WINAPI VarDateFromDisp(IDispatch*, LCID, _Out_ DATE*);
+
+HRESULT WINAPI VarCyFromUI1(BYTE, _Out_ CY*);
+HRESULT WINAPI VarCyFromI2(SHORT sIn, _Out_ CY*);
+HRESULT WINAPI VarCyFromI4(LONG, _Out_ CY*);
+HRESULT WINAPI VarCyFromI8(LONG64, _Out_ CY*);
+HRESULT WINAPI VarCyFromR4(FLOAT, _Out_ CY*);
+HRESULT WINAPI VarCyFromR8(DOUBLE, _Out_ CY*);
+HRESULT WINAPI VarCyFromDate(DATE, _Out_ CY*);
+HRESULT WINAPI VarCyFromStr(_In_ OLECHAR*, _In_ LCID, _In_ ULONG, _Out_ CY*);
+HRESULT WINAPI VarCyFromBool(VARIANT_BOOL, _Out_ CY*);
+HRESULT WINAPI VarCyFromI1(signed char, _Out_ CY*);
+HRESULT WINAPI VarCyFromUI2(USHORT, _Out_ CY*);
+HRESULT WINAPI VarCyFromUI4(ULONG, _Out_ CY*);
+HRESULT WINAPI VarCyFromUI8(ULONG64, _Out_ CY*);
+HRESULT WINAPI VarCyFromDec(_In_ DECIMAL*, _Out_ CY*);
+HRESULT WINAPI VarCyFromDisp(_In_ IDispatch*, LCID, _Out_ CY*);
+
+HRESULT WINAPI VarBstrFromUI1(BYTE, LCID, ULONG, _Out_ BSTR*);
HRESULT WINAPI VarBstrFromI2(SHORT,LCID,ULONG,BSTR*);
-HRESULT WINAPI VarBstrFromI4(LONG,LCID,ULONG,BSTR*);
-HRESULT WINAPI VarBstrFromI8(LONG64,LCID,ULONG,BSTR*);
-HRESULT WINAPI VarBstrFromR4(FLOAT,LCID,ULONG,BSTR*);
-HRESULT WINAPI VarBstrFromR8(DOUBLE,LCID,ULONG,BSTR*);
-HRESULT WINAPI VarBstrFromDate(DATE,LCID,ULONG,BSTR*);
-HRESULT WINAPI VarBstrFromBool(VARIANT_BOOL,LCID,ULONG,BSTR*);
-HRESULT WINAPI VarBstrFromI1(signed char,LCID,ULONG,BSTR*);
-HRESULT WINAPI VarBstrFromUI2(USHORT,LCID,ULONG,BSTR*);
-HRESULT WINAPI VarBstrFromUI8(ULONG64,LCID,ULONG,BSTR*);
-HRESULT WINAPI VarBstrFromUI4(ULONG,LCID,ULONG,BSTR*);
-HRESULT WINAPI VarBstrFromCy(CY,LCID,ULONG,BSTR*);
-HRESULT WINAPI VarBstrFromDec(DECIMAL*,LCID,ULONG,BSTR*);
-HRESULT WINAPI VarBstrFromDisp(IDispatch*,LCID,ULONG,BSTR*);
-
-HRESULT WINAPI VarBoolFromUI1(BYTE,VARIANT_BOOL*);
-HRESULT WINAPI VarBoolFromI2(SHORT,VARIANT_BOOL*);
-HRESULT WINAPI VarBoolFromI4(LONG,VARIANT_BOOL*);
-HRESULT WINAPI VarBoolFromI8(LONG64,VARIANT_BOOL*);
-HRESULT WINAPI VarBoolFromR4(FLOAT,VARIANT_BOOL*);
-HRESULT WINAPI VarBoolFromR8(DOUBLE,VARIANT_BOOL*);
-HRESULT WINAPI VarBoolFromDate(DATE,VARIANT_BOOL*);
-HRESULT WINAPI VarBoolFromStr(OLECHAR*,LCID,ULONG,VARIANT_BOOL*);
-HRESULT WINAPI VarBoolFromI1(signed char,VARIANT_BOOL*);
-HRESULT WINAPI VarBoolFromUI2(USHORT,VARIANT_BOOL*);
-HRESULT WINAPI VarBoolFromUI4(ULONG,VARIANT_BOOL*);
-HRESULT WINAPI VarBoolFromUI8(ULONG64,VARIANT_BOOL*);
-HRESULT WINAPI VarBoolFromCy(CY,VARIANT_BOOL*);
-HRESULT WINAPI VarBoolFromDec(DECIMAL*,VARIANT_BOOL*);
-HRESULT WINAPI VarBoolFromDisp(IDispatch*,LCID,VARIANT_BOOL*);
-
-HRESULT WINAPI VarI1FromUI1(BYTE,signed char*);
-HRESULT WINAPI VarI1FromI2(SHORT,signed char*);
-HRESULT WINAPI VarI1FromI4(LONG,signed char*);
-HRESULT WINAPI VarI1FromI8(LONG64,signed char*);
-HRESULT WINAPI VarI1FromR4(FLOAT,signed char*);
-HRESULT WINAPI VarI1FromR8(DOUBLE,signed char*);
-HRESULT WINAPI VarI1FromDate(DATE,signed char*);
-HRESULT WINAPI VarI1FromStr(OLECHAR*,LCID,ULONG,signed char*);
-HRESULT WINAPI VarI1FromBool(VARIANT_BOOL,signed char*);
-HRESULT WINAPI VarI1FromUI2(USHORT,signed char*);
-HRESULT WINAPI VarI1FromUI4(ULONG,signed char*);
-HRESULT WINAPI VarI1FromUI8(ULONG64,signed char*);
-HRESULT WINAPI VarI1FromCy(CY,signed char*);
-HRESULT WINAPI VarI1FromDec(DECIMAL*,signed char*);
-HRESULT WINAPI VarI1FromDisp(IDispatch*,LCID,signed char*);
-
-HRESULT WINAPI VarUI2FromUI1(BYTE,USHORT*);
-HRESULT WINAPI VarUI2FromI2(SHORT,USHORT*);
-HRESULT WINAPI VarUI2FromI4(LONG,USHORT*);
-HRESULT WINAPI VarUI2FromI8(LONG64,USHORT*);
-HRESULT WINAPI VarUI2FromR4(FLOAT,USHORT*);
+HRESULT WINAPI VarBstrFromI4(LONG, LCID, ULONG, _Out_ BSTR*);
+HRESULT WINAPI VarBstrFromI8(LONG64, LCID, ULONG, _Out_ BSTR*);
+HRESULT WINAPI VarBstrFromR4(FLOAT, LCID, ULONG, _Out_ BSTR*);
+HRESULT WINAPI VarBstrFromR8(DOUBLE, LCID, ULONG, _Out_ BSTR*);
+HRESULT WINAPI VarBstrFromDate(_In_ DATE, _In_ LCID, _In_ ULONG, _Out_ BSTR*);
+HRESULT WINAPI VarBstrFromBool(VARIANT_BOOL, LCID, ULONG, _Out_ BSTR*);
+HRESULT WINAPI VarBstrFromI1(signed char, LCID, ULONG, _Out_ BSTR*);
+HRESULT WINAPI VarBstrFromUI2(USHORT, LCID, ULONG, _Out_ BSTR*);
+HRESULT WINAPI VarBstrFromUI8(ULONG64, LCID, ULONG, _Out_ BSTR*);
+HRESULT WINAPI VarBstrFromUI4(ULONG, LCID, ULONG, _Out_ BSTR*);
+HRESULT WINAPI VarBstrFromCy(CY, LCID, ULONG, _Out_ BSTR*);
+HRESULT WINAPI VarBstrFromDec(_In_ DECIMAL*, _In_ LCID, _In_ ULONG, _Out_ BSTR*);
+HRESULT WINAPI VarBstrFromDisp(IDispatch*, LCID, ULONG, _Out_ BSTR*);
+
+HRESULT WINAPI VarBoolFromUI1(BYTE, _Out_ VARIANT_BOOL*);
+_Check_return_ HRESULT WINAPI VarBoolFromI2(_In_ SHORT, _Out_ VARIANT_BOOL*);
+HRESULT WINAPI VarBoolFromI4(LONG, _Out_ VARIANT_BOOL*);
+HRESULT WINAPI VarBoolFromI8(LONG64, _Out_ VARIANT_BOOL*);
+HRESULT WINAPI VarBoolFromR4(FLOAT, _Out_ VARIANT_BOOL*);
+HRESULT WINAPI VarBoolFromR8(DOUBLE, _Out_ VARIANT_BOOL*);
+HRESULT WINAPI VarBoolFromDate(DATE, _Out_ VARIANT_BOOL*);
+HRESULT WINAPI VarBoolFromStr(_In_ OLECHAR*, LCID, ULONG, _Out_ VARIANT_BOOL*);
+HRESULT WINAPI VarBoolFromI1(signed char, _Out_ VARIANT_BOOL*);
+HRESULT WINAPI VarBoolFromUI2(USHORT, _Out_ VARIANT_BOOL*);
+HRESULT WINAPI VarBoolFromUI4(ULONG, _Out_ VARIANT_BOOL*);
+HRESULT WINAPI VarBoolFromUI8(ULONG64, _Out_ VARIANT_BOOL*);
+HRESULT WINAPI VarBoolFromCy(CY, _Out_ VARIANT_BOOL*);
+HRESULT WINAPI VarBoolFromDec(_In_ DECIMAL*, _Out_ VARIANT_BOOL*);
+HRESULT WINAPI VarBoolFromDisp(IDispatch*, LCID, _Out_ VARIANT_BOOL*);
+
+HRESULT WINAPI VarI1FromUI1(_In_ BYTE, _Out_ signed char*);
+HRESULT WINAPI VarI1FromI2(_In_ SHORT, _Out_ signed char*);
+HRESULT WINAPI VarI1FromI4(_In_ LONG, _Out_ signed char*);
+HRESULT WINAPI VarI1FromI8(_In_ LONG64, _Out_ signed char*);
+HRESULT WINAPI VarI1FromR4(_In_ FLOAT, _Out_ signed char*);
+HRESULT WINAPI VarI1FromR8(_In_ DOUBLE, _Out_ signed char*);
+HRESULT WINAPI VarI1FromDate(_In_ DATE, _Out_ signed char*);
+HRESULT WINAPI VarI1FromStr(_In_ OLECHAR*, _In_ LCID, _In_ ULONG, _Out_ signed char*);
+HRESULT WINAPI VarI1FromBool(_In_ VARIANT_BOOL, _Out_ signed char*);
+HRESULT WINAPI VarI1FromUI2(_In_ USHORT, _Out_ signed char*);
+HRESULT WINAPI VarI1FromUI4(_In_ ULONG, _Out_ signed char*);
+HRESULT WINAPI VarI1FromUI8(_In_ ULONG64, _Out_ signed char*);
+HRESULT WINAPI VarI1FromCy(_In_ CY, _Out_ signed char*);
+HRESULT WINAPI VarI1FromDec(_In_ DECIMAL*, _Out_ signed char*);
+HRESULT WINAPI VarI1FromDisp(_In_ IDispatch*, _In_ LCID, _Out_ signed char*);
+
+HRESULT WINAPI VarUI2FromUI1(BYTE, _Out_ USHORT*);
+HRESULT WINAPI VarUI2FromI2(SHORT, _Out_ USHORT*);
+HRESULT WINAPI VarUI2FromI4(LONG, _Out_ USHORT*);
+HRESULT WINAPI VarUI2FromI8(LONG64, _Out_ USHORT*);
+HRESULT WINAPI VarUI2FromR4(FLOAT, _Out_ USHORT*);
HRESULT WINAPI VarUI2FromR8(DOUBLE,USHORT*);
-HRESULT WINAPI VarUI2FromDate(DATE,USHORT*);
-HRESULT WINAPI VarUI2FromStr(OLECHAR*,LCID,ULONG,USHORT*);
-HRESULT WINAPI VarUI2FromBool(VARIANT_BOOL,USHORT*);
-HRESULT WINAPI VarUI2FromI1(signed char,USHORT*);
-HRESULT WINAPI VarUI2FromUI4(ULONG,USHORT*);
-HRESULT WINAPI VarUI2FromUI8(ULONG64,USHORT*);
-HRESULT WINAPI VarUI2FromCy(CY,USHORT*);
-HRESULT WINAPI VarUI2FromDec(DECIMAL*,USHORT*);
-HRESULT WINAPI VarUI2FromDisp(IDispatch*,LCID,USHORT*);
-
-HRESULT WINAPI VarUI4FromStr(OLECHAR*,LCID,ULONG,ULONG*);
-HRESULT WINAPI VarUI4FromUI1(BYTE,ULONG*);
-HRESULT WINAPI VarUI4FromI2(SHORT,ULONG*);
-HRESULT WINAPI VarUI4FromI4(LONG,ULONG*);
-HRESULT WINAPI VarUI4FromI8(LONG64,ULONG*);
-HRESULT WINAPI VarUI4FromR4(FLOAT,ULONG*);
-HRESULT WINAPI VarUI4FromR8(DOUBLE,ULONG*);
-HRESULT WINAPI VarUI4FromDate(DATE,ULONG*);
-HRESULT WINAPI VarUI4FromBool(VARIANT_BOOL,ULONG*);
-HRESULT WINAPI VarUI4FromI1(signed char,ULONG*);
-HRESULT WINAPI VarUI4FromUI2(USHORT,ULONG*);
-HRESULT WINAPI VarUI4FromUI8(ULONG64,ULONG*);
-HRESULT WINAPI VarUI4FromCy(CY,ULONG*);
-HRESULT WINAPI VarUI4FromDec(DECIMAL*,ULONG*);
-HRESULT WINAPI VarUI4FromDisp(IDispatch*,LCID,ULONG*);
-
-HRESULT WINAPI VarUI8FromUI1(BYTE,ULONG64*);
-HRESULT WINAPI VarUI8FromI2(SHORT,ULONG64*);
-HRESULT WINAPI VarUI8FromI4(LONG,ULONG64*);
-HRESULT WINAPI VarUI8FromI8(LONG64,ULONG64*);
-HRESULT WINAPI VarUI8FromR4(FLOAT,ULONG64*);
-HRESULT WINAPI VarUI8FromR8(DOUBLE,ULONG64*);
-HRESULT WINAPI VarUI8FromDate(DATE,ULONG64*);
-HRESULT WINAPI VarUI8FromStr(OLECHAR*,LCID,ULONG,ULONG64*);
-HRESULT WINAPI VarUI8FromBool(VARIANT_BOOL,ULONG64*);
-HRESULT WINAPI VarUI8FromI1(signed char,ULONG64*);
-HRESULT WINAPI VarUI8FromUI2(USHORT,ULONG64*);
-HRESULT WINAPI VarUI8FromUI4(ULONG,ULONG64*);
-HRESULT WINAPI VarUI8FromDec(DECIMAL*,ULONG64*);
+HRESULT WINAPI VarUI2FromDate(DATE, _Out_ USHORT*);
+HRESULT WINAPI VarUI2FromStr(_In_ OLECHAR*, _In_ LCID, _In_ ULONG, _Out_ USHORT*);
+HRESULT WINAPI VarUI2FromBool(VARIANT_BOOL, _Out_ USHORT*);
+HRESULT WINAPI VarUI2FromI1(signed char, _Out_ USHORT*);
+HRESULT WINAPI VarUI2FromUI4(ULONG, _Out_ USHORT*);
+HRESULT WINAPI VarUI2FromUI8(ULONG64, _Out_ USHORT*);
+HRESULT WINAPI VarUI2FromCy(CY, _Out_ USHORT*);
+HRESULT WINAPI VarUI2FromDec(_In_ DECIMAL*, _Out_ USHORT*);
+HRESULT WINAPI VarUI2FromDisp(_In_ IDispatch*, LCID, _Out_ USHORT*);
+
+HRESULT WINAPI VarUI4FromStr(_In_ OLECHAR*, _In_ LCID, _In_ ULONG, _Out_ ULONG*);
+HRESULT WINAPI VarUI4FromUI1(BYTE, _Out_ ULONG*);
+HRESULT WINAPI VarUI4FromI2(_In_ SHORT, _Out_ ULONG*);
+HRESULT WINAPI VarUI4FromI4(LONG, _Out_ ULONG*);
+HRESULT WINAPI VarUI4FromI8(LONG64, _Out_ ULONG*);
+HRESULT WINAPI VarUI4FromR4(FLOAT, _Out_ ULONG*);
+HRESULT WINAPI VarUI4FromR8(DOUBLE, _Out_ ULONG*);
+HRESULT WINAPI VarUI4FromDate(DATE, _Out_ ULONG*);
+HRESULT WINAPI VarUI4FromBool(VARIANT_BOOL, _Out_ ULONG*);
+HRESULT WINAPI VarUI4FromI1(signed char, _Out_ ULONG*);
+HRESULT WINAPI VarUI4FromUI2(USHORT, _Out_ ULONG*);
+HRESULT WINAPI VarUI4FromUI8(ULONG64, _Out_ ULONG*);
+HRESULT WINAPI VarUI4FromCy(CY, _Out_ ULONG*);
+HRESULT WINAPI VarUI4FromDec(_In_ DECIMAL*, _Out_ ULONG*);
+HRESULT WINAPI VarUI4FromDisp(_In_ IDispatch*, LCID, _Out_ ULONG*);
+
+HRESULT WINAPI VarUI8FromUI1(BYTE, _Out_ ULONG64*);
+HRESULT WINAPI VarUI8FromI2(SHORT, _Out_ ULONG64*);
+HRESULT WINAPI VarUI8FromI4(LONG, _Out_ ULONG64*);
+HRESULT WINAPI VarUI8FromI8(LONG64, _Out_ ULONG64*);
+HRESULT WINAPI VarUI8FromR4(FLOAT, _Out_ ULONG64*);
+HRESULT WINAPI VarUI8FromR8(DOUBLE, _Out_ ULONG64*);
+HRESULT WINAPI VarUI8FromDate(DATE, _Out_ ULONG64*);
+HRESULT WINAPI VarUI8FromStr(_In_ OLECHAR*, _In_ LCID, _In_ ULONG, _Out_ ULONG64*);
+HRESULT WINAPI VarUI8FromBool(VARIANT_BOOL, _Out_ ULONG64*);
+HRESULT WINAPI VarUI8FromI1(signed char, _Out_ ULONG64*);
+HRESULT WINAPI VarUI8FromUI2(USHORT, _Out_ ULONG64*);
+HRESULT WINAPI VarUI8FromUI4(ULONG, _Out_ ULONG64*);
+HRESULT WINAPI VarUI8FromDec(_In_ DECIMAL*, _Out_ ULONG64*);
HRESULT WINAPI VarUI8FromInt(INT,ULONG64*);
-HRESULT WINAPI VarUI8FromCy(CY,ULONG64*);
-HRESULT WINAPI VarUI8FromDisp(IDispatch*,LCID,ULONG64*);
-
-HRESULT WINAPI VarDecFromUI1(BYTE,DECIMAL*);
-HRESULT WINAPI VarDecFromI2(SHORT,DECIMAL*);
-HRESULT WINAPI VarDecFromI4(LONG,DECIMAL*);
-HRESULT WINAPI VarDecFromI8(LONG64,DECIMAL*);
-HRESULT WINAPI VarDecFromR4(FLOAT,DECIMAL*);
-HRESULT WINAPI VarDecFromR8(DOUBLE,DECIMAL*);
-HRESULT WINAPI VarDecFromDate(DATE,DECIMAL*);
-HRESULT WINAPI VarDecFromStr(OLECHAR*,LCID,ULONG,DECIMAL*);
-HRESULT WINAPI VarDecFromBool(VARIANT_BOOL,DECIMAL*);
-HRESULT WINAPI VarDecFromI1(signed char,DECIMAL*);
-HRESULT WINAPI VarDecFromUI2(USHORT,DECIMAL*);
-HRESULT WINAPI VarDecFromUI4(ULONG,DECIMAL*);
-HRESULT WINAPI VarDecFromUI8(ULONG64,DECIMAL*);
-HRESULT WINAPI VarDecFromCy(CY,DECIMAL*);
-HRESULT WINAPI VarDecFromDisp(IDispatch*,LCID,DECIMAL*);
+HRESULT WINAPI VarUI8FromCy(CY, _Out_ ULONG64*);
+HRESULT WINAPI VarUI8FromDisp(_In_ IDispatch*, LCID, _Out_ ULONG64*);
+
+HRESULT WINAPI VarDecFromUI1(_In_ BYTE, _Out_ DECIMAL*);
+HRESULT WINAPI VarDecFromI2(_In_ SHORT, _Out_ DECIMAL*);
+HRESULT WINAPI VarDecFromI4(_In_ LONG, _Out_ DECIMAL*);
+HRESULT WINAPI VarDecFromI8(LONG64, _Out_ DECIMAL*);
+HRESULT WINAPI VarDecFromR4(_In_ FLOAT, _Out_ DECIMAL*);
+HRESULT WINAPI VarDecFromR8(_In_ DOUBLE, _Out_ DECIMAL*);
+HRESULT WINAPI VarDecFromDate(_In_ DATE, _Out_ DECIMAL*);
+HRESULT WINAPI VarDecFromStr(_In_ OLECHAR*, _In_ LCID, _In_ ULONG, _Out_ DECIMAL*);
+HRESULT WINAPI VarDecFromBool(_In_ VARIANT_BOOL, _Out_ DECIMAL*);
+HRESULT WINAPI VarDecFromI1(_In_ signed char, _Out_ DECIMAL*);
+HRESULT WINAPI VarDecFromUI2(_In_ USHORT, _Out_ DECIMAL*);
+HRESULT WINAPI VarDecFromUI4(_In_ ULONG, _Out_ DECIMAL*);
+HRESULT WINAPI VarDecFromUI8(ULONG64, _Out_ DECIMAL*);
+HRESULT WINAPI VarDecFromCy(_In_ CY, _Out_ DECIMAL*);
+HRESULT WINAPI VarDecFromDisp(_In_ IDispatch*, _In_ LCID, _Out_ DECIMAL*);
#define VarUI4FromUI4( in,pOut ) ( *(pOut) = (in) )
#define VarI4FromI4( in,pOut ) ( *(pOut) = (in) )
#define VARCMP_GT 2
#define VARCMP_NULL 3
-HRESULT WINAPI VarR4CmpR8(float,double);
-
-HRESULT WINAPI VarR8Pow(double,double,double*);
-HRESULT WINAPI VarR8Round(double,int,double*);
-
-HRESULT WINAPI VarDecAbs(const DECIMAL*,DECIMAL*);
-HRESULT WINAPI VarDecAdd(const DECIMAL*,const DECIMAL*,DECIMAL*);
-HRESULT WINAPI VarDecCmp(const DECIMAL*,const DECIMAL*);
-HRESULT WINAPI VarDecCmpR8(const DECIMAL*,DOUBLE);
-HRESULT WINAPI VarDecDiv(const DECIMAL*,const DECIMAL*,DECIMAL*);
-HRESULT WINAPI VarDecFix(const DECIMAL*,DECIMAL*);
-HRESULT WINAPI VarDecInt(const DECIMAL*,DECIMAL*);
-HRESULT WINAPI VarDecMul(const DECIMAL*,const DECIMAL*,DECIMAL*);
-HRESULT WINAPI VarDecNeg(const DECIMAL*,DECIMAL*);
-HRESULT WINAPI VarDecRound(const DECIMAL*,int,DECIMAL*);
-HRESULT WINAPI VarDecSub(const DECIMAL*,const DECIMAL*,DECIMAL*);
-
-HRESULT WINAPI VarCyAbs(const CY,CY*);
-HRESULT WINAPI VarCyAdd(const CY,const CY,CY*);
-HRESULT WINAPI VarCyCmp(const CY,const CY);
-HRESULT WINAPI VarCyCmpR8(const CY,DOUBLE);
-HRESULT WINAPI VarCyFix(const CY,CY*);
-HRESULT WINAPI VarCyInt(const CY,CY*);
-HRESULT WINAPI VarCyMul(const CY,CY,CY*);
-HRESULT WINAPI VarCyMulI4(const CY,LONG,CY*);
-HRESULT WINAPI VarCyMulI8(const CY,LONG64,CY*);
-HRESULT WINAPI VarCyNeg(const CY,CY*);
-HRESULT WINAPI VarCyRound(const CY,INT,CY*);
-HRESULT WINAPI VarCySub(const CY,const CY,CY*);
-
-HRESULT WINAPI VarAdd(LPVARIANT,LPVARIANT,LPVARIANT);
-HRESULT WINAPI VarAnd(LPVARIANT,LPVARIANT,LPVARIANT);
-HRESULT WINAPI VarCat(LPVARIANT,LPVARIANT,LPVARIANT);
-HRESULT WINAPI VarDiv(LPVARIANT,LPVARIANT,LPVARIANT);
-HRESULT WINAPI VarEqv(LPVARIANT,LPVARIANT,LPVARIANT);
-HRESULT WINAPI VarIdiv(LPVARIANT,LPVARIANT,LPVARIANT);
-HRESULT WINAPI VarImp(LPVARIANT,LPVARIANT,LPVARIANT);
-HRESULT WINAPI VarMod(LPVARIANT,LPVARIANT,LPVARIANT);
-HRESULT WINAPI VarMul(LPVARIANT,LPVARIANT,LPVARIANT);
-HRESULT WINAPI VarOr(LPVARIANT,LPVARIANT,LPVARIANT);
-HRESULT WINAPI VarPow(LPVARIANT,LPVARIANT,LPVARIANT);
-HRESULT WINAPI VarSub(LPVARIANT,LPVARIANT,LPVARIANT);
-HRESULT WINAPI VarXor(LPVARIANT,LPVARIANT,LPVARIANT);
-
-HRESULT WINAPI VarAbs(LPVARIANT,LPVARIANT);
-HRESULT WINAPI VarFix(LPVARIANT,LPVARIANT);
-HRESULT WINAPI VarInt(LPVARIANT,LPVARIANT);
-HRESULT WINAPI VarNeg(LPVARIANT,LPVARIANT);
-HRESULT WINAPI VarNot(LPVARIANT,LPVARIANT);
-
-HRESULT WINAPI VarRound(LPVARIANT,int,LPVARIANT);
-
-HRESULT WINAPI VarCmp(LPVARIANT,LPVARIANT,LCID,ULONG);
-
-HRESULT WINAPI VarBstrCmp(BSTR,BSTR,LCID,ULONG);
-HRESULT WINAPI VarBstrCat(BSTR,BSTR,BSTR*);
+HRESULT WINAPI VarR4CmpR8(_In_ float, _In_ double);
+
+HRESULT WINAPI VarR8Pow(_In_ double, _In_ double, _Out_ double*);
+HRESULT WINAPI VarR8Round(_In_ double, _In_ int, _Out_ double*);
+
+HRESULT WINAPI VarDecAbs(_In_ const DECIMAL*, _Out_ DECIMAL*);
+HRESULT WINAPI VarDecAdd(_In_ const DECIMAL*, _In_ const DECIMAL*, _Out_ DECIMAL*);
+HRESULT WINAPI VarDecCmp(_In_ const DECIMAL*, _In_ const DECIMAL*);
+HRESULT WINAPI VarDecCmpR8(_In_ const DECIMAL*, _In_ DOUBLE);
+HRESULT WINAPI VarDecDiv(_In_ const DECIMAL*, _In_ const DECIMAL*, _Out_ DECIMAL*);
+HRESULT WINAPI VarDecFix(_In_ const DECIMAL*, _Out_ DECIMAL*);
+HRESULT WINAPI VarDecInt(_In_ const DECIMAL*, _Out_ DECIMAL*);
+HRESULT WINAPI VarDecMul(_In_ const DECIMAL*, _In_ const DECIMAL*, _Out_ DECIMAL*);
+HRESULT WINAPI VarDecNeg(_In_ const DECIMAL*, _Out_ DECIMAL*);
+HRESULT WINAPI VarDecRound(_In_ const DECIMAL*, int, _Out_ DECIMAL*);
+HRESULT WINAPI VarDecSub(_In_ const DECIMAL*, _In_ const DECIMAL*, _Out_ DECIMAL*);
+
+HRESULT WINAPI VarCyAbs(_In_ const CY, _Out_ CY*);
+HRESULT WINAPI VarCyAdd(_In_ const CY, _In_ const CY, _Out_ CY*);
+HRESULT WINAPI VarCyCmp(_In_ const CY, _In_ const CY);
+HRESULT WINAPI VarCyCmpR8(_In_ const CY, _In_ DOUBLE);
+HRESULT WINAPI VarCyFix(_In_ const CY, _Out_ CY*);
+HRESULT WINAPI VarCyInt(_In_ const CY, _Out_ CY*);
+HRESULT WINAPI VarCyMul(_In_ const CY, _In_ CY, _Out_ CY*);
+HRESULT WINAPI VarCyMulI4(_In_ const CY, _In_ LONG, _Out_ CY*);
+HRESULT WINAPI VarCyMulI8(_In_ const CY, _In_ LONG64, _Out_ CY*);
+HRESULT WINAPI VarCyNeg(_In_ const CY, _Out_ CY*);
+HRESULT WINAPI VarCyRound(_In_ const CY, _In_ INT, _Out_ CY*);
+HRESULT WINAPI VarCySub(_In_ const CY, _In_ const CY, _Out_ CY*);
+
+HRESULT WINAPI VarAdd(_In_ LPVARIANT, _In_ LPVARIANT, _Out_ LPVARIANT);
+HRESULT WINAPI VarAnd(_In_ LPVARIANT, _In_ LPVARIANT, _Out_ LPVARIANT);
+HRESULT WINAPI VarCat(_In_ LPVARIANT, _In_ LPVARIANT, _Out_ LPVARIANT);
+HRESULT WINAPI VarDiv(_In_ LPVARIANT, _In_ LPVARIANT, _Out_ LPVARIANT);
+HRESULT WINAPI VarEqv(_In_ LPVARIANT, _In_ LPVARIANT, _Out_ LPVARIANT);
+HRESULT WINAPI VarIdiv(_In_ LPVARIANT, _In_ LPVARIANT, _Out_ LPVARIANT);
+HRESULT WINAPI VarImp(_In_ LPVARIANT, _In_ LPVARIANT, _Out_ LPVARIANT);
+HRESULT WINAPI VarMod(_In_ LPVARIANT, _In_ LPVARIANT, _Out_ LPVARIANT);
+HRESULT WINAPI VarMul(_In_ LPVARIANT, _In_ LPVARIANT, _Out_ LPVARIANT);
+HRESULT WINAPI VarOr(_In_ LPVARIANT, _In_ LPVARIANT, _Out_ LPVARIANT);
+HRESULT WINAPI VarPow(_In_ LPVARIANT, _In_ LPVARIANT, _Out_ LPVARIANT);
+HRESULT WINAPI VarSub(_In_ LPVARIANT, _In_ LPVARIANT, _Out_ LPVARIANT);
+HRESULT WINAPI VarXor(_In_ LPVARIANT, _In_ LPVARIANT, _Out_ LPVARIANT);
+
+HRESULT WINAPI VarAbs(_In_ LPVARIANT, _Out_ LPVARIANT);
+HRESULT WINAPI VarFix(_In_ LPVARIANT, _Out_ LPVARIANT);
+HRESULT WINAPI VarInt(_In_ LPVARIANT, _Out_ LPVARIANT);
+HRESULT WINAPI VarNeg(_In_ LPVARIANT, _Out_ LPVARIANT);
+HRESULT WINAPI VarNot(_In_ LPVARIANT, _Out_ LPVARIANT);
+
+HRESULT WINAPI VarRound(_In_ LPVARIANT, _In_ int, _Out_ LPVARIANT);
+
+HRESULT WINAPI VarCmp(_In_ LPVARIANT, _In_ LPVARIANT, _In_ LCID, _In_ ULONG);
+
+HRESULT WINAPI VarBstrCmp(_In_ BSTR, _In_ BSTR, _In_ LCID, _In_ ULONG);
+HRESULT WINAPI VarBstrCat(_In_ BSTR, _In_ BSTR, _Out_ BSTR*);
typedef struct {
#define VTBIT_CY (1 << VT_CY)
#define VTBIT_DECIMAL (1 << VT_DECIMAL)
-HRESULT WINAPI VarParseNumFromStr(OLECHAR*,LCID,ULONG,NUMPARSE*,BYTE*);
-HRESULT WINAPI VarNumFromParseNum(NUMPARSE*,BYTE*,ULONG,VARIANT*);
-
-INT WINAPI DosDateTimeToVariantTime(USHORT,USHORT,double*);
-INT WINAPI VariantTimeToDosDateTime(double,USHORT*,USHORT*);
-
-INT WINAPI VariantTimeToSystemTime(DOUBLE,LPSYSTEMTIME);
-INT WINAPI SystemTimeToVariantTime(LPSYSTEMTIME,double*);
-
-HRESULT WINAPI VarDateFromUdate(UDATE*,ULONG,DATE*);
-HRESULT WINAPI VarDateFromUdateEx(UDATE*,LCID,ULONG,DATE*);
-HRESULT WINAPI VarUdateFromDate(DATE,ULONG,UDATE*);
+_Check_return_
+HRESULT
+WINAPI
+VarParseNumFromStr(
+ _In_ OLECHAR*,
+ _In_ LCID,
+ _In_ ULONG,
+ _Out_ NUMPARSE*,
+ _Out_ BYTE*);
+
+_Check_return_
+HRESULT
+WINAPI
+VarNumFromParseNum(
+ _In_ NUMPARSE*,
+ _In_ BYTE*,
+ _In_ ULONG,
+ _Out_ VARIANT*);
+
+INT WINAPI DosDateTimeToVariantTime(_In_ USHORT, _In_ USHORT, _Out_ double*);
+INT WINAPI VariantTimeToDosDateTime(_In_ double, _Out_ USHORT*, _Out_ USHORT*);
+
+INT WINAPI VariantTimeToSystemTime(_In_ DOUBLE, _Out_ LPSYSTEMTIME);
+INT WINAPI SystemTimeToVariantTime(_In_ LPSYSTEMTIME, _Out_ double*);
+
+_Check_return_
+HRESULT
+WINAPI
+VarDateFromUdate(
+ _In_ UDATE*,
+ _In_ ULONG,
+ _Out_ DATE*);
+
+HRESULT
+WINAPI
+VarDateFromUdateEx(
+ _In_ UDATE*,
+ _In_ LCID,
+ _In_ ULONG,
+ _Out_ DATE*);
+
+_Check_return_
+HRESULT
+WINAPI
+VarUdateFromDate(
+ _In_ DATE,
+ _In_ ULONG,
+ _Out_ UDATE*);
/* Variant formatting */
-HRESULT WINAPI VarWeekdayName(int,int,int,ULONG,BSTR*);
-HRESULT WINAPI VarMonthName(int,int,ULONG,BSTR*);
-HRESULT WINAPI GetAltMonthNames(LCID,LPOLESTR**);
-
-HRESULT WINAPI VarFormat(LPVARIANT,LPOLESTR,int,int,ULONG,BSTR*);
-HRESULT WINAPI VarFormatCurrency(LPVARIANT,int,int,int,int,ULONG,BSTR*);
-HRESULT WINAPI VarFormatDateTime(LPVARIANT,int,ULONG,BSTR*);
-HRESULT WINAPI VarFormatNumber(LPVARIANT,int,int,int,int,ULONG,BSTR*);
-HRESULT WINAPI VarFormatPercent(LPVARIANT,int,int,int,int,ULONG,BSTR*);
-
-HRESULT WINAPI VarFormatFromTokens(LPVARIANT,LPOLESTR,LPBYTE,ULONG,BSTR*,LCID);
-HRESULT WINAPI VarTokenizeFormatString(LPOLESTR,LPBYTE,int,int,int,LCID,int*);
+HRESULT WINAPI VarWeekdayName(int, int, int, ULONG, _Out_ BSTR*);
+HRESULT WINAPI VarMonthName(int, int, ULONG, _Out_ BSTR*);
+
+_Check_return_
+HRESULT
+WINAPI
+GetAltMonthNames(
+ LCID,
+ _Outptr_result_buffer_maybenull_(13) LPOLESTR**);
+
+HRESULT
+WINAPI
+VarFormat(
+ _In_ LPVARIANT,
+ _In_opt_ LPOLESTR,
+ int,
+ int,
+ ULONG,
+ _Out_ BSTR*);
+
+HRESULT
+WINAPI
+VarFormatCurrency(
+ _In_ LPVARIANT,
+ int,
+ int,
+ int,
+ int,
+ ULONG,
+ _Out_ BSTR*);
+
+HRESULT WINAPI VarFormatDateTime(_In_ LPVARIANT, int, ULONG, _Out_ BSTR*);
+
+HRESULT
+WINAPI
+VarFormatNumber(
+ _In_ LPVARIANT,
+ int,
+ int,
+ int,
+ int,
+ ULONG,
+ _Out_ BSTR*);
+
+HRESULT
+WINAPI
+VarFormatPercent(
+ _In_ LPVARIANT,
+ int,
+ int,
+ int,
+ int,
+ ULONG,
+ _Out_ BSTR*);
+
+HRESULT
+WINAPI
+VarFormatFromTokens(
+ _In_ LPVARIANT,
+ _In_opt_ LPOLESTR,
+ LPBYTE,
+ ULONG,
+ _Out_ BSTR*,
+ LCID);
+
+HRESULT
+WINAPI
+VarTokenizeFormatString(
+ _In_opt_ LPOLESTR,
+ _Inout_ LPBYTE,
+ int,
+ int,
+ int,
+ LCID,
+ _In_opt_ int*);
/*
REGKIND_NONE
} REGKIND;
-HRESULT WINAPI DispGetParam(DISPPARAMS*,UINT,VARTYPE,VARIANT*,UINT*);
-HRESULT WINAPI DispGetIDsOfNames(ITypeInfo*,OLECHAR**,UINT,DISPID*);
-HRESULT WINAPI DispInvoke(void*,ITypeInfo*,DISPID,WORD,DISPPARAMS*,VARIANT*,
- EXCEPINFO*,UINT*);
-HRESULT WINAPI CreateDispTypeInfo(INTERFACEDATA*,LCID,ITypeInfo**);
-HRESULT WINAPI CreateStdDispatch(IUnknown*,void*,ITypeInfo*,IUnknown**);
-HRESULT WINAPI DispCallFunc(void*,ULONG_PTR,CALLCONV,VARTYPE,UINT,VARTYPE*,
- VARIANTARG**,VARIANT*);
+_Check_return_
+HRESULT
+WINAPI
+DispGetParam(
+ _In_ DISPPARAMS*,
+ UINT,
+ VARTYPE,
+ _Out_ VARIANT*,
+ _Out_opt_ UINT*);
+
+_Check_return_
+HRESULT
+WINAPI
+DispGetIDsOfNames(
+ ITypeInfo*,
+ _In_reads_(cNames) OLECHAR**,
+ UINT cNames,
+ _Out_writes_(cNames) DISPID*);
+
+_Check_return_
+HRESULT
+WINAPI
+DispInvoke(
+ void*,
+ ITypeInfo*,
+ DISPID,
+ WORD,
+ DISPPARAMS*,
+ VARIANT*,
+ EXCEPINFO*,
+ UINT*);
+
+_Check_return_
+HRESULT
+WINAPI
+CreateDispTypeInfo(
+ INTERFACEDATA*,
+ LCID,
+ ITypeInfo**);
+
+_Check_return_
+HRESULT
+WINAPI
+CreateStdDispatch(
+ IUnknown*,
+ void*,
+ ITypeInfo*,
+ IUnknown**);
+
+HRESULT
+WINAPI
+DispCallFunc(
+ void*,
+ ULONG_PTR,
+ CALLCONV,
+ VARTYPE,
+ UINT,
+ VARTYPE*,
+ VARIANTARG**,
+ VARIANT*);
/*
#define LOAD_TLB_AS_64BIT 0x40
#define MASK_TO_RESET_TLB_BITS ~(LOAD_TLB_AS_32BIT|LOAD_TLB_AS_64BIT)
-HRESULT WINAPI CreateTypeLib(SYSKIND,const OLECHAR*,ICreateTypeLib**);
-HRESULT WINAPI CreateTypeLib2(SYSKIND,LPCOLESTR,ICreateTypeLib2**);
-HRESULT WINAPI LoadRegTypeLib(REFGUID,WORD,WORD,LCID,ITypeLib**);
-HRESULT WINAPI LoadTypeLib(const OLECHAR*,ITypeLib**);
-HRESULT WINAPI LoadTypeLibEx(LPCOLESTR,REGKIND,ITypeLib**);
+_Check_return_
+HRESULT
+WINAPI
+CreateTypeLib(
+ SYSKIND,
+ const OLECHAR*,
+ ICreateTypeLib**);
+
+_Check_return_
+HRESULT
+WINAPI
+CreateTypeLib2(
+ SYSKIND,
+ LPCOLESTR,
+ ICreateTypeLib2**);
+
+_Check_return_
+HRESULT
+WINAPI
+LoadRegTypeLib(
+ REFGUID,
+ WORD,
+ WORD,
+ LCID,
+ ITypeLib**);
+
+HRESULT WINAPI LoadTypeLib(_In_z_ const OLECHAR*, ITypeLib**);
+_Check_return_ HRESULT WINAPI LoadTypeLibEx(LPCOLESTR, REGKIND, ITypeLib**);
HRESULT WINAPI QueryPathOfRegTypeLib(REFGUID,WORD,WORD,LCID,LPBSTR);
-HRESULT WINAPI RegisterTypeLib(ITypeLib*,OLECHAR*,OLECHAR*);
-HRESULT WINAPI UnRegisterTypeLib(REFGUID,WORD,WORD,LCID,SYSKIND);
+
+_Check_return_
+HRESULT
+WINAPI
+RegisterTypeLib(
+ ITypeLib*,
+ _In_ OLECHAR*,
+ _In_opt_ OLECHAR*);
+
+_Check_return_
+HRESULT
+WINAPI
+UnRegisterTypeLib(
+ REFGUID,
+ WORD,
+ WORD,
+ LCID,
+ SYSKIND);
+
+HRESULT
+WINAPI
+RegisterTypeLibForUser(
+ ITypeLib*,
+ _In_ OLECHAR*,
+ _In_opt_ OLECHAR*);
+
+HRESULT WINAPI UnRegisterTypeLibForUser(REFGUID,WORD,WORD,LCID,SYSKIND);
VOID WINAPI ClearCustData(LPCUSTDATA);
DECLARE_INTERFACE_(IOleUILinkContainerA,IUnknown)
{
/*** IUnknown methods ***/
- STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+ STDMETHOD_(HRESULT,QueryInterface)(THIS_
+ _In_ REFIID riid,
+ _Outptr_ void** ppvObject) PURE;
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
STDMETHOD_(ULONG,Release)(THIS) PURE;
/*** IOleUILinkContainerA methods ***/
- STDMETHOD_(DWORD,GetNextLink)(THIS_ DWORD dwLink) PURE;
- STDMETHOD(SetLinkUpdateOptions)(THIS_ DWORD dwLink, DWORD dwUpdateOpt) PURE;
- STDMETHOD(GetLinkUpdateOptions)(THIS_ DWORD dwLink, DWORD *lpdwUpdateOpt) PURE;
- STDMETHOD(SetLinkSource)(THIS_ DWORD dwLink, LPSTR lpszDisplayName,
- ULONG lenFileName, ULONG *pchEaten, BOOL fValidateSource) PURE;
- STDMETHOD(GetLinkSource)(THIS_ DWORD dwLink, LPSTR *lplpszDisplayName, ULONG *lplenFileName,
- LPSTR *lplpszFullLinkType, LPSTR *lplpszShortLinkType,
- BOOL *lpfSourceAvailable, BOOL *lpfIsSelected) PURE;
- STDMETHOD(OpenLinkSource)(THIS_ DWORD dwLink) PURE;
- STDMETHOD(UpdateLink)(THIS_ DWORD dwLink, BOOL fErrorMessage, BOOL fReserved) PURE;
+ STDMETHOD_(DWORD,GetNextLink)(THIS_ _In_ DWORD dwLink) PURE;
+ STDMETHOD(SetLinkUpdateOptions)(THIS_
+ _In_ DWORD dwLink,
+ _In_ DWORD dwUpdateOpt) PURE;
+ STDMETHOD(GetLinkUpdateOptions)(THIS_
+ _In_ DWORD dwLink,
+ _Out_ DWORD *lpdwUpdateOpt) PURE;
+ STDMETHOD(SetLinkSource)(THIS_
+ _In_ DWORD dwLink,
+ _In_ LPSTR lpszDisplayName,
+ _In_ ULONG lenFileName,
+ _Out_ ULONG *pchEaten,
+ _In_ BOOL fValidateSource) PURE;
+ STDMETHOD(GetLinkSource)(THIS_
+ _In_ DWORD dwLink,
+ _Outptr_opt_result_maybenull_ LPSTR *lplpszDisplayName,
+ _Out_ ULONG *lplenFileName,
+ _Outptr_opt_result_maybenull_ LPSTR *lplpszFullLinkType,
+ _Outptr_opt_result_maybenull_ LPSTR *lplpszShortLinkType,
+ _Out_ BOOL *lpfSourceAvailable,
+ _Out_ BOOL *lpfIsSelected) PURE;
+ STDMETHOD(OpenLinkSource)(THIS_ _In_ DWORD dwLink) PURE;
+ STDMETHOD(UpdateLink)(THIS_
+ _In_ DWORD dwLink,
+ _In_ BOOL fErrorMessage,
+ _In_ BOOL fReserved) PURE;
STDMETHOD(CancelLink)(THIS_ DWORD dwLink) PURE;
};
#undef INTERFACE
DECLARE_INTERFACE_(IOleUILinkContainerW,IUnknown)
{
/*** IUnknown methods ***/
- STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+ STDMETHOD_(HRESULT,QueryInterface)(THIS_
+ _In_ REFIID riid,
+ _Outptr_ void** ppvObject) PURE;
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
STDMETHOD_(ULONG,Release)(THIS) PURE;
/*** IOleUILinkContainerW methods ***/
- STDMETHOD_(DWORD,GetNextLink)(THIS_ DWORD dwLink) PURE;
- STDMETHOD(SetLinkUpdateOptions)(THIS_ DWORD dwLink, DWORD dwUpdateOpt) PURE;
- STDMETHOD(GetLinkUpdateOptions)(THIS_ DWORD dwLink, DWORD *lpdwUpdateOpt) PURE;
- STDMETHOD(SetLinkSource)(THIS_ DWORD dwLink, LPWSTR lpszDisplayName,
- ULONG lenFileName, ULONG *pchEaten, BOOL fValidateSource) PURE;
- STDMETHOD(GetLinkSource)(THIS_ DWORD dwLink, LPWSTR *lplpszDisplayName, ULONG *lplenFileName,
- LPWSTR *lplpszFullLinkType, LPWSTR *lplpszShortLinkType,
- BOOL *lpfSourceAvailable, BOOL *lpfIsSelected) PURE;
- STDMETHOD(OpenLinkSource)(THIS_ DWORD dwLink) PURE;
- STDMETHOD(UpdateLink)(THIS_ DWORD dwLink, BOOL fErrorMessage, BOOL fReserved) PURE;
+ STDMETHOD_(DWORD,GetNextLink)(THIS_ _In_ DWORD dwLink) PURE;
+ STDMETHOD(SetLinkUpdateOptions)(THIS_
+ _In_ DWORD dwLink,
+ _In_ DWORD dwUpdateOpt) PURE;
+ STDMETHOD(GetLinkUpdateOptions)(THIS_
+ _In_ DWORD dwLink,
+ _Out_ DWORD *lpdwUpdateOpt) PURE;
+ STDMETHOD(SetLinkSource)(THIS_
+ _In_ DWORD dwLink,
+ _In_ LPWSTR lpszDisplayName,
+ _In_ ULONG lenFileName,
+ _Out_ ULONG *pchEaten,
+ _In_ BOOL fValidateSource) PURE;
+ STDMETHOD(GetLinkSource)(THIS_
+ _In_ DWORD dwLink,
+ _Outptr_opt_result_maybenull_ LPWSTR *lplpszDisplayName,
+ _Out_ ULONG *lplenFileName,
+ _Outptr_opt_result_maybenull_ LPWSTR *lplpszFullLinkType,
+ _Outptr_opt_result_maybenull_ LPWSTR *lplpszShortLinkType,
+ _Out_ BOOL *lpfSourceAvailable,
+ _Out_ BOOL *lpfIsSelected) PURE;
+ STDMETHOD(OpenLinkSource)(THIS_ _In_ DWORD dwLink) PURE;
+ STDMETHOD(UpdateLink)(THIS_
+ _In_ DWORD dwLink,
+ _In_ BOOL fErrorMessage,
+ _In_ BOOL fReserved) PURE;
STDMETHOD(CancelLink)(THIS_ DWORD dwLink) PURE;
};
#undef INTERFACE
DECLARE_INTERFACE_(IOleUILinkInfoA,IOleUILinkContainerA)
{
/*** IUnknown methods ***/
- STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+ STDMETHOD_(HRESULT, QueryInterface)(THIS_
+ _In_ REFIID riid,
+ _Outptr_ void** ppvObject) PURE;
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
STDMETHOD_(ULONG,Release)(THIS) PURE;
/*** IOleUILinkContainerA methods ***/
- STDMETHOD_(DWORD,GetNextLink)(THIS_ DWORD dwLink) PURE;
- STDMETHOD(SetLinkUpdateOptions)(THIS_ DWORD dwLink, DWORD dwUpdateOpt) PURE;
- STDMETHOD(GetLinkUpdateOptions)(THIS_ DWORD dwLink, DWORD *lpdwUpdateOpt) PURE;
- STDMETHOD(SetLinkSource)(THIS_ DWORD dwLink, LPSTR lpszDisplayName,
- ULONG lenFileName, ULONG *pchEaten, BOOL fValidateSource) PURE;
- STDMETHOD(GetLinkSource)(THIS_ DWORD dwLink, LPSTR *lplpszDisplayName, ULONG *lplenFileName,
- LPSTR *lplpszFullLinkType, LPSTR *lplpszShortLinkType,
- BOOL *lpfSourceAvailable, BOOL *lpfIsSelected) PURE;
- STDMETHOD(OpenLinkSource)(THIS_ DWORD dwLink) PURE;
- STDMETHOD(UpdateLink)(THIS_ DWORD dwLink, BOOL fErrorMessage, BOOL fReserved) PURE;
+ STDMETHOD_(DWORD, GetNextLink)(THIS_ _In_ DWORD dwLink) PURE;
+ STDMETHOD(SetLinkUpdateOptions)(THIS_
+ _In_ DWORD dwLink,
+ _In_ DWORD dwUpdateOpt) PURE;
+ STDMETHOD(GetLinkUpdateOptions)(THIS_
+ _In_ DWORD dwLink,
+ _Out_ DWORD *lpdwUpdateOpt) PURE;
+ STDMETHOD(SetLinkSource)(THIS_
+ _In_ DWORD dwLink,
+ _In_ LPSTR lpszDisplayName,
+ _In_ ULONG lenFileName,
+ _Out_ ULONG *pchEaten,
+ _In_ BOOL fValidateSource) PURE;
+ STDMETHOD(GetLinkSource)(THIS_
+ _In_ DWORD dwLink,
+ _Outptr_opt_result_maybenull_ LPSTR *lplpszDisplayName,
+ _Out_ ULONG *lplenFileName,
+ _Outptr_opt_result_maybenull_ LPSTR *lplpszFullLinkType,
+ _Outptr_opt_result_maybenull_ LPSTR *lplpszShortLinkType,
+ _Out_ BOOL *lpfSourceAvailable,
+ _Out_ BOOL *lpfIsSelected) PURE;
+ STDMETHOD(OpenLinkSource)(THIS_ _In_ DWORD dwLink) PURE;
+ STDMETHOD(UpdateLink)(THIS_
+ _In_ DWORD dwLink,
+ _In_ BOOL fErrorMessage,
+ _In_ BOOL fReserved) PURE;
STDMETHOD(CancelLink)(THIS_ DWORD dwLink) PURE;
/*** IOleUILinkInfoA methods ***/
- STDMETHOD(GetLastUpdate)(THIS_ DWORD dwLink, FILETIME *lpLastUpdate) PURE;
+ STDMETHOD(GetLastUpdate)(THIS_
+ _In_ DWORD dwLink,
+ _Out_ FILETIME *lpLastUpdate) PURE;
};
#undef INTERFACE
DECLARE_INTERFACE_(IOleUILinkInfoW,IOleUILinkContainerW)
{
/*** IUnknown methods ***/
- STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+ STDMETHOD_(HRESULT,QueryInterface)(THIS_
+ _In_ REFIID riid,
+ _Outptr_ void** ppvObject) PURE;
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
STDMETHOD_(ULONG,Release)(THIS) PURE;
/*** IOleUILinkContainerW methods ***/
- STDMETHOD_(DWORD,GetNextLink)(THIS_ DWORD dwLink) PURE;
- STDMETHOD(SetLinkUpdateOptions)(THIS_ DWORD dwLink, DWORD dwUpdateOpt) PURE;
- STDMETHOD(GetLinkUpdateOptions)(THIS_ DWORD dwLink, DWORD *lpdwUpdateOpt) PURE;
- STDMETHOD(SetLinkSource)(THIS_ DWORD dwLink, LPWSTR lpszDisplayName,
- ULONG lenFileName, ULONG *pchEaten, BOOL fValidateSource) PURE;
- STDMETHOD(GetLinkSource)(THIS_ DWORD dwLink, LPWSTR *lplpszDisplayName, ULONG *lplenFileName,
- LPWSTR *lplpszFullLinkType, LPWSTR *lplpszShortLinkType,
- BOOL *lpfSourceAvailable, BOOL *lpfIsSelected) PURE;
- STDMETHOD(OpenLinkSource)(THIS_ DWORD dwLink) PURE;
- STDMETHOD(UpdateLink)(THIS_ DWORD dwLink, BOOL fErrorMessage, BOOL fReserved) PURE;
+ STDMETHOD_(DWORD, GetNextLink)(THIS_ _In_ DWORD dwLink) PURE;
+ STDMETHOD(SetLinkUpdateOptions)(THIS_
+ _In_ DWORD dwLink,
+ _In_ DWORD dwUpdateOpt) PURE;
+ STDMETHOD(GetLinkUpdateOptions)(THIS_
+ _In_ DWORD dwLink,
+ _Out_ DWORD *lpdwUpdateOpt) PURE;
+ STDMETHOD(SetLinkSource)(THIS_
+ _In_ DWORD dwLink,
+ _In_ LPWSTR lpszDisplayName,
+ _In_ ULONG lenFileName,
+ _Out_ ULONG *pchEaten,
+ _In_ BOOL fValidateSource) PURE;
+ STDMETHOD(GetLinkSource)(THIS_
+ _In_ DWORD dwLink,
+ _Outptr_opt_result_maybenull_ LPWSTR *lplpszDisplayName,
+ _Out_ ULONG *lplenFileName,
+ _Outptr_opt_result_maybenull_ LPWSTR *lplpszFullLinkType,
+ _Outptr_opt_result_maybenull_ LPWSTR *lplpszShortLinkType,
+ _Out_ BOOL *lpfSourceAvailable,
+ _Out_ BOOL *lpfIsSelected) PURE;
+ STDMETHOD(OpenLinkSource)(THIS_ _In_ DWORD dwLink) PURE;
+ STDMETHOD(UpdateLink)(THIS_
+ _In_ DWORD dwLink,
+ _In_ BOOL fErrorMessage,
+ _In_ BOOL fReserved) PURE;
STDMETHOD(CancelLink)(THIS_ DWORD dwLink) PURE;
/*** IOleUILinkInfoW methods ***/
- STDMETHOD(GetLastUpdate)(THIS_ DWORD dwLink, FILETIME *lpLastUpdate) PURE;
+ STDMETHOD(GetLastUpdate)(THIS_
+ _In_ DWORD dwLink,
+ _Out_ FILETIME *lpLastUpdate) PURE;
};
#undef INTERFACE
DECLARE_INTERFACE_(IOleUIObjInfoA,IUnknown)
{
/*** IUnknown methods ***/
- STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+ STDMETHOD_(HRESULT,QueryInterface)(THIS_
+ _In_ REFIID riid,
+ _Outptr_ void** ppvObject) PURE;
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
STDMETHOD_(ULONG,Release)(THIS) PURE;
/*** IOleUIObjInfoA methods ***/
- STDMETHOD(GetObjectInfo)(THIS_ DWORD dwObject, DWORD *lpdwObjSize, LPSTR *lplpszLabel,
- LPSTR *lplpszType, LPSTR *lplpszShortType, LPSTR *lplpszLocation) PURE;
- STDMETHOD(GetConvertInfo)(THIS_ DWORD dwObject, CLSID *lpClassID, WORD *lpwFormat,
- CLSID *lpConvertDefaultClassID, LPCLSID *lplpClsidExclude, UINT *lpcClsidExclude) PURE;
- STDMETHOD(ConvertObject)(THIS_ DWORD dwObject, REFCLSID clsidNew) PURE;
- STDMETHOD(GetViewInfo)(THIS_ DWORD dwObject, HGLOBAL *phMetaPict, DWORD *pdvAspect, INT *pnCurrentScale) PURE;
- STDMETHOD(SetViewInfo)(THIS_ DWORD dwObject, HGLOBAL hMetaPict, DWORD dvAspect,
- INT nCurrentScale, BOOL bRelativeToOrig) PURE;
+ STDMETHOD(GetObjectInfo)(THIS_
+ _In_ DWORD dwObject,
+ _Out_ DWORD *lpdwObjSize,
+ _Outptr_opt_result_maybenull_ LPSTR *lplpszLabel,
+ _Outptr_opt_result_maybenull_ LPSTR *lplpszType,
+ _Outptr_opt_result_maybenull_ LPSTR *lplpszShortType,
+ _Outptr_opt_result_maybenull_ LPSTR *lplpszLocation) PURE;
+ STDMETHOD(GetConvertInfo)(THIS_
+ _In_ DWORD dwObject,
+ _Out_ CLSID *lpClassID,
+ _Out_ WORD *lpwFormat,
+ _Out_ CLSID *lpConvertDefaultClassID,
+ _Outptr_result_maybenull_ LPCLSID *lplpClsidExclude,
+ _Out_opt_ UINT *lpcClsidExclude) PURE;
+ STDMETHOD(ConvertObject)(THIS_
+ _In_ DWORD dwObject,
+ _In_ REFCLSID clsidNew) PURE;
+ STDMETHOD(GetViewInfo)(THIS_
+ _In_ DWORD dwObject,
+ _In_opt_ HGLOBAL *phMetaPict,
+ _In_opt_ DWORD *pdvAspect,
+ _In_opt_ INT *pnCurrentScale) PURE;
+ STDMETHOD(SetViewInfo)(THIS_
+ _In_ DWORD dwObject,
+ _In_ HGLOBAL hMetaPict,
+ _In_ DWORD dvAspect,
+ _In_ INT nCurrentScale,
+ _In_ BOOL bRelativeToOrig) PURE;
};
#undef INTERFACE
DECLARE_INTERFACE_(IOleUIObjInfoW,IUnknown)
{
/*** IUnknown methods ***/
- STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+ STDMETHOD_(HRESULT,QueryInterface)(THIS_
+ _In_ REFIID riid,
+ _Outptr_ void** ppvObject) PURE;
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
STDMETHOD_(ULONG,Release)(THIS) PURE;
/*** IOleUIObjInfoW methods ***/
- STDMETHOD(GetObjectInfo)(THIS_ DWORD dwObject, DWORD *lpdwObjSize, LPWSTR *lplpszLabel,
- LPWSTR *lplpszType, LPWSTR *lplpszShortType, LPWSTR *lplpszLocation) PURE;
- STDMETHOD(GetConvertInfo)(THIS_ DWORD dwObject, CLSID *lpClassID, WORD *lpwFormat,
- CLSID *lpConvertDefaultClassID, LPCLSID *lplpClsidExclude, UINT *lpcClsidExclude) PURE;
- STDMETHOD(ConvertObject)(THIS_ DWORD dwObject, REFCLSID clsidNew) PURE;
- STDMETHOD(GetViewInfo)(THIS_ DWORD dwObject, HGLOBAL *phMetaPict, DWORD *pdvAspect, INT *pnCurrentScale) PURE;
- STDMETHOD(SetViewInfo)(THIS_ DWORD dwObject, HGLOBAL hMetaPict, DWORD dvAspect,
- INT nCurrentScale, BOOL bRelativeToOrig) PURE;
+ STDMETHOD(GetObjectInfo)(THIS_
+ _In_ DWORD dwObject,
+ _Out_ DWORD *lpdwObjSize,
+ _Outptr_opt_result_maybenull_ LPWSTR *lplpszLabel,
+ _Outptr_opt_result_maybenull_ LPWSTR *lplpszType,
+ _Outptr_opt_result_maybenull_ LPWSTR *lplpszShortType,
+ _Outptr_opt_result_maybenull_ LPWSTR *lplpszLocation) PURE;
+ STDMETHOD(GetConvertInfo)(THIS_
+ _In_ DWORD dwObject,
+ _Out_ CLSID *lpClassID,
+ _Out_ WORD *lpwFormat,
+ _Out_ CLSID *lpConvertDefaultClassID,
+ _Outptr_result_maybenull_ LPCLSID *lplpClsidExclude,
+ _Out_opt_ UINT *lpcClsidExclude) PURE;
+ STDMETHOD(ConvertObject)(THIS_
+ _In_ DWORD dwObject,
+ _In_ REFCLSID clsidNew) PURE;
+ STDMETHOD(GetViewInfo)(THIS_
+ _In_ DWORD dwObject,
+ _In_opt_ HGLOBAL *phMetaPict,
+ _In_opt_ DWORD *pdvAspect,
+ _In_opt_ INT *pnCurrentScale) PURE;
+ STDMETHOD(SetViewInfo)(THIS_
+ _In_ DWORD dwObject,
+ _In_ HGLOBAL hMetaPict,
+ _In_ DWORD dvAspect,
+ _In_ INT nCurrentScale,
+ _In_ BOOL bRelativeToOrig) PURE;
};
#undef INTERFACE
#define IOleUIObjInfo_SetViewInfo(p,a,b,c,d,e) (p)->lpVtbl->SetViewInfo(p,a,b,c,d,e)
#endif
-UINT WINAPI OleUIInsertObjectW(LPOLEUIINSERTOBJECTW);
-UINT WINAPI OleUIInsertObjectA(LPOLEUIINSERTOBJECTA);
+UINT WINAPI OleUIInsertObjectW(_In_ LPOLEUIINSERTOBJECTW);
+UINT WINAPI OleUIInsertObjectA(_In_ LPOLEUIINSERTOBJECTA);
#define OleUIInsertObject WINELIB_NAME_AW(OleUIInsertObject)
-UINT WINAPI OleUIConvertA(LPOLEUICONVERTA);
-UINT WINAPI OleUIConvertW(LPOLEUICONVERTW);
+UINT WINAPI OleUIConvertA(_In_ LPOLEUICONVERTA);
+UINT WINAPI OleUIConvertW(_In_ LPOLEUICONVERTW);
#define OleUIConvert WINELIB_NAME_AW(OleUIConvert)
-UINT WINAPI OleUIChangeIconA(LPOLEUICHANGEICONA);
-UINT WINAPI OleUIChangeIconW(LPOLEUICHANGEICONW);
+UINT WINAPI OleUIChangeIconA(_In_ LPOLEUICHANGEICONA);
+UINT WINAPI OleUIChangeIconW(_In_ LPOLEUICHANGEICONW);
#define OleUIChangeIcon WINELIB_NAME_AW(OleUIChangeIcon)
-UINT WINAPI OleUIBusyA(LPOLEUIBUSYA);
-UINT WINAPI OleUIBusyW(LPOLEUIBUSYW);
+UINT WINAPI OleUIBusyA(_In_ LPOLEUIBUSYA);
+UINT WINAPI OleUIBusyW(_In_ LPOLEUIBUSYW);
#define OleUIBusy WINELIB_NAME_AW(OleUIBusy)
-UINT WINAPI OleUIObjectPropertiesA(LPOLEUIOBJECTPROPSA);
-UINT WINAPI OleUIObjectPropertiesW(LPOLEUIOBJECTPROPSW);
+UINT WINAPI OleUIObjectPropertiesA(_In_ LPOLEUIOBJECTPROPSA);
+UINT WINAPI OleUIObjectPropertiesW(_In_ LPOLEUIOBJECTPROPSW);
#define OleUIObjectProperties WINELIB_NAME_AW(OleUIObjectProperties)
-UINT WINAPI OleUIChangeSourceW(LPOLEUICHANGESOURCEW);
-UINT WINAPI OleUIChangeSourceA(LPOLEUICHANGESOURCEA);
+UINT WINAPI OleUIChangeSourceW(_In_ LPOLEUICHANGESOURCEW);
+UINT WINAPI OleUIChangeSourceA(_In_ LPOLEUICHANGESOURCEA);
#define OleUIChangeSource WINELIB_NAME_AW(OleUIChangeSource)
-UINT WINAPI OleUIEditLinksA(LPOLEUIEDITLINKSA lpOleUIEditLinks);
-UINT WINAPI OleUIEditLinksW(LPOLEUIEDITLINKSW lpOleUIEditLinks);
+UINT WINAPI OleUIEditLinksA(_In_ LPOLEUIEDITLINKSA lpOleUIEditLinks);
+UINT WINAPI OleUIEditLinksW(_In_ LPOLEUIEDITLINKSW lpOleUIEditLinks);
#define OleUIEditLinks WINELIB_NAME_AW(OleUIEditLinks)
-BOOL WINAPI OleUIUpdateLinksA(LPOLEUILINKCONTAINERA lpOleUILinkCntr, HWND hwndParent, LPSTR lpszTitle, INT cLinks);
-BOOL WINAPI OleUIUpdateLinksW(LPOLEUILINKCONTAINERW lpOleUILinkCntr, HWND hwndParent, LPWSTR lpszTitle, INT cLinks);
-#define OleUIUpdateLinks WINELIB_NAME_AW(OleUIUpdateLinks)
-BOOL WINAPI OleUIAddVerbMenuA(LPOLEOBJECT lpOleObj, LPCSTR lpszShortType, HMENU hMenu, UINT uPos, UINT uIDVerbMin, UINT uIDVerbMax,
- BOOL bAddConvert, UINT idConvert, HMENU *lphMenu);
-BOOL WINAPI OleUIAddVerbMenuW(LPOLEOBJECT lpOleObj, LPCWSTR lpszShortType, HMENU hMenu, UINT uPos, UINT uIDVerbMin, UINT uIDVerbMax,
- BOOL bAddConvert, UINT idConvert, HMENU *lphMenu);
-#define OleUIAddVerbMenu WINELIB_NAME_AW(OleUIAddVerbMenu)
-UINT WINAPI OleUIPasteSpecialA(LPOLEUIPASTESPECIALA lpOleUIPasteSpecial);
-UINT WINAPI OleUIPasteSpecialW(LPOLEUIPASTESPECIALW lpOleUIPasteSpecial);
+
+BOOL
+WINAPI
+OleUIUpdateLinksA(
+ _In_ LPOLEUILINKCONTAINERA lpOleUILinkCntr,
+ _In_ HWND hwndParent,
+ _In_ LPSTR lpszTitle,
+ _In_ INT cLinks);
+
+BOOL
+WINAPI
+OleUIUpdateLinksW(
+ _In_ LPOLEUILINKCONTAINERW lpOleUILinkCntr,
+ _In_ HWND hwndParent,
+ _In_ LPWSTR lpszTitle,
+ _In_ INT cLinks);
+
+#define OleUIUpdateLinks WINELIB_NAME_AW(OleUIUpdateLinks)
+
+BOOL
+WINAPI
+OleUIAddVerbMenuA(
+ _In_opt_ LPOLEOBJECT lpOleObj,
+ _In_opt_ LPCSTR lpszShortType,
+ _In_ HMENU hMenu,
+ _In_ UINT uPos,
+ _In_ UINT uIDVerbMin,
+ _In_ UINT uIDVerbMax,
+ _In_ BOOL bAddConvert,
+ _In_ UINT idConvert,
+ _Out_ HMENU *lphMenu);
+
+BOOL
+WINAPI
+OleUIAddVerbMenuW(
+ _In_opt_ LPOLEOBJECT lpOleObj,
+ _In_opt_ LPCWSTR lpszShortType,
+ _In_ HMENU hMenu,
+ _In_ UINT uPos,
+ _In_ UINT uIDVerbMin,
+ _In_ UINT uIDVerbMax,
+ _In_ BOOL bAddConvert,
+ _In_ UINT idConvert,
+ _Out_ HMENU *lphMenu);
+
+#define OleUIAddVerbMenu WINELIB_NAME_AW(OleUIAddVerbMenu)
+
+UINT WINAPI OleUIPasteSpecialA(_In_ LPOLEUIPASTESPECIALA lpOleUIPasteSpecial);
+UINT WINAPI OleUIPasteSpecialW(_In_ LPOLEUIPASTESPECIALW lpOleUIPasteSpecial);
#define OleUIPasteSpecial WINELIB_NAME_AW(OleUIPasteSpecial)
INT __cdecl OleUIPromptUserA(INT,HWND, ...);
INT __cdecl OleUIPromptUserW(INT,HWND, ...);
#define _Inout_updates_bytes_to_opt_(size,count) _SAL2_NAME(_Inout_updates_bytes_to_opt_) _Group_(_Out_writes_bytes_to_opt_(size,count) [SA_Pre(Valid=SA_Yes)] [SA_Pre(ValidBytes="\n" _SA_SPECSTRIZE(count))])
#define _Inout_updates_opt_(size) _SAL2_NAME(_Inout_updates_opt_) _Group_(_Pre_opt_cap_(size) [SA_Pre(Valid=SA_Yes)] [SA_Post(Valid=SA_Yes)])
#define _Inout_updates_opt_z_(size) _SAL2_NAME(_Inout_updates_opt_z_) _Group_(_Pre_opt_cap_(size) [SA_Pre(Valid=SA_Yes)] [SA_Post(Valid=SA_Yes)] [SA_Pre(NullTerminated=SA_Yes)] [SA_Post(NullTerminated=SA_Yes)])
-//#define _Inout_updates_to_(size,count)
+#define _Inout_updates_to_(size,count) _SAL2_NAME(_Inout_updates_to_) _Group_(_Out_writes_to_(size,count) [SA_Pre(Valid=SA_Yes)] [SA_Pre(ValidElements="\n" _SA_SPECSTRIZE(count))])
//#define _Inout_updates_to_opt_(size,count)
#define _Inout_updates_z_(size) _SAL2_NAME(_Inout_updates_z_) _Group_(_Pre_cap_(size) [SA_Pre(Valid=SA_Yes)] [SA_Post(Valid=SA_Yes)] [SA_Pre(NullTerminated=SA_Yes)] [SA_Post(NullTerminated=SA_Yes)])
#define _Inout_z_ _SAL2_NAME(_Inout_z_) _Group_(_Prepost_z_)
#define _Post_maybenull_ _SAL2_NAME(_Post_maybenull_) _Group_([SA_Post(Null=SA_Maybe)])
#define _Post_maybez_ _SAL11_NAME(_Post_maybez_) _Group_([SA_Post(NullTerminated=SA_Maybe)])
#define _Post_notnull_ _SAL2_NAME(_Post_notnull_) _Group_([SA_Post(Null=SA_No)])
-//#define _Post_null_
+#define _Post_null_ _SAL2_NAME(_Post_null_) _Group_([SA_Post(Null=SA_Yes)])
#define _Post_ptr_invalid_ _SAL2_NAME(_Post_ptr_invalid_) _Group_([SA_Post(Valid=SA_No)])
#define _Post_readable_byte_size_(size) _SAL2_NAME(_Post_readable_byte_size_) _Group_([SA_Post(ValidBytes="\n" _SA_SPECSTRIZE(size))] [SA_Post(Valid=SA_Yes)])
#define _Post_readable_size_(size) _SAL2_NAME(_Post_readable_size_) _Group_([SA_Post(ValidElements="\n" _SA_SPECSTRIZE(size))] [SA_Post(Valid=SA_Yes)])
//#define _Ret_maybenull_z_
#define _Ret_notnull_ _SAL2_NAME(_Ret_notnull_) _Group_([SA_Post(Null=SA_No)])
//#define _Ret_null_
-//#define _Ret_opt_
+#define _Ret_opt_ _Ret_opt_valid_
#define _Ret_opt_bytecap_(size) _SAL11_NAME(_Ret_opt_bytecap_) _Group_([SA_Post(Null=SA_Maybe,Notref=1)] [SA_Post(WritableBytes="\n" _SA_SPECSTRIZE(size))])
//#define _Ret_opt_bytecap_c_(size)
//#define _Ret_opt_bytecap_x_(size)
//#define _Ret_opt_count_(size)
//#define _Ret_opt_count_c_(size)
//#define _Ret_opt_count_x_(size)
-//#define _Ret_opt_valid_
+#define _Ret_opt_valid_ _SAL11_NAME(_Ret_opt_valid_) _Group_([SA_Post(Null=SA_Maybe,Notref=1)] [SA_Post(Valid=SA_Yes)])
#define _Ret_opt_z_ _SAL11_NAME(_Ret_opt_z_) _Group_([SA_Post(Null=SA_Maybe,NullTerminated=SA_Yes)] [SA_Post(Valid=SA_Yes)] )
//#define _Ret_opt_z_bytecap_(size)
//#define _Ret_opt_z_bytecount_(size)
//#define _Ret_writes_bytes_to_(size,count)
//#define _Ret_writes_bytes_to_maybenull_(size,count)
//#define _Ret_writes_maybenull_(size)
-//#define _Ret_writes_maybenull_z_(size)
+#define _Ret_writes_maybenull_z_(size) _SAL2_NAME(_Ret_writes_maybenull_z_) _Group_([SA_Post(Null=SA_Maybe,ValidElements="\n" _SA_SPECSTRIZE(size),NullTerminated=SA_Yes)] [SA_Post(Valid=SA_Yes)])
//#define _Ret_writes_to_(size,count)
//#define _Ret_writes_to_maybenull_(size,count)
//#define _Ret_writes_z_(size)
#define SHGNLI_NOUNIQUE 0x04
#define SHGNLI_NOLNK 0x08
-BOOL WINAPI SHGetNewLinkInfoA(LPCSTR,LPCSTR,LPSTR,BOOL*,UINT);
-BOOL WINAPI SHGetNewLinkInfoW(LPCWSTR,LPCWSTR,LPWSTR,BOOL*,UINT);
-
-LPWSTR * WINAPI CommandLineToArgvW(LPCWSTR,int*);
-void WINAPI DragAcceptFiles(HWND,BOOL);
-void WINAPI DragFinish(HDROP);
-UINT WINAPI DragQueryFileA(HDROP,UINT,LPSTR,UINT);
-UINT WINAPI DragQueryFileW(HDROP,UINT,LPWSTR,UINT);
-BOOL WINAPI DragQueryPoint(HDROP,LPPOINT);
-HICON WINAPI ExtractAssociatedIconA(HINSTANCE,LPSTR,PWORD);
-HICON WINAPI ExtractAssociatedIconW(HINSTANCE,LPWSTR,PWORD);
-HICON WINAPI ExtractIconA(HINSTANCE,LPCSTR,UINT);
-HICON WINAPI ExtractIconW(HINSTANCE,LPCWSTR,UINT);
-UINT WINAPI ExtractIconExA(LPCSTR,int,HICON*,HICON*,UINT);
-UINT WINAPI ExtractIconExW(LPCWSTR,int,HICON*,HICON*,UINT);
-HINSTANCE WINAPI FindExecutableA(LPCSTR,LPCSTR,LPSTR);
-HINSTANCE WINAPI FindExecutableW(LPCWSTR,LPCWSTR,LPWSTR);
-UINT_PTR WINAPI SHAppBarMessage(DWORD,PAPPBARDATA);
-BOOL WINAPI Shell_NotifyIconA(DWORD,PNOTIFYICONDATAA);
-BOOL WINAPI Shell_NotifyIconW(DWORD,PNOTIFYICONDATAW);
-int WINAPI ShellAboutA(HWND,LPCSTR,LPCSTR,HICON);
-int WINAPI ShellAboutW(HWND,LPCWSTR,LPCWSTR,HICON);
-int WINAPI ShellMessageBoxA(HINSTANCE,HWND,LPCSTR,LPCSTR,UINT,...);
-int WINAPI ShellMessageBoxW(HINSTANCE,HWND,LPCWSTR,LPCWSTR,UINT,...);
-HINSTANCE WINAPI ShellExecuteA(HWND,LPCSTR,LPCSTR,LPCSTR,LPCSTR,INT);
-HINSTANCE WINAPI ShellExecuteW(HWND,LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR,INT);
-BOOL WINAPI ShellExecuteExA(LPSHELLEXECUTEINFOA);
-BOOL WINAPI ShellExecuteExW(LPSHELLEXECUTEINFOW);
-int WINAPI SHFileOperationA(LPSHFILEOPSTRUCTA);
-int WINAPI SHFileOperationW(LPSHFILEOPSTRUCTW);
-void WINAPI SHFreeNameMappings(HANDLE);
-DWORD_PTR WINAPI SHGetFileInfoA(LPCSTR,DWORD,SHFILEINFOA*,UINT,UINT);
-DWORD_PTR WINAPI SHGetFileInfoW(LPCWSTR,DWORD,SHFILEINFOW*,UINT,UINT);
-BOOL WINAPI SHGetNewLinkInfoA(LPCSTR,LPCSTR,LPSTR,BOOL*,UINT);
-BOOL WINAPI SHGetNewLinkInfoW(LPCWSTR,LPCWSTR,LPWSTR,BOOL*,UINT);
-HRESULT WINAPI SHQueryRecycleBinA(LPCSTR, LPSHQUERYRBINFO);
-HRESULT WINAPI SHQueryRecycleBinW(LPCWSTR, LPSHQUERYRBINFO);
-HRESULT WINAPI SHEmptyRecycleBinA(HWND,LPCSTR,DWORD);
-HRESULT WINAPI SHEmptyRecycleBinW(HWND,LPCWSTR,DWORD);
-BOOL WINAPI SHCreateProcessAsUserW(PSHCREATEPROCESSINFOW);
+LPWSTR * WINAPI CommandLineToArgvW(_In_ LPCWSTR, _Out_ int*);
+void WINAPI DragAcceptFiles(_In_ HWND, _In_ BOOL);
+void WINAPI DragFinish(_In_ HDROP);
+
+_Success_(return != 0)
+UINT
+WINAPI
+DragQueryFileA(
+ _In_ HDROP hDrop,
+ _In_ UINT iFile,
+ _Out_writes_opt_(cch) LPSTR lpszFile,
+ _In_ UINT cch);
+
+_Success_(return != 0)
+UINT
+WINAPI
+DragQueryFileW(
+ _In_ HDROP hDrop,
+ _In_ UINT iFile,
+ _Out_writes_opt_(cch) LPWSTR lpszFile,
+ _In_ UINT cch);
+
+BOOL WINAPI DragQueryPoint(_In_ HDROP, _Out_ LPPOINT);
+
+HICON
+WINAPI
+ExtractAssociatedIconA(
+ _Reserved_ HINSTANCE hInst,
+ _Inout_updates_(128) LPSTR pszIconPath,
+ _Inout_ WORD *piIcon);
+
+HICON
+WINAPI
+ExtractAssociatedIconW(
+ _Reserved_ HINSTANCE hInst,
+ _Inout_updates_(128) LPWSTR pszIconPath,
+ _Inout_ WORD *piIcon);
+
+HICON
+WINAPI
+ExtractIconA(
+ _Reserved_ HINSTANCE hInst,
+ _In_ LPCSTR pszExeFileName,
+ UINT nIconIndex);
+
+HICON
+WINAPI
+ExtractIconW(
+ _Reserved_ HINSTANCE hInst,
+ _In_ LPCWSTR pszExeFileName,
+ UINT nIconIndex);
+
+UINT
+WINAPI
+ExtractIconExA(
+ _In_ LPCSTR lpszFile,
+ _In_ int nIconIndex,
+ _Out_writes_opt_(nIcons) HICON *phiconLarge,
+ _Out_writes_opt_(nIcons) HICON *phiconSmall,
+ _In_ UINT nIcons);
+
+UINT
+WINAPI
+ExtractIconExW(
+ _In_ LPCWSTR lpszFile,
+ _In_ int nIconIndex,
+ _Out_writes_opt_(nIcons) HICON *phiconLarge,
+ _Out_writes_opt_(nIcons) HICON *phiconSmall,
+ _In_ UINT nIcons);
+
+_Success_(return > 32)
+HINSTANCE
+WINAPI
+FindExecutableA(
+ _In_ LPCSTR lpFile,
+ _In_opt_ LPCSTR lpDirectory,
+ _Out_writes_(MAX_PATH) LPSTR lpResult);
+
+_Success_(return > 32)
+HINSTANCE
+WINAPI
+FindExecutableW(
+ _In_ LPCWSTR lpFile,
+ _In_opt_ LPCWSTR lpDirectory,
+ _Out_writes_(MAX_PATH) LPWSTR lpResult);
+
+UINT_PTR WINAPI SHAppBarMessage(_In_ DWORD, _Inout_ PAPPBARDATA);
+BOOL WINAPI Shell_NotifyIconA(_In_ DWORD, _In_ PNOTIFYICONDATAA);
+BOOL WINAPI Shell_NotifyIconW(_In_ DWORD, _In_ PNOTIFYICONDATAW);
+
+int
+WINAPI
+ShellAboutA(
+ _In_opt_ HWND hWnd,
+ _In_ LPCSTR szApp,
+ _In_opt_ LPCSTR szOtherStuff,
+ _In_opt_ HICON hIcon);
+
+int
+WINAPI
+ShellAboutW(
+ _In_opt_ HWND hWnd,
+ _In_ LPCWSTR szApp,
+ _In_opt_ LPCWSTR szOtherStuff,
+ _In_opt_ HICON hIcon);
+
+int
+WINAPI
+ShellMessageBoxA(
+ _In_opt_ HINSTANCE hAppInst,
+ _In_opt_ HWND hWnd,
+ _In_ LPCSTR lpcText,
+ _In_opt_ LPCSTR lpcTitle,
+ _In_ UINT fuStyle,
+ ...);
+
+int
+WINAPI
+ShellMessageBoxW(
+ _In_opt_ HINSTANCE hAppInst,
+ _In_opt_ HWND hWnd,
+ _In_ LPCWSTR lpcText,
+ _In_opt_ LPCWSTR lpcTitle,
+ _In_ UINT fuStyle,
+ ...);
+
+HINSTANCE
+WINAPI
+ShellExecuteA(
+ _In_opt_ HWND hwnd,
+ _In_opt_ LPCSTR lpOperation,
+ _In_ LPCSTR lpFile,
+ _In_opt_ LPCSTR lpParameters,
+ _In_opt_ LPCSTR lpDirectory,
+ _In_ INT nShowCmd);
+
+HINSTANCE
+WINAPI
+ShellExecuteW(
+ _In_opt_ HWND hwnd,
+ _In_opt_ LPCWSTR lpOperation,
+ _In_ LPCWSTR lpFile,
+ _In_opt_ LPCWSTR lpParameters,
+ _In_opt_ LPCWSTR lpDirectory,
+ _In_ INT nShowCmd);
+
+BOOL WINAPI ShellExecuteExA(_Inout_ LPSHELLEXECUTEINFOA);
+BOOL WINAPI ShellExecuteExW(_Inout_ LPSHELLEXECUTEINFOW);
+int WINAPI SHFileOperationA(_Inout_ LPSHFILEOPSTRUCTA);
+int WINAPI SHFileOperationW(_Inout_ LPSHFILEOPSTRUCTW);
+void WINAPI SHFreeNameMappings(_In_opt_ HANDLE);
+
+DWORD_PTR
+WINAPI
+SHGetFileInfoA(
+ _In_ LPCSTR pszPath,
+ DWORD dwFileAttributes,
+ _Inout_updates_bytes_opt_(cbFileInfo) SHFILEINFOA *psfi,
+ UINT cbFileInfo,
+ UINT uFlags);
+
+DWORD_PTR
+WINAPI
+SHGetFileInfoW(
+ _In_ LPCWSTR pszPath,
+ DWORD dwFileAttributes,
+ _Inout_updates_bytes_opt_(cbFileInfo) SHFILEINFOW *psfi,
+ UINT cbFileInfo,
+ UINT uFlags);
+
+_Success_(return != 0)
+BOOL
+WINAPI
+SHGetNewLinkInfoA(
+ _In_ LPCSTR pszLinkTo,
+ _In_ LPCSTR pszDir,
+ _Out_writes_(MAX_PATH) LPSTR pszName,
+ _Out_ BOOL *pfMustCopy,
+ _In_ UINT uFlags);
+
+_Success_(return != 0)
+BOOL
+WINAPI
+SHGetNewLinkInfoW(
+ _In_ LPCWSTR pszLinkTo,
+ _In_ LPCWSTR pszDir,
+ _Out_writes_(MAX_PATH) LPWSTR pszName,
+ _Out_ BOOL *pfMustCopy,
+ _In_ UINT uFlags);
+
+HRESULT
+WINAPI
+SHQueryRecycleBinA(
+ _In_opt_ LPCSTR pszRootPath,
+ _Inout_ LPSHQUERYRBINFO pSHQueryRBInfo);
+
+HRESULT
+WINAPI
+SHQueryRecycleBinW(
+ _In_opt_ LPCWSTR pszRootPath,
+ _Inout_ LPSHQUERYRBINFO pSHQueryRBInfo);
+
+HRESULT
+WINAPI
+SHEmptyRecycleBinA(
+ _In_opt_ HWND hwnd,
+ _In_opt_ LPCSTR pszRootPath,
+ DWORD dwFlags);
+
+HRESULT
+WINAPI
+SHEmptyRecycleBinW(
+ _In_opt_ HWND hwnd,
+ _In_opt_ LPCWSTR pszRootPath,
+ DWORD dwFlags);
+
+BOOL WINAPI SHCreateProcessAsUserW(_Inout_ PSHCREATEPROCESSINFOW);
DWORD
WINAPI
#define ShellMessageBox ShellMessageBoxW
#define SHFileOperation SHFileOperationW
#define SHGetFileInfo SHGetFileInfoW
-#define SHGetNewLinkInfo SHGetNewLinkInfoW
#define SHQueryRecycleBin SHQueryRecycleBinW
#define SHEmptyRecycleBin SHEmptyRecycleBinW
#define SHGetNewLinkInfo SHGetNewLinkInfoW
#define ShellMessageBox ShellMessageBoxA
#define SHFileOperation SHFileOperationA
#define SHGetFileInfo SHGetFileInfoA
-#define SHGetNewLinkInfo SHGetNewLinkInfoA
#define SHQueryRecycleBin SHQueryRecycleBinA
#define SHEmptyRecycleBin SHEmptyRecycleBinA
#define SHGetNewLinkInfo SHGetNewLinkInfoA
DECLARE_HANDLE(HPSXA);
#endif
-UINT WINAPI SHAddFromPropSheetExtArray(HPSXA,LPFNADDPROPSHEETPAGE,LPARAM);
+UINT
+WINAPI
+SHAddFromPropSheetExtArray(
+ _In_ HPSXA,
+ _In_ LPFNADDPROPSHEETPAGE,
+ LPARAM);
+
LPVOID WINAPI SHAlloc(SIZE_T) __WINE_ALLOC_SIZE(1);
-HRESULT WINAPI SHCoCreateInstance(LPCWSTR,const CLSID*,IUnknown*,REFIID,LPVOID*);
-HPSXA WINAPI SHCreatePropSheetExtArray(HKEY,LPCWSTR,UINT);
+
+HRESULT
+WINAPI
+SHCoCreateInstance(
+ _In_opt_ LPCWSTR,
+ _In_opt_ const CLSID*,
+ _In_opt_ IUnknown*,
+ _In_ REFIID,
+ _Outptr_ LPVOID*);
+
+HPSXA WINAPI SHCreatePropSheetExtArray(_In_ HKEY, _In_opt_ LPCWSTR, UINT);
HPSXA WINAPI SHCreatePropSheetExtArrayEx(HKEY,LPCWSTR,UINT,IDataObject*);
-HRESULT WINAPI SHCreateShellItem(LPCITEMIDLIST,IShellFolder*,LPCITEMIDLIST,IShellItem**);
-DWORD WINAPI SHCLSIDFromStringA(LPCSTR,CLSID*);
-DWORD WINAPI SHCLSIDFromStringW(LPCWSTR,CLSID*);
+
+HRESULT
+WINAPI
+SHCreateShellItem(
+ _In_opt_ LPCITEMIDLIST,
+ _In_opt_ IShellFolder*,
+ _In_ LPCITEMIDLIST,
+ _Outptr_ IShellItem**);
+
+DWORD WINAPI SHCLSIDFromStringA(_In_ LPCSTR, _Out_ CLSID*);
+DWORD WINAPI SHCLSIDFromStringW(_In_ LPCWSTR, _Out_ CLSID*);
#define SHCLSIDFromString WINELIB_NAME_AW(SHCLSIDFromString)
-HRESULT WINAPI SHCreateStdEnumFmtEtc(UINT,const FORMATETC *,IEnumFORMATETC**);
-void WINAPI SHDestroyPropSheetExtArray(HPSXA);
-BOOL WINAPI SHFindFiles(LPCITEMIDLIST,LPCITEMIDLIST);
-DWORD WINAPI SHFormatDrive(HWND,UINT,UINT,UINT);
-void WINAPI SHFree(LPVOID);
-BOOL WINAPI GetFileNameFromBrowse(HWND,LPWSTR,UINT,LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR);
-HRESULT WINAPI SHGetInstanceExplorer(IUnknown**);
-VOID WINAPI SHSetInstanceExplorer (IUnknown*);
-HRESULT WINAPI SHGetFolderPathAndSubDirA(HWND,int,HANDLE,DWORD,LPCSTR,LPSTR);
-HRESULT WINAPI SHGetFolderPathAndSubDirW(HWND,int,HANDLE,DWORD,LPCWSTR,LPWSTR);
-#define SHGetFolderPathAndSubDir WINELIB_NAME_AW(SHGetFolderPathAndSubDir);
-BOOL WINAPI SHGetPathFromIDListA(LPCITEMIDLIST,LPSTR);
-BOOL WINAPI SHGetPathFromIDListW(LPCITEMIDLIST,LPWSTR);
-#define SHGetPathFromIDList WINELIB_NAME_AW(SHGetPathFromIDList)
-INT WINAPI SHHandleUpdateImage(LPCITEMIDLIST);
-HRESULT WINAPI SHILCreateFromPath(LPCWSTR,LPITEMIDLIST*,DWORD*);
+
+HRESULT
+WINAPI
+SHCreateStdEnumFmtEtc(
+ _In_ UINT cfmt,
+ _In_reads_(cfmt) const FORMATETC *,
+ _Outptr_ IEnumFORMATETC**);
+
+void WINAPI SHDestroyPropSheetExtArray(_In_ HPSXA);
+BOOL WINAPI SHFindFiles(_In_opt_ LPCITEMIDLIST, _In_opt_ LPCITEMIDLIST);
+DWORD WINAPI SHFormatDrive(_In_ HWND, UINT, UINT, UINT);
+void WINAPI SHFree(_In_opt_ LPVOID);
+
+BOOL
+WINAPI
+GetFileNameFromBrowse(
+ _In_opt_ HWND,
+ _Inout_updates_(cchFilePath) LPWSTR,
+ UINT cchFilePath,
+ _In_opt_ LPCWSTR,
+ _In_ LPCWSTR,
+ _In_opt_ LPCWSTR,
+ _In_opt_ LPCWSTR);
+
+_Check_return_ HRESULT WINAPI SHGetInstanceExplorer(_Outptr_ IUnknown**);
+
+VOID WINAPI SHSetInstanceExplorer(_In_opt_ IUnknown*);
+
+HRESULT
+WINAPI
+SHGetFolderPathAndSubDirA(
+ _Reserved_ HWND,
+ _In_ int,
+ _In_opt_ HANDLE,
+ _In_ DWORD,
+ _In_opt_ LPCSTR, _Out_writes_(MAX_PATH) LPSTR);
+
+HRESULT
+WINAPI
+SHGetFolderPathAndSubDirW(
+ _Reserved_ HWND,
+ _In_ int,
+ _In_opt_ HANDLE,
+ _In_ DWORD,
+ _In_opt_ LPCWSTR,
+ _Out_writes_(MAX_PATH) LPWSTR);
+
+#define SHGetFolderPathAndSubDir WINELIB_NAME_AW(SHGetFolderPathAndSubDir);
+
+_Success_(return != 0)
+BOOL
+WINAPI
+SHGetPathFromIDListA(
+ _In_ LPCITEMIDLIST,
+ _Out_writes_(MAX_PATH) LPSTR);
+
+_Success_(return != 0)
+BOOL
+WINAPI
+SHGetPathFromIDListW(
+ _In_ LPCITEMIDLIST,
+ _Out_writes_(MAX_PATH) LPWSTR);
+
+#define SHGetPathFromIDList WINELIB_NAME_AW(SHGetPathFromIDList)
+
+INT WINAPI SHHandleUpdateImage(_In_ LPCITEMIDLIST);
+
+HRESULT
+WINAPI
+SHILCreateFromPath(
+ _In_ LPCWSTR,
+ _Outptr_ LPITEMIDLIST*,
+ _Inout_opt_ DWORD*);
+
HRESULT WINAPI SHLoadOLE(LPARAM);
-HRESULT WINAPI SHParseDisplayName(LPCWSTR,IBindCtx*,LPITEMIDLIST*,SFGAOF,SFGAOF*);
-HRESULT WINAPI SHPathPrepareForWriteA(HWND,IUnknown*,LPCSTR,DWORD);
-HRESULT WINAPI SHPathPrepareForWriteW(HWND,IUnknown*,LPCWSTR,DWORD);
-#define SHPathPrepareForWrite WINELIB_NAME_AW(SHPathPrepareForWrite);
-UINT WINAPI SHReplaceFromPropSheetExtArray(HPSXA,UINT,LPFNADDPROPSHEETPAGE,LPARAM);
+
+HRESULT
+WINAPI
+SHParseDisplayName(
+ _In_ LPCWSTR,
+ _In_opt_ IBindCtx*,
+ _Outptr_ LPITEMIDLIST*,
+ _In_ SFGAOF,
+ _Out_opt_ SFGAOF*);
+
+HRESULT
+WINAPI
+SHPathPrepareForWriteA(
+ _In_opt_ HWND,
+ _In_opt_ IUnknown*,
+ _In_ LPCSTR, DWORD);
+
+HRESULT
+WINAPI
+SHPathPrepareForWriteW(
+ _In_opt_ HWND,
+ _In_opt_ IUnknown*,
+ _In_ LPCWSTR, DWORD);
+
+#define SHPathPrepareForWrite WINELIB_NAME_AW(SHPathPrepareForWrite);
+
+UINT
+WINAPI
+SHReplaceFromPropSheetExtArray(
+ _In_ HPSXA,
+ UINT,
+ _In_ LPFNADDPROPSHEETPAGE,
+ LPARAM);
+
LPITEMIDLIST WINAPI SHSimpleIDListFromPath(LPCWSTR);
-int WINAPI SHMapPIDLToSystemImageListIndex(IShellFolder*,LPCITEMIDLIST,int*);
+
+int
+WINAPI
+SHMapPIDLToSystemImageListIndex(
+ _In_ IShellFolder*,
+ _In_ LPCITEMIDLIST,
+ _Out_opt_ int*);
+
HRESULT WINAPI SHStartNetConnectionDialog(HWND,LPCSTR,DWORD);
-VOID WINAPI SHUpdateImageA(LPCSTR,INT,UINT,INT);
-VOID WINAPI SHUpdateImageW(LPCWSTR,INT,UINT,INT);
-INT WINAPI PickIconDlg(HWND,LPWSTR,UINT,int *);
+VOID WINAPI SHUpdateImageA(_In_ LPCSTR, INT, UINT, INT);
+VOID WINAPI SHUpdateImageW(_In_ LPCWSTR, INT, UINT, INT);
+
+INT
+WINAPI
+PickIconDlg(
+ _In_opt_ HWND,
+ _Inout_updates_(cchIconPath) LPWSTR,
+ UINT cchIconPath,
+ _Inout_opt_ int *);
+
#define SHUpdateImage WINELIB_NAME_AW(SHUpdateImage)
-int WINAPI RestartDialog(HWND,LPCWSTR,DWORD);
-int WINAPI RestartDialogEx(HWND,LPCWSTR,DWORD,DWORD);
+int WINAPI RestartDialog(_In_opt_ HWND, _In_opt_ LPCWSTR, DWORD);
+int WINAPI RestartDialogEx(_In_opt_ HWND, _In_opt_ LPCWSTR, DWORD, DWORD);
BOOL WINAPI IsUserAnAdmin(void);
#define SHFMT_ERROR 0xFFFFFFFFL /* Error on last format, drive may be formattable */
#define SHOP_FILEPATH 0x02
#define SHOP_VOLUMEGUID 0x04
-BOOL WINAPI SHObjectProperties(HWND,DWORD,LPCWSTR,LPCWSTR);
+BOOL
+WINAPI
+SHObjectProperties(
+ _In_opt_ HWND,
+ _In_ DWORD,
+ _In_ LPCWSTR,
+ _In_opt_ LPCWSTR);
#define PCS_FATAL 0x80000000
#define PCS_REPLACEDCHAR 0x00000001
#define PCS_TRUNCATED 0x00000004
#define PCS_PATHTOOLONG 0x00000008
-int WINAPI PathCleanupSpec(LPCWSTR,LPWSTR);
+int WINAPI PathCleanupSpec(_In_opt_ LPCWSTR, _Inout_ LPWSTR);
/*****************************************************************************
* IContextMenu interface
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
STDMETHOD_(ULONG,Release) (THIS) PURE;
/*** IShellDetails methods ***/
- STDMETHOD(GetDetailsOf)(THIS_ PCUITEMID_CHILD pidl, UINT iColumn, SHELLDETAILS *pDetails) PURE;
+ STDMETHOD(GetDetailsOf)(THIS_ _In_opt_ PCUITEMID_CHILD pidl, UINT iColumn, _Out_ SHELLDETAILS *pDetails) PURE;
STDMETHOD(ColumnClick)(THIS_ UINT iColumn) PURE;
};
#undef INTERFACE
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
STDMETHOD_(ULONG,Release)(THIS) PURE;
/*** IQueryInfo methods ***/
- STDMETHOD(GetInfoTip)(THIS_ DWORD dwFlags, WCHAR** lppTips) PURE;
- STDMETHOD(GetInfoFlags)(THIS_ DWORD* lpFlags) PURE;
+ STDMETHOD(GetInfoTip)(THIS_ DWORD dwFlags, _Outptr_ WCHAR** lppTips) PURE;
+ STDMETHOD(GetInfoFlags)(THIS_ _Out_ DWORD* lpFlags) PURE;
};
#undef INTERFACE
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
STDMETHOD_(ULONG,Release) (THIS) PURE;
/*** IObjMgr methods ***/
- STDMETHOD(Append)(THIS_ LPUNKNOWN punk) PURE;
- STDMETHOD(Remove)(THIS_ LPUNKNOWN punk) PURE;
+ STDMETHOD(Append)(THIS_ _In_ LPUNKNOWN punk) PURE;
+ STDMETHOD(Remove)(THIS_ _In_ LPUNKNOWN punk) PURE;
};
#undef INTERFACE
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
STDMETHOD_(ULONG,Release) (THIS) PURE;
/*** IACList methods ***/
- STDMETHOD(Expand)(THIS_ LPCOLESTR str) PURE;
+ STDMETHOD(Expand)(THIS_ _In_ LPCOLESTR str) PURE;
};
#undef INTERFACE
STDMETHOD(Expand)(THIS_ LPCOLESTR str) PURE;
/*** IACList2 methods ***/
STDMETHOD(SetOptions)(THIS_ DWORD dwFlag) PURE;
- STDMETHOD(GetOptions)(THIS_ DWORD* pdwFlag) PURE;
+ STDMETHOD(GetOptions)(THIS_ _Out_ DWORD* pdwFlag) PURE;
};
#undef INTERFACE
/*** IShellFolderView methods ***/
STDMETHOD(Rearrange) (THIS_ LPARAM lParamSort) PURE;
- STDMETHOD(GetArrangeParam) (THIS_ LPARAM *plParamSort) PURE;
+ STDMETHOD(GetArrangeParam) (THIS_ _Out_ LPARAM *plParamSort) PURE;
STDMETHOD(ArrangeGrid) (THIS) PURE;
STDMETHOD(AutoArrange) (THIS) PURE;
STDMETHOD(GetAutoArrange) (THIS) PURE;
- STDMETHOD(AddObject) (THIS_ PITEMID_CHILD pidl, UINT *puItem) PURE;
- STDMETHOD(GetObject) (THIS_ PITEMID_CHILD *ppidl, UINT uItem) PURE;
- STDMETHOD(RemoveObject) (THIS_ PITEMID_CHILD pidl, UINT *puItem) PURE;
- STDMETHOD(GetObjectCount) (THIS_ UINT *puCount) PURE;
+ STDMETHOD(AddObject) (THIS_ _In_ PITEMID_CHILD pidl, _Out_ UINT *puItem) PURE;
+ STDMETHOD(GetObject) (THIS_ _Outptr_ PITEMID_CHILD *ppidl, UINT uItem) PURE;
+ STDMETHOD(RemoveObject) (THIS_ _In_opt_ PITEMID_CHILD pidl, _Out_ UINT *puItem) PURE;
+ STDMETHOD(GetObjectCount) (THIS_ _Out_ UINT *puCount) PURE;
STDMETHOD(SetObjectCount) (THIS_ UINT uCount, UINT dwFlags) PURE;
- STDMETHOD(UpdateObject) (THIS_ PITEMID_CHILD pidlOld, PITEMID_CHILD pidlNew, UINT *puItem) PURE;
- STDMETHOD(RefreshObject) (THIS_ PITEMID_CHILD pidl, UINT *puItem) PURE;
+ STDMETHOD(UpdateObject) (THIS_ _In_ PITEMID_CHILD pidlOld, _In_ PITEMID_CHILD pidlNew, _Out_ UINT *puItem) PURE;
+ STDMETHOD(RefreshObject) (THIS_ _In_ PITEMID_CHILD pidl, _Out_ UINT *puItem) PURE;
STDMETHOD(SetRedraw) (THIS_ BOOL bRedraw) PURE;
- STDMETHOD(GetSelectedCount) (THIS_ UINT *puSelected) PURE;
- STDMETHOD(GetSelectedObjects) (THIS_ PCITEMID_CHILD **pppidl, UINT *puItems) PURE;
- STDMETHOD(IsDropOnSource) (THIS_ IDropTarget *pDropTarget) PURE;
- STDMETHOD(GetDragPoint) (THIS_ POINT *ppt) PURE;
- STDMETHOD(GetDropPoint) (THIS_ POINT *ppt) PURE;
- STDMETHOD(MoveIcons) (THIS_ IDataObject *pDataObject) PURE;
- STDMETHOD(SetItemPos) (THIS_ PCUITEMID_CHILD pidl, POINT *ppt) PURE;
- STDMETHOD(IsBkDropTarget) (THIS_ IDropTarget *pDropTarget) PURE;
+ STDMETHOD(GetSelectedCount) (THIS_ _Out_ UINT *puSelected) PURE;
+ STDMETHOD(GetSelectedObjects) (THIS_ _Outptr_result_buffer_(*puItems) PCITEMID_CHILD **pppidl, _Out_ UINT *puItems) PURE;
+ STDMETHOD(IsDropOnSource) (THIS_ _In_opt_ IDropTarget *pDropTarget) PURE;
+ STDMETHOD(GetDragPoint) (THIS_ _Out_ POINT *ppt) PURE;
+ STDMETHOD(GetDropPoint) (THIS_ _Out_ POINT *ppt) PURE;
+ STDMETHOD(MoveIcons) (THIS_ _In_ IDataObject *pDataObject) PURE;
+ STDMETHOD(SetItemPos) (THIS_ _In_ PCUITEMID_CHILD pidl, _In_ POINT *ppt) PURE;
+ STDMETHOD(IsBkDropTarget) (THIS_ _In_opt_ IDropTarget *pDropTarget) PURE;
STDMETHOD(SetClipboard) (THIS_ BOOL bMove) PURE;
- STDMETHOD(SetPoints) (THIS_ IDataObject *pDataObject) PURE;
- STDMETHOD(GetItemSpacing) (THIS_ ITEMSPACING *pSpacing) PURE;
- STDMETHOD(SetCallback) (THIS_ IShellFolderViewCB* pNewCB, IShellFolderViewCB** ppOldCB) PURE;
+ STDMETHOD(SetPoints) (THIS_ _In_ IDataObject *pDataObject) PURE;
+ STDMETHOD(GetItemSpacing) (THIS_ _Out_ ITEMSPACING *pSpacing) PURE;
+ STDMETHOD(SetCallback) (THIS_ _In_opt_ IShellFolderViewCB* pNewCB, _Outptr_result_maybenull_ IShellFolderViewCB** ppOldCB) PURE;
STDMETHOD(Select) ( THIS_ UINT dwFlags ) PURE;
- STDMETHOD(QuerySupport) (THIS_ UINT * pdwSupport ) PURE;
- STDMETHOD(SetAutomationObject)(THIS_ IDispatch* pdisp) PURE;
+ STDMETHOD(QuerySupport) (THIS_ _Inout_ UINT * pdwSupport) PURE;
+ STDMETHOD(SetAutomationObject)(THIS_ _In_opt_ IDispatch* pdisp) PURE;
};
#undef INTERFACE
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
STDMETHOD_(ULONG,Release) (THIS) PURE;
/*** IProgressDialog methods ***/
- STDMETHOD(StartProgressDialog)(THIS_ HWND hwndParent, IUnknown *punkEnableModeless, DWORD dwFlags, LPCVOID reserved) PURE;
+ STDMETHOD(StartProgressDialog)(THIS_ _In_opt_ HWND hwndParent, _In_opt_ IUnknown *punkEnableModeless, DWORD dwFlags, _Reserved_ LPCVOID reserved) PURE;
STDMETHOD(StopProgressDialog)(THIS) PURE;
- STDMETHOD(SetTitle)(THIS_ LPCWSTR pwzTitle) PURE;
- STDMETHOD(SetAnimation)(THIS_ HINSTANCE hInstance, UINT uiResourceId) PURE;
+ STDMETHOD(SetTitle)(THIS_ _In_ LPCWSTR pwzTitle) PURE;
+ STDMETHOD(SetAnimation)(THIS_ _In_opt_ HINSTANCE hInstance, UINT uiResourceId) PURE;
STDMETHOD_(BOOL,HasUserCancelled)(THIS) PURE;
STDMETHOD(SetProgress)(THIS_ DWORD dwCompleted, DWORD dwTotal) PURE;
STDMETHOD(SetProgress64)(THIS_ ULONGLONG ullCompleted, ULONGLONG ullTotal) PURE;
- STDMETHOD(SetLine)(THIS_ DWORD dwLineNum, LPCWSTR pwzString, BOOL bPath, LPCVOID reserved) PURE;
- STDMETHOD(SetCancelMsg)(THIS_ LPCWSTR pwzCancelMsg, LPCVOID reserved) PURE;
- STDMETHOD(Timer)(THIS_ DWORD dwTimerAction, LPCVOID reserved) PURE;
+ STDMETHOD(SetLine)(THIS_ DWORD dwLineNum, _In_ LPCWSTR pwzString, BOOL bPath, _Reserved_ LPCVOID reserved) PURE;
+ STDMETHOD(SetCancelMsg)(THIS_ _In_ LPCWSTR pwzCancelMsg, _Reserved_ LPCVOID reserved) PURE;
+ STDMETHOD(Timer)(THIS_ DWORD dwTimerAction, _Reserved_ LPCVOID reserved) PURE;
};
#undef INTERFACE
STDMETHOD_(HRESULT,GetWindow)(THIS_ HWND*) PURE;
STDMETHOD_(HRESULT,ContextSensitiveHelp)(THIS_ BOOL) PURE;
/*** IDeskBarClient methods ***/
- STDMETHOD_(HRESULT,SetDeskBarSite)(THIS_ IUnknown*) PURE;
+ STDMETHOD_(HRESULT,SetDeskBarSite)(THIS_ _In_opt_ IUnknown*) PURE;
STDMETHOD_(HRESULT,SetModeDBC)(THIS_ DWORD) PURE;
STDMETHOD_(HRESULT,UIActivateDBC)(THIS_ DWORD) PURE;
- STDMETHOD_(HRESULT,GetSize)(THIS_ DWORD,LPRECT) PURE;
+ STDMETHOD_(HRESULT,GetSize)(THIS_ DWORD, _Out_ LPRECT) PURE;
};
#undef INTERFACE
#define SHARD_PATHW 0x00000003L
#define SHARD_PATH WINELIB_NAME_AW(SHARD_PATH)
-void WINAPI SHAddToRecentDocs(UINT,LPCVOID);
+void WINAPI SHAddToRecentDocs(UINT, _In_opt_ LPCVOID);
/****************************************************************************
* SHBrowseForFolder API
#define BFFM_SETOKTEXT (WM_USER+105)
#define BFFM_SETEXPANDED (WM_USER+106)
-LPITEMIDLIST WINAPI SHBrowseForFolderA(LPBROWSEINFOA lpbi);
-LPITEMIDLIST WINAPI SHBrowseForFolderW(LPBROWSEINFOW lpbi);
-#define SHBrowseForFolder WINELIB_NAME_AW(SHBrowseForFolder)
+LPITEMIDLIST WINAPI SHBrowseForFolderA(_In_ LPBROWSEINFOA lpbi);
+LPITEMIDLIST WINAPI SHBrowseForFolderW(_In_ LPBROWSEINFOW lpbi);
+#define SHBrowseForFolder WINELIB_NAME_AW(SHBrowseForFolder)
+
#define BFFM_SETSTATUSTEXT WINELIB_NAME_AW(BFFM_SETSTATUSTEXT)
#define BFFM_SETSELECTION WINELIB_NAME_AW(BFFM_SETSELECTION)
#define BFFM_VALIDATEFAILED WINELIB_NAME_AW(BFFM_VALIDATEFAILED)
* SHCreateShellFolderViewEx API
*/
-typedef HRESULT (CALLBACK *LPFNVIEWCALLBACK)(
- IShellView* dwUser,
- IShellFolder* pshf,
- HWND hWnd,
- UINT uMsg,
- WPARAM wParam,
- LPARAM lParam);
+typedef HRESULT
+(CALLBACK *LPFNVIEWCALLBACK)(
+ _In_ IShellView* dwUser,
+ _In_ IShellFolder* pshf,
+ _In_ HWND hWnd,
+ UINT uMsg,
+ WPARAM wParam,
+ LPARAM lParam);
#include <pshpack8.h>
#include <poppack.h>
-HRESULT WINAPI SHCreateShellFolderViewEx(LPCSFV pshfvi, IShellView **ppshv);
+HRESULT
+WINAPI
+SHCreateShellFolderViewEx(
+ _In_ LPCSFV pshfvi,
+ _Outptr_ IShellView **ppshv);
/* SHCreateShellFolderViewEx callback messages */
#define SFVM_MERGEMENU 1
#include <poppack.h>
-HRESULT WINAPI SHCreateShellFolderView(const SFV_CREATE *pscfv, IShellView **ppsv);
+HRESULT
+WINAPI
+SHCreateShellFolderView(
+ _In_ const SFV_CREATE *pscfv,
+ _Outptr_ IShellView **ppsv);
/* Types and definitions for the SFM_* parameters */
#include <pshpack8.h>
* SHShellFolderView_Message API
*/
-LRESULT WINAPI SHShellFolderView_Message(
- HWND hwndCabinet,
- UINT uMessage,
- LPARAM lParam);
+LRESULT
+WINAPI
+SHShellFolderView_Message(
+ _In_ HWND hwndCabinet,
+ UINT uMessage,
+ LPARAM lParam);
/* SHShellFolderView_Message messages */
#define SFVM_REARRANGE 0x0001
#include <poppack.h>
-HRESULT WINAPI SHGetDataFromIDListA(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, int nFormat, LPVOID pv, int cb);
-HRESULT WINAPI SHGetDataFromIDListW(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, int nFormat, LPVOID pv, int cb);
-#define SHGetDataFromIDList WINELIB_NAME_AW(SHGetDataFromIDList)
-
-LPITEMIDLIST WINAPI SHCloneSpecialIDList(HWND hwnd, int csidl, BOOL fCreate);
-BOOL WINAPI SHGetSpecialFolderPathA (HWND hwndOwner, LPSTR szPath, int nFolder, BOOL bCreate);
-BOOL WINAPI SHGetSpecialFolderPathW (HWND hwndOwner, LPWSTR szPath, int nFolder, BOOL bCreate);
-#define SHGetSpecialFolderPath WINELIB_NAME_AW(SHGetSpecialFolderPath)
-
-HRESULT WINAPI SHGetMalloc(LPMALLOC *lpmal) ;
+HRESULT
+WINAPI
+SHGetDataFromIDListA(
+ _In_ LPSHELLFOLDER psf,
+ _In_ LPCITEMIDLIST pidl,
+ int nFormat,
+ _Out_writes_bytes_(cb) LPVOID pv,
+ int cb);
+
+HRESULT
+WINAPI
+SHGetDataFromIDListW(
+ _In_ LPSHELLFOLDER psf,
+ _In_ LPCITEMIDLIST pidl,
+ int nFormat,
+ _Out_writes_bytes_(cb) LPVOID pv,
+ int cb);
+
+#define SHGetDataFromIDList WINELIB_NAME_AW(SHGetDataFromIDList)
+
+LPITEMIDLIST
+WINAPI
+SHCloneSpecialIDList(
+ _Reserved_ HWND hwnd,
+ _In_ int csidl,
+ _In_ BOOL fCreate);
+
+_Success_(return != 0)
+BOOL
+WINAPI
+SHGetSpecialFolderPathA(
+ _Reserved_ HWND hwndOwner,
+ _Out_writes_(MAX_PATH) LPSTR szPath,
+ _In_ int nFolder,
+ _In_ BOOL bCreate);
+
+_Success_(return != 0)
+BOOL
+WINAPI
+SHGetSpecialFolderPathW(
+ _Reserved_ HWND hwndOwner,
+ _Out_writes_(MAX_PATH) LPWSTR szPath,
+ _In_ int nFolder,
+ _In_ BOOL bCreate);
+
+#define SHGetSpecialFolderPath WINELIB_NAME_AW(SHGetSpecialFolderPath)
+
+_Check_return_ HRESULT WINAPI SHGetMalloc(_Outptr_ LPMALLOC *lpmal);
/**********************************************************************
* SHGetSetSettings ()
UINT :15; /* Required for proper binary layout with gcc */
} SHELLFLAGSTATE, * LPSHELLFLAGSTATE;
-VOID WINAPI SHGetSettings(LPSHELLFLAGSTATE lpsfs, DWORD dwMask);
+VOID WINAPI SHGetSettings(_Out_ LPSHELLFLAGSTATE lpsfs, DWORD dwMask);
#define SSF_SHOWALLOBJECTS 0x0001
#define SSF_SHOWEXTENSIONS 0x0002
USHORT cbZero;
} SHChangeProductKeyAsIDList, *LPSHChangeProductKeyAsIDList;
-ULONG WINAPI SHChangeNotifyRegister(HWND hwnd, int fSources, LONG fEvents, UINT wMsg,
- int cEntries, SHChangeNotifyEntry *pshcne);
+ULONG
+WINAPI
+SHChangeNotifyRegister(
+ _In_ HWND hwnd,
+ int fSources,
+ LONG fEvents,
+ UINT wMsg,
+ int cEntries,
+ _In_ SHChangeNotifyEntry *pshcne);
+
BOOL WINAPI SHChangeNotifyDeregister(ULONG ulID);
-HANDLE WINAPI SHChangeNotification_Lock(HANDLE hChangeNotification, DWORD dwProcessId,
- LPITEMIDLIST **pppidl, LONG *plEvent);
-BOOL WINAPI SHChangeNotification_Unlock(HANDLE hLock);
-HRESULT WINAPI SHGetRealIDL(IShellFolder *psf, LPCITEMIDLIST pidlSimple, LPITEMIDLIST * ppidlReal);
+HANDLE
+WINAPI
+SHChangeNotification_Lock(
+ _In_ HANDLE hChangeNotification,
+ DWORD dwProcessId,
+ _Outptr_opt_result_buffer_(2)_Outptr_opt_result_buffer_(2) LPITEMIDLIST **pppidl,
+ _Out_opt_ LONG *plEvent);
+
+BOOL WINAPI SHChangeNotification_Unlock(_In_ HANDLE hLock);
+
+HRESULT
+WINAPI
+SHGetRealIDL(
+ _In_ IShellFolder *psf,
+ _In_ LPCITEMIDLIST pidlSimple,
+ _Outptr_ LPITEMIDLIST * ppidlReal);
/****************************************************************************
* SHCreateDirectory API
*/
-int WINAPI SHCreateDirectory(HWND, LPCWSTR);
-int WINAPI SHCreateDirectoryExA(HWND, LPCSTR, LPSECURITY_ATTRIBUTES);
-int WINAPI SHCreateDirectoryExW(HWND, LPCWSTR, LPSECURITY_ATTRIBUTES);
-#define SHCreateDirectoryEx WINELIB_NAME_AW(SHCreateDirectoryEx)
+int WINAPI SHCreateDirectory(_In_opt_ HWND, _In_ LPCWSTR);
+
+int
+WINAPI
+SHCreateDirectoryExA(
+ _In_opt_ HWND,
+ _In_ LPCSTR,
+ _In_opt_ LPSECURITY_ATTRIBUTES);
+
+int
+WINAPI
+SHCreateDirectoryExW(
+ _In_opt_ HWND,
+ _In_ LPCWSTR,
+ _In_opt_ LPSECURITY_ATTRIBUTES);
+
+#define SHCreateDirectoryEx WINELIB_NAME_AW(SHCreateDirectoryEx)
/****************************************************************************
* SHGetSpecialFolderLocation API
*/
-HRESULT WINAPI SHGetSpecialFolderLocation(HWND hwndOwner, int nFolder, LPITEMIDLIST * ppidl);
-HRESULT WINAPI SHGetFolderLocation(HWND hwndOwner, int nFolder, HANDLE hToken, DWORD dwReserved, LPITEMIDLIST *ppidl);
+_Check_return_
+HRESULT
+WINAPI
+SHGetSpecialFolderLocation(
+ _Reserved_ HWND hwndOwner,
+ _In_ int nFolder,
+ _Outptr_ LPITEMIDLIST *ppidl);
+
+HRESULT
+WINAPI
+SHGetFolderLocation(
+ _Reserved_ HWND hwndOwner,
+ _In_ int nFolder,
+ _In_opt_ HANDLE hToken,
+ _In_ DWORD dwReserved,
+ _Outptr_ LPITEMIDLIST *ppidl);
/****************************************************************************
* SHGetFolderPath API
SHGFP_TYPE_DEFAULT = 1
} SHGFP_TYPE;
-HRESULT WINAPI SHGetFolderPathA(HWND hwnd, int nFolder, HANDLE hToken, DWORD dwFlags, LPSTR pszPath);
-HRESULT WINAPI SHGetFolderPathW(HWND hwnd, int nFolder, HANDLE hToken, DWORD dwFlags, LPWSTR pszPath);
-#define SHGetFolderPath WINELIB_NAME_AW(SHGetFolderPath)
+HRESULT
+WINAPI
+SHGetFolderPathA(
+ _Reserved_ HWND hwnd,
+ _In_ int nFolder,
+ _In_opt_ HANDLE hToken,
+ _In_ DWORD dwFlags,
+ _Out_writes_(MAX_PATH) LPSTR pszPath);
+
+HRESULT
+WINAPI
+SHGetFolderPathW(
+ _Reserved_ HWND hwnd,
+ _In_ int nFolder,
+ _In_opt_ HANDLE hToken,
+ _In_ DWORD dwFlags,
+ _Out_writes_(MAX_PATH) LPWSTR pszPath);
+
+#define SHGetFolderPath WINELIB_NAME_AW(SHGetFolderPath)
#define CSIDL_DESKTOP 0x0000
#define CSIDL_INTERNET 0x0001
/****************************************************************************
* SHGetDesktopFolder API
*/
-HRESULT WINAPI SHGetDesktopFolder(IShellFolder * *);
+_Check_return_ HRESULT WINAPI SHGetDesktopFolder(_Outptr_ IShellFolder * *);
/****************************************************************************
* SHBindToParent API
*/
-HRESULT WINAPI SHBindToParent(LPCITEMIDLIST pidl, REFIID riid, LPVOID *ppv, LPCITEMIDLIST *ppidlLast);
+HRESULT
+WINAPI
+SHBindToParent(
+ _In_ LPCITEMIDLIST pidl,
+ _In_ REFIID riid,
+ _Outptr_ LPVOID *ppv,
+ _Outptr_opt_ LPCITEMIDLIST *ppidlLast);
/****************************************************************************
* SHDefExtractIcon API
*/
-HRESULT WINAPI SHDefExtractIconA(LPCSTR pszIconFile, int iIndex, UINT uFlags,
- HICON* phiconLarge, HICON* phiconSmall, UINT nIconSize);
-HRESULT WINAPI SHDefExtractIconW(LPCWSTR pszIconFile, int iIndex, UINT uFlags,
- HICON* phiconLarge, HICON* phiconSmall, UINT nIconSize);
-#define SHDefExtractIcon WINELIB_NAME_AW(SHDefExtractIcon)
+HRESULT
+WINAPI
+SHDefExtractIconA(
+ _In_ LPCSTR pszIconFile,
+ int iIndex,
+ UINT uFlags,
+ _Out_opt_ HICON* phiconLarge,
+ _Out_opt_ HICON* phiconSmall,
+ UINT nIconSize);
+
+HRESULT
+WINAPI
+SHDefExtractIconW(
+ _In_ LPCWSTR pszIconFile,
+ int iIndex,
+ UINT uFlags,
+ _Out_opt_ HICON* phiconLarge,
+ _Out_opt_ HICON* phiconSmall,
+ UINT nIconSize);
+
+#define SHDefExtractIcon WINELIB_NAME_AW(SHDefExtractIcon)
/*
* DROPFILES for CF_HDROP and CF_PRINTERS
#define CABINETSTATE_VERSION 2
-BOOL WINAPI ReadCabinetState(CABINETSTATE *, int);
-BOOL WINAPI WriteCabinetState(CABINETSTATE *);
+BOOL
+WINAPI
+ReadCabinetState(
+ _Out_writes_bytes_(cLength) CABINETSTATE *,
+ int cLength);
+
+BOOL WINAPI WriteCabinetState(_In_ CABINETSTATE *);
/****************************************************************************
* Path Manipulation Routines
#define PRF_FIRSTDIRDEF 0x04
#define PRF_DONTFINDLINK 0x08
-VOID WINAPI PathGetShortPath(LPWSTR pszPath);
-LONG WINAPI PathProcessCommand(LPCWSTR, LPWSTR, int, DWORD);
-BOOL WINAPI PathYetAnotherMakeUniqueName(LPWSTR, LPCWSTR, LPCWSTR, LPCWSTR);
+VOID WINAPI PathGetShortPath(_Inout_updates_(MAX_PATH) LPWSTR pszPath);
+
+LONG
+WINAPI
+PathProcessCommand(
+ _In_ LPCWSTR,
+ _Out_writes_(cchDest) LPWSTR,
+ int cchDest,
+ DWORD);
+
+_Success_(return != 0)
+BOOL
+WINAPI
+PathYetAnotherMakeUniqueName(
+ _Out_writes_(MAX_PATH) LPWSTR,
+ _In_ LPCWSTR,
+ _In_opt_ LPCWSTR,
+ _In_opt_ LPCWSTR);
/****************************************************************************
* Drag And Drop Routines
BOOL WINAPI DAD_SetDragImage(HIMAGELIST,LPPOINT);
BOOL WINAPI DAD_DragEnterEx(HWND,POINT);
-BOOL WINAPI DAD_DragEnterEx2(HWND,POINT,IDataObject*);
+BOOL WINAPI DAD_DragEnterEx2(_In_ HWND, POINT, _In_opt_ IDataObject*);
BOOL WINAPI DAD_DragMove(POINT);
BOOL WINAPI DAD_DragLeave(void);
BOOL WINAPI DAD_AutoScroll(HWND,AUTO_SCROLL_DATA*,const POINT*);
-HRESULT WINAPI SHDoDragDrop(HWND,IDataObject*,IDropSource*,DWORD,LPDWORD);
+
+HRESULT
+WINAPI
+SHDoDragDrop(
+ _In_opt_ HWND,
+ _In_ IDataObject*,
+ _In_opt_ IDropSource*,
+ _In_ DWORD,
+ _Out_ LPDWORD);
/****************************************************************************
* Internet shortcut properties
#define PID_IS_COMMENT 13
-LPITEMIDLIST WINAPI ILAppendID(LPITEMIDLIST,LPCSHITEMID,BOOL);
-LPITEMIDLIST WINAPI ILClone(LPCITEMIDLIST);
-LPITEMIDLIST WINAPI ILCloneFirst(LPCITEMIDLIST);
-LPITEMIDLIST WINAPI ILCreateFromPathA(LPCSTR);
-LPITEMIDLIST WINAPI ILCreateFromPathW(LPCWSTR);
+LPITEMIDLIST WINAPI ILAppendID(_In_opt_ LPITEMIDLIST, _In_ LPCSHITEMID, BOOL);
+LPITEMIDLIST WINAPI ILClone(_In_ LPCITEMIDLIST);
+LPITEMIDLIST WINAPI ILCloneFirst(_In_ LPCITEMIDLIST);
+LPITEMIDLIST WINAPI ILCreateFromPathA(_In_ LPCSTR);
+LPITEMIDLIST WINAPI ILCreateFromPathW(_In_ LPCWSTR);
#define ILCreateFromPath WINELIB_NAME_AW(ILCreateFromPath)
-LPITEMIDLIST WINAPI ILCombine(LPCITEMIDLIST,LPCITEMIDLIST);
-LPITEMIDLIST WINAPI ILFindChild(LPCITEMIDLIST,LPCITEMIDLIST);
-LPITEMIDLIST WINAPI ILFindLastID(LPCITEMIDLIST);
-void WINAPI ILFree(LPITEMIDLIST);
-LPITEMIDLIST WINAPI ILGetNext(LPCITEMIDLIST);
-UINT WINAPI ILGetSize(LPCITEMIDLIST);
-BOOL WINAPI ILIsEqual(LPCITEMIDLIST,LPCITEMIDLIST);
-BOOL WINAPI ILIsParent(LPCITEMIDLIST,LPCITEMIDLIST,BOOL);
-HRESULT WINAPI ILLoadFromStream(LPSTREAM,LPITEMIDLIST*);
-BOOL WINAPI ILRemoveLastID(LPITEMIDLIST);
-HRESULT WINAPI ILSaveToStream(LPSTREAM,LPCITEMIDLIST);
+LPITEMIDLIST WINAPI ILCombine(_In_opt_ LPCITEMIDLIST, _In_opt_ LPCITEMIDLIST);
+LPITEMIDLIST WINAPI ILFindChild(_In_ LPCITEMIDLIST, _In_ LPCITEMIDLIST);
+LPITEMIDLIST WINAPI ILFindLastID(_In_ LPCITEMIDLIST);
+void WINAPI ILFree(_In_opt_ LPITEMIDLIST);
+LPITEMIDLIST WINAPI ILGetNext(_In_opt_ LPCITEMIDLIST);
+UINT WINAPI ILGetSize(_In_opt_ LPCITEMIDLIST);
+BOOL WINAPI ILIsEqual(_In_ LPCITEMIDLIST, _In_ LPCITEMIDLIST);
+BOOL WINAPI ILIsParent(_In_ LPCITEMIDLIST, _In_ LPCITEMIDLIST, BOOL);
+HRESULT WINAPI ILLoadFromStream(_In_ LPSTREAM, _Inout_ LPITEMIDLIST*);
+BOOL WINAPI ILRemoveLastID(_Inout_opt_ LPITEMIDLIST);
+HRESULT WINAPI ILSaveToStream(_In_ LPSTREAM, _In_ LPCITEMIDLIST);
#include <poppack.h>
#define MM_SUBMENUSHAVEIDS 0x00000002L
#define MM_DONTREMOVESEPS 0x00000004L
-UINT WINAPI Shell_MergeMenus (HMENU hmDst, HMENU hmSrc, UINT uInsert, UINT uIDAdjust, UINT uIDAdjustMax, ULONG uFlags);
+UINT
+WINAPI
+Shell_MergeMenus(
+ _In_ HMENU hmDst,
+ _In_ HMENU hmSrc,
+ UINT uInsert,
+ UINT uIDAdjust,
+ UINT uIDAdjustMax,
+ ULONG uFlags);
/****************************************************************************
const HKEY *aKeys;
}DEFCONTEXTMENU;
-HRESULT WINAPI SHCreateDefaultContextMenu(const DEFCONTEXTMENU *,REFIID,void **ppv);
+HRESULT
+WINAPI
+SHCreateDefaultContextMenu(
+ _In_ const DEFCONTEXTMENU *,
+ _In_ REFIID,
+ _Outptr_ void **ppv);
+
+typedef HRESULT
+(CALLBACK * LPFNDFMCALLBACK)(
+ _In_opt_ IShellFolder*,
+ _In_opt_ HWND,
+ _In_opt_ IDataObject*,
+ UINT,
+ WPARAM,
+ LPARAM);
+
+HRESULT
+WINAPI
+CDefFolderMenu_Create2(
+ _In_opt_ LPCITEMIDLIST,
+ _In_opt_ HWND,
+ UINT cidl,
+ _In_reads_opt_(cidl) LPCITEMIDLIST*,
+ _In_opt_ IShellFolder*,
+ _In_opt_ LPFNDFMCALLBACK,
+ UINT nKeys,
+ _In_reads_opt_(nKeys) const HKEY *,
+ _Outptr_ IContextMenu **);
-typedef HRESULT (CALLBACK * LPFNDFMCALLBACK)(IShellFolder*,HWND,IDataObject*,UINT,WPARAM,LPARAM);
-HRESULT WINAPI CDefFolderMenu_Create2(LPCITEMIDLIST,HWND,UINT,LPCITEMIDLIST*,IShellFolder*,LPFNDFMCALLBACK,UINT,const HKEY *,IContextMenu **);
/****************************************************************************
- * SHCreateDefaultContextMenu API
+ * SHCreateDefaultExtractIcon API
*/
HRESULT WINAPI
*/
HRESULT WINAPI SHCreateDataObject(
- LPCITEMIDLIST pidlFolder,
- UINT cidl,
- LPCITEMIDLIST* apidl,
- IDataObject *pdtInner,
- REFIID riid,
- void **ppv);
+ _In_opt_ LPCITEMIDLIST pidlFolder,
+ _In_ UINT cidl,
+ _In_reads_opt_(cidl) LPCITEMIDLIST* apidl,
+ _In_opt_ IDataObject *pdtInner,
+ _In_ REFIID riid,
+ _Outptr_ void **ppv);
/****************************************************************************
* CIDLData_CreateFromIDArray API
*/
HRESULT WINAPI CIDLData_CreateFromIDArray(
- LPCITEMIDLIST pidlFolder,
- UINT cidl,
- LPCITEMIDLIST* apidl,
- IDataObject **ppdtobj);
+ _In_ LPCITEMIDLIST pidlFolder,
+ _In_ UINT cidl,
+ _In_reads_opt_(cidl) LPCITEMIDLIST* apidl,
+ _Outptr_ IDataObject **ppdtobj);
/****************************************************************************
* SHOpenWithDialog
OPEN_AS_INFO_FLAGS oaifInFlags;
} OPENASINFO;
-HRESULT WINAPI SHOpenWithDialog(
- HWND hwndParent,
- const OPENASINFO *poainfo
-);
+HRESULT
+WINAPI
+SHOpenWithDialog(
+ _In_opt_ HWND hwndParent,
+ _In_ const OPENASINFO *poainfo);
#define INTERFACE IShellIconOverlayIdentifier
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
STDMETHOD_(ULONG,Release) (THIS) PURE;
- STDMETHOD (IsMemberOf)(THIS_ LPCWSTR pwszPath, DWORD dwAttrib) PURE;
- STDMETHOD (GetOverlayInfo)(THIS_ LPWSTR pwszIconFile, int cchMax, int * pIndex, DWORD * pdwFlags) PURE;
- STDMETHOD (GetPriority)(THIS_ int * pIPriority) PURE;
+ STDMETHOD (IsMemberOf)(THIS_ _In_ LPCWSTR pwszPath, DWORD dwAttrib) PURE;
+ STDMETHOD (GetOverlayInfo)(THIS_ _Out_writes_(cchMax) LPWSTR pwszIconFile, int cchMax, _Out_ int * pIndex, _Out_ DWORD * pdwFlags) PURE;
+ STDMETHOD (GetPriority)(THIS_ _Out_ int * pIPriority) PURE;
};
#if !defined(__cplusplus) || defined(CINTERFACE)
STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL fEnterMode) PURE;
// *** IDockingWindowSite methods ***
- STDMETHOD(GetBorderDW)(THIS_ IUnknown *punkObj, LPRECT prcBorder) PURE;
- STDMETHOD(RequestBorderSpaceDW)(THIS_ IUnknown *punkObj, LPCBORDERWIDTHS pbw) PURE;
- STDMETHOD(SetBorderSpaceDW)(THIS_ IUnknown *punkObj, LPCBORDERWIDTHS pbw) PURE;
+ STDMETHOD(GetBorderDW)(THIS_ _In_ IUnknown *punkObj, _Out_ LPRECT prcBorder) PURE;
+ STDMETHOD(RequestBorderSpaceDW)(THIS_ _In_ IUnknown *punkObj, _In_ LPCBORDERWIDTHS pbw) PURE;
+ STDMETHOD(SetBorderSpaceDW)(THIS_ _In_ IUnknown *punkObj, _In_ LPCBORDERWIDTHS pbw) PURE;
};
#undef INTERFACE
/* Registry functions */
-DWORD WINAPI SHDeleteEmptyKeyA(HKEY,LPCSTR);
-DWORD WINAPI SHDeleteEmptyKeyW(HKEY,LPCWSTR);
+DWORD WINAPI SHDeleteEmptyKeyA(_In_ HKEY, _In_opt_ LPCSTR);
+DWORD WINAPI SHDeleteEmptyKeyW(_In_ HKEY, _In_opt_ LPCWSTR);
#define SHDeleteEmptyKey WINELIB_NAME_AW(SHDeleteEmptyKey)
-DWORD WINAPI SHDeleteKeyA(HKEY,LPCSTR);
-DWORD WINAPI SHDeleteKeyW(HKEY,LPCWSTR);
+DWORD WINAPI SHDeleteKeyA(_In_ HKEY, _In_opt_ LPCSTR);
+DWORD WINAPI SHDeleteKeyW(_In_ HKEY, _In_opt_ LPCWSTR);
#define SHDeleteKey WINELIB_NAME_AW(SHDeleteKey)
-DWORD WINAPI SHDeleteValueA(HKEY,LPCSTR,LPCSTR);
-DWORD WINAPI SHDeleteValueW(HKEY,LPCWSTR,LPCWSTR);
+DWORD WINAPI SHDeleteValueA(_In_ HKEY, _In_opt_ LPCSTR, _In_ LPCSTR);
+DWORD WINAPI SHDeleteValueW(_In_ HKEY, _In_opt_ LPCWSTR, _In_ LPCWSTR);
#define SHDeleteValue WINELIB_NAME_AW(SHDeleteValue)
-DWORD WINAPI SHGetValueA(HKEY,LPCSTR,LPCSTR,LPDWORD,LPVOID,LPDWORD);
-DWORD WINAPI SHGetValueW(HKEY,LPCWSTR,LPCWSTR,LPDWORD,LPVOID,LPDWORD);
+DWORD
+WINAPI
+SHGetValueA(
+ _In_ HKEY,
+ _In_opt_ LPCSTR,
+ _In_opt_ LPCSTR,
+ _Out_opt_ LPDWORD,
+ _Out_writes_bytes_opt_(*pcbData) LPVOID,
+ _Inout_opt_ LPDWORD pcbData);
+
+DWORD
+WINAPI
+SHGetValueW(
+ _In_ HKEY,
+ _In_opt_ LPCWSTR,
+ _In_opt_ LPCWSTR,
+ _Out_opt_ LPDWORD,
+ _Out_writes_bytes_opt_(*pcbData) LPVOID,
+ _Inout_opt_ LPDWORD pcbData);
+
#define SHGetValue WINELIB_NAME_AW(SHGetValue)
-DWORD WINAPI SHSetValueA(HKEY,LPCSTR,LPCSTR,DWORD,LPCVOID,DWORD);
-DWORD WINAPI SHSetValueW(HKEY,LPCWSTR,LPCWSTR,DWORD,LPCVOID,DWORD);
+DWORD
+WINAPI
+SHSetValueA(
+ _In_ HKEY,
+ _In_opt_ LPCSTR,
+ _In_opt_ LPCSTR,
+ _In_ DWORD,
+ _In_reads_bytes_opt_(cbData) LPCVOID,
+ _In_ DWORD cbData);
+
+DWORD
+WINAPI
+SHSetValueW(
+ _In_ HKEY,
+ _In_opt_ LPCWSTR,
+ _In_opt_ LPCWSTR,
+ _In_ DWORD,
+ _In_reads_bytes_opt_(cbData) LPCVOID,
+ _In_ DWORD cbData);
+
#define SHSetValue WINELIB_NAME_AW(SHSetValue)
-DWORD WINAPI SHQueryValueExA(HKEY,LPCSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD);
-DWORD WINAPI SHQueryValueExW(HKEY,LPCWSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD);
+DWORD
+WINAPI
+SHQueryValueExA(
+ _In_ HKEY,
+ _In_opt_ LPCSTR,
+ _Reserved_ LPDWORD,
+ _Out_opt_ LPDWORD,
+ _Out_writes_bytes_to_opt_(*pcbData, *pcbData) LPVOID,
+ _Inout_opt_ LPDWORD pcbData);
+
+DWORD
+WINAPI
+SHQueryValueExW(
+ _In_ HKEY,
+ _In_opt_ LPCWSTR,
+ _Reserved_ LPDWORD,
+ _Out_opt_ LPDWORD,
+ _Out_writes_bytes_to_opt_(*pcbData, *pcbData) LPVOID,
+ _Inout_opt_ LPDWORD pcbData);
+
#define SHQueryValueEx WINELIB_NAME_AW(SHQueryValueEx)
-LONG WINAPI SHEnumKeyExA(HKEY,DWORD,LPSTR,LPDWORD);
-LONG WINAPI SHEnumKeyExW(HKEY,DWORD,LPWSTR,LPDWORD);
+LONG
+WINAPI
+SHEnumKeyExA(
+ _In_ HKEY,
+ _In_ DWORD,
+ _Out_writes_(*pcchName) LPSTR,
+ _Inout_ LPDWORD pcchName);
+
+LONG
+WINAPI
+SHEnumKeyExW(
+ _In_ HKEY,
+ _In_ DWORD,
+ _Out_writes_(*pcchName) LPWSTR,
+ _Inout_ LPDWORD pcchName);
+
#define SHEnumKeyEx WINELIB_NAME_AW(SHEnumKeyEx)
-LONG WINAPI SHEnumValueA(HKEY,DWORD,LPSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD);
-LONG WINAPI SHEnumValueW(HKEY,DWORD,LPWSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD);
+LONG
+WINAPI
+SHEnumValueA(
+ _In_ HKEY,
+ _In_ DWORD,
+ _Out_writes_opt_(*pcchValueName) LPSTR,
+ _Inout_opt_ LPDWORD pcchValueName,
+ _Out_opt_ LPDWORD,
+ _Out_writes_bytes_to_opt_(*pcbData, *pcbData) LPVOID,
+ _Inout_opt_ LPDWORD pcbData);
+
+LONG
+WINAPI
+SHEnumValueW(
+ _In_ HKEY,
+ _In_ DWORD,
+ _Out_writes_opt_(*pcchValueName) LPWSTR,
+ _Inout_opt_ LPDWORD pcchValueName,
+ _Out_opt_ LPDWORD,
+ _Out_writes_bytes_to_opt_(*pcbData, *pcbData) LPVOID,
+ _Inout_opt_ LPDWORD pcbData);
+
#define SHEnumValue WINELIB_NAME_AW(SHEnumValue)
-LONG WINAPI SHQueryInfoKeyA(HKEY,LPDWORD,LPDWORD,LPDWORD,LPDWORD);
-LONG WINAPI SHQueryInfoKeyW(HKEY,LPDWORD,LPDWORD,LPDWORD,LPDWORD);
+LONG
+WINAPI
+SHQueryInfoKeyA(
+ _In_ HKEY,
+ _Out_opt_ LPDWORD,
+ _Out_opt_ LPDWORD,
+ _Out_opt_ LPDWORD,
+ _Out_opt_ LPDWORD);
+
+LONG
+WINAPI
+SHQueryInfoKeyW(
+ _In_ HKEY,
+ _Out_opt_ LPDWORD,
+ _Out_opt_ LPDWORD,
+ _Out_opt_ LPDWORD,
+ _Out_opt_ LPDWORD);
+
#define SHQueryInfoKey WINELIB_NAME_AW(SHQueryInfoKey)
-DWORD WINAPI SHRegGetPathA(HKEY,LPCSTR,LPCSTR,LPSTR,DWORD);
-DWORD WINAPI SHRegGetPathW(HKEY,LPCWSTR,LPCWSTR,LPWSTR,DWORD);
+DWORD
+WINAPI
+SHRegGetPathA(
+ _In_ HKEY,
+ _In_opt_ LPCSTR,
+ _In_opt_ LPCSTR,
+ _Out_writes_(MAX_PATH) LPSTR,
+ _In_ DWORD);
+
+DWORD
+WINAPI
+SHRegGetPathW(
+ _In_ HKEY,
+ _In_opt_ LPCWSTR,
+ _In_opt_ LPCWSTR,
+ _Out_writes_(MAX_PATH) LPWSTR,
+ _In_ DWORD);
+
#define SHRegGetPath WINELIB_NAME_AW(SHRegGetPath)
-DWORD WINAPI SHRegSetPathA(HKEY,LPCSTR,LPCSTR,LPCSTR,DWORD);
-DWORD WINAPI SHRegSetPathW(HKEY,LPCWSTR,LPCWSTR,LPCWSTR,DWORD);
+DWORD
+WINAPI
+SHRegSetPathA(
+ _In_ HKEY,
+ _In_opt_ LPCSTR,
+ _In_opt_ LPCSTR,
+ _In_ LPCSTR,
+ _In_ DWORD);
+
+DWORD
+WINAPI
+SHRegSetPathW(
+ _In_ HKEY,
+ _In_opt_ LPCWSTR,
+ _In_opt_ LPCWSTR,
+ _In_ LPCWSTR,
+ _In_ DWORD);
+
#define SHRegSetPath WINELIB_NAME_AW(SHRegSetPath)
-DWORD WINAPI SHCopyKeyA(HKEY,LPCSTR,HKEY,DWORD);
-DWORD WINAPI SHCopyKeyW(HKEY,LPCWSTR,HKEY,DWORD);
+DWORD
+WINAPI
+SHCopyKeyA(
+ _In_ HKEY,
+ _In_opt_ LPCSTR,
+ _In_ HKEY,
+ _Reserved_ DWORD);
+
+DWORD
+WINAPI
+SHCopyKeyW(
+ _In_ HKEY,
+ _In_opt_ LPCWSTR,
+ _In_ HKEY,
+ _Reserved_ DWORD);
+
#define SHCopyKey WINELIB_NAME_AW(SHCopyKey)
-HKEY WINAPI SHRegDuplicateHKey(HKEY);
+HKEY WINAPI SHRegDuplicateHKey(_In_ HKEY);
/* SHRegGetValue flags */
typedef INT SRRF;
#define SRRF_ZEROONFAILURE 0x20000000
#define SRRF_NOVIRT 0x40000000
-LSTATUS WINAPI SHRegGetValueA(HKEY,LPCSTR,LPCSTR,SRRF,LPDWORD,LPVOID,LPDWORD);
-LSTATUS WINAPI SHRegGetValueW(HKEY,LPCWSTR,LPCWSTR,SRRF,LPDWORD,LPVOID,LPDWORD);
+LSTATUS
+WINAPI
+SHRegGetValueA(
+ _In_ HKEY,
+ _In_opt_ LPCSTR,
+ _In_opt_ LPCSTR,
+ _In_ SRRF,
+ _Out_opt_ LPDWORD,
+ _Out_writes_bytes_to_opt_(*pcbData, *pcbData) LPVOID,
+ _Inout_opt_ LPDWORD pcbData);
+
+LSTATUS
+WINAPI
+SHRegGetValueW(
+ _In_ HKEY,
+ _In_opt_ LPCWSTR,
+ _In_opt_ LPCWSTR,
+ _In_ SRRF,
+ _Out_opt_ LPDWORD,
+ _Out_writes_bytes_to_opt_(*pcbData, *pcbData) LPVOID,
+ _Inout_opt_ LPDWORD pcbData);
+
#define SHRegGetValue WINELIB_NAME_AW(SHRegGetValue)
/* Undocumented registry functions */
typedef HANDLE HUSKEY;
typedef HUSKEY *PHUSKEY;
-LONG WINAPI SHRegCreateUSKeyA(LPCSTR,REGSAM,HUSKEY,PHUSKEY,DWORD);
-LONG WINAPI SHRegCreateUSKeyW(LPCWSTR,REGSAM,HUSKEY,PHUSKEY,DWORD);
+LONG
+WINAPI
+SHRegCreateUSKeyA(
+ _In_ LPCSTR,
+ _In_ REGSAM,
+ _In_opt_ HUSKEY,
+ _Out_ PHUSKEY,
+ _In_ DWORD);
+
+LONG
+WINAPI
+SHRegCreateUSKeyW(
+ _In_ LPCWSTR,
+ _In_ REGSAM,
+ _In_opt_ HUSKEY,
+ _Out_ PHUSKEY,
+ _In_ DWORD);
+
#define SHRegCreateUSKey WINELIB_NAME_AW(SHRegCreateUSKey)
-LONG WINAPI SHRegOpenUSKeyA(LPCSTR,REGSAM,HUSKEY,PHUSKEY,BOOL);
-LONG WINAPI SHRegOpenUSKeyW(LPCWSTR,REGSAM,HUSKEY,PHUSKEY,BOOL);
+LONG
+WINAPI
+SHRegOpenUSKeyA(
+ _In_ LPCSTR,
+ _In_ REGSAM,
+ _In_opt_ HUSKEY,
+ _Out_ PHUSKEY,
+ _In_ BOOL);
+
+LONG
+WINAPI
+SHRegOpenUSKeyW(
+ _In_ LPCWSTR,
+ _In_ REGSAM,
+ _In_opt_ HUSKEY,
+ _Out_ PHUSKEY,
+ _In_ BOOL);
+
#define SHRegOpenUSKey WINELIB_NAME_AW(SHRegOpenUSKey)
-LONG WINAPI SHRegQueryUSValueA(HUSKEY,LPCSTR,LPDWORD,LPVOID,LPDWORD,
- BOOL,LPVOID,DWORD);
-LONG WINAPI SHRegQueryUSValueW(HUSKEY,LPCWSTR,LPDWORD,LPVOID,LPDWORD,
- BOOL,LPVOID,DWORD);
+LONG
+WINAPI
+SHRegQueryUSValueA(
+ _In_ HUSKEY,
+ _In_opt_ LPCSTR,
+ _Inout_opt_ LPDWORD,
+ _Out_writes_bytes_to_opt_(*pcbData, *pcbData) LPVOID,
+ _Inout_opt_ LPDWORD pcbData,
+ _In_ BOOL,
+ _In_reads_bytes_opt_(dwDefaultDataSize) LPVOID,
+ _In_opt_ DWORD dwDefaultDataSize);
+
+LONG
+WINAPI
+SHRegQueryUSValueW(
+ _In_ HUSKEY,
+ _In_opt_ LPCWSTR,
+ _Inout_opt_ LPDWORD,
+ _Out_writes_bytes_to_opt_(*pcbData, *pcbData) LPVOID,
+ _Inout_opt_ LPDWORD pcbData,
+ _In_ BOOL,
+ _In_reads_bytes_opt_(dwDefaultDataSize) LPVOID,
+ _In_opt_ DWORD dwDefaultDataSize);
+
#define SHRegQueryUSValue WINELIB_NAME_AW(SHRegQueryUSValue)
-LONG WINAPI SHRegWriteUSValueA(HUSKEY,LPCSTR,DWORD,LPVOID,DWORD,DWORD);
-LONG WINAPI SHRegWriteUSValueW(HUSKEY,LPCWSTR,DWORD,LPVOID,DWORD,DWORD);
+LONG
+WINAPI
+SHRegWriteUSValueA(
+ _In_ HUSKEY,
+ _In_ LPCSTR,
+ _In_ DWORD,
+ _In_reads_bytes_(cbData) LPVOID,
+ _In_ DWORD cbData,
+ _In_ DWORD);
+
+LONG
+WINAPI
+SHRegWriteUSValueW(
+ _In_ HUSKEY,
+ _In_ LPCWSTR,
+ _In_ DWORD,
+ _In_reads_bytes_(cbData) LPVOID,
+ _In_ DWORD cbData,
+ _In_ DWORD);
+
#define SHRegWriteUSValue WINELIB_NAME_AW(SHRegWriteUSValue)
-LONG WINAPI SHRegDeleteUSValueA(HUSKEY,LPCSTR,SHREGDEL_FLAGS);
-LONG WINAPI SHRegDeleteUSValueW(HUSKEY,LPCWSTR,SHREGDEL_FLAGS);
+LONG
+WINAPI
+SHRegDeleteUSValueA(
+ _In_ HUSKEY,
+ _In_ LPCSTR,
+ _In_ SHREGDEL_FLAGS);
+
+LONG
+WINAPI
+SHRegDeleteUSValueW(
+ _In_ HUSKEY,
+ _In_ LPCWSTR,
+ _In_ SHREGDEL_FLAGS);
+
#define SHRegDeleteUSValue WINELIB_NAME_AW(SHRegDeleteUSValue)
-LONG WINAPI SHRegDeleteEmptyUSKeyA(HUSKEY,LPCSTR,SHREGDEL_FLAGS);
-LONG WINAPI SHRegDeleteEmptyUSKeyW(HUSKEY,LPCWSTR,SHREGDEL_FLAGS);
+LONG
+WINAPI
+SHRegDeleteEmptyUSKeyA(
+ _In_ HUSKEY,
+ _In_ LPCSTR,
+ _In_ SHREGDEL_FLAGS);
+
+LONG
+WINAPI
+SHRegDeleteEmptyUSKeyW(
+ _In_ HUSKEY,
+ _In_ LPCWSTR,
+ _In_ SHREGDEL_FLAGS);
+
#define SHRegDeleteEmptyUSKey WINELIB_NAME_AW(SHRegDeleteEmptyUSKey)
-LONG WINAPI SHRegEnumUSKeyA(HUSKEY,DWORD,LPSTR,LPDWORD,SHREGENUM_FLAGS);
-LONG WINAPI SHRegEnumUSKeyW(HUSKEY,DWORD,LPWSTR,LPDWORD,SHREGENUM_FLAGS);
+LONG
+WINAPI
+SHRegEnumUSKeyA(
+ _In_ HUSKEY,
+ _In_ DWORD,
+ _Out_writes_to_(*pcchName, *pcchName) LPSTR,
+ _Inout_ LPDWORD pcchName,
+ _In_ SHREGENUM_FLAGS);
+
+LONG
+WINAPI
+SHRegEnumUSKeyW(
+ _In_ HUSKEY,
+ _In_ DWORD,
+ _Out_writes_to_(*pcchName, *pcchName) LPWSTR,
+ _Inout_ LPDWORD pcchName,
+ _In_ SHREGENUM_FLAGS);
+
#define SHRegEnumUSKey WINELIB_NAME_AW(SHRegEnumUSKey)
-LONG WINAPI SHRegEnumUSValueA(HUSKEY,DWORD,LPSTR,LPDWORD,LPDWORD,
- LPVOID,LPDWORD,SHREGENUM_FLAGS);
-LONG WINAPI SHRegEnumUSValueW(HUSKEY,DWORD,LPWSTR,LPDWORD,LPDWORD,
- LPVOID,LPDWORD,SHREGENUM_FLAGS);
+LONG
+WINAPI
+SHRegEnumUSValueA(
+ _In_ HUSKEY,
+ _In_ DWORD,
+ _Out_writes_to_(*pcchValueName, *pcchValueName) LPSTR,
+ _Inout_ LPDWORD pcchValueName,
+ _Out_opt_ LPDWORD,
+ _Out_writes_bytes_to_opt_(*pcbData, *pcbData) LPVOID,
+ _Inout_opt_ LPDWORD pcbData,
+ _In_ SHREGENUM_FLAGS);
+
+LONG
+WINAPI
+SHRegEnumUSValueW(
+ _In_ HUSKEY,
+ _In_ DWORD,
+ _Out_writes_to_(*pcchValueName, *pcchValueName) LPWSTR,
+ _Inout_ LPDWORD pcchValueName,
+ _Out_opt_ LPDWORD,
+ _Out_writes_bytes_to_opt_(*pcbData, *pcbData) LPVOID,
+ _Inout_opt_ LPDWORD pcbData,
+ _In_ SHREGENUM_FLAGS);
+
#define SHRegEnumUSValue WINELIB_NAME_AW(SHRegEnumUSValue)
-LONG WINAPI SHRegQueryInfoUSKeyA(HUSKEY,LPDWORD,LPDWORD,LPDWORD,
- LPDWORD,SHREGENUM_FLAGS);
-LONG WINAPI SHRegQueryInfoUSKeyW(HUSKEY,LPDWORD,LPDWORD,LPDWORD,
- LPDWORD,SHREGENUM_FLAGS);
+LONG
+WINAPI
+SHRegQueryInfoUSKeyA(
+ _In_ HUSKEY,
+ _Out_opt_ LPDWORD,
+ _Out_opt_ LPDWORD,
+ _Out_opt_ LPDWORD,
+ _Out_opt_ LPDWORD,
+ _In_ SHREGENUM_FLAGS);
+
+LONG
+WINAPI
+SHRegQueryInfoUSKeyW(
+ _In_ HUSKEY,
+ _Out_opt_ LPDWORD,
+ _Out_opt_ LPDWORD,
+ _Out_opt_ LPDWORD,
+ _Out_opt_ LPDWORD,
+ _In_ SHREGENUM_FLAGS);
+
#define SHRegQueryInfoUSKey WINELIB_NAME_AW(SHRegQueryInfoUSKey)
-LONG WINAPI SHRegCloseUSKey(HUSKEY);
+LONG WINAPI SHRegCloseUSKey(_In_ HUSKEY);
+
+LONG
+WINAPI
+SHRegGetUSValueA(
+ _In_ LPCSTR,
+ _In_opt_ LPCSTR,
+ _Inout_opt_ LPDWORD,
+ _Out_writes_bytes_to_opt_(*pcbData, *pcbData) LPVOID,
+ _Inout_opt_ LPDWORD pcbData,
+ _In_ BOOL,
+ _In_reads_bytes_opt_(dwDefaultDataSize) LPVOID,
+ _In_ DWORD dwDefaultDataSize);
+
+LONG
+WINAPI
+SHRegGetUSValueW(
+ _In_ LPCWSTR,
+ _In_opt_ LPCWSTR,
+ _Inout_opt_ LPDWORD,
+ _Out_writes_bytes_to_opt_(*pcbData, *pcbData) LPVOID,
+ _Inout_opt_ LPDWORD pcbData,
+ _In_ BOOL,
+ _In_reads_bytes_opt_(dwDefaultDataSize) LPVOID,
+ _In_ DWORD dwDefaultDataSize);
-LONG WINAPI SHRegGetUSValueA(LPCSTR,LPCSTR,LPDWORD,LPVOID,LPDWORD,
- BOOL,LPVOID,DWORD);
-LONG WINAPI SHRegGetUSValueW(LPCWSTR,LPCWSTR,LPDWORD,LPVOID,LPDWORD,
- BOOL,LPVOID,DWORD);
#define SHRegGetUSValue WINELIB_NAME_AW(SHRegGetUSValue)
-LONG WINAPI SHRegSetUSValueA(LPCSTR,LPCSTR,DWORD,LPVOID,DWORD,DWORD);
-LONG WINAPI SHRegSetUSValueW(LPCWSTR,LPCWSTR,DWORD,LPVOID,DWORD,DWORD);
+LONG
+WINAPI
+SHRegSetUSValueA(
+ _In_ LPCSTR,
+ _In_ LPCSTR,
+ _In_ DWORD,
+ _In_reads_bytes_opt_(cbData) LPVOID,
+ _In_opt_ DWORD cbData,
+ _In_opt_ DWORD);
+
+LONG
+WINAPI
+SHRegSetUSValueW(
+ _In_ LPCWSTR,
+ _In_ LPCWSTR,
+ _In_ DWORD,
+ _In_reads_bytes_opt_(cbData) LPVOID,
+ _In_opt_ DWORD cbData,
+ _In_opt_ DWORD);
+
#define SHRegSetUSValue WINELIB_NAME_AW(SHRegSetUSValue)
-BOOL WINAPI SHRegGetBoolUSValueA(LPCSTR,LPCSTR,BOOL,BOOL);
-BOOL WINAPI SHRegGetBoolUSValueW(LPCWSTR,LPCWSTR,BOOL,BOOL);
+BOOL
+WINAPI
+SHRegGetBoolUSValueA(
+ _In_ LPCSTR,
+ _In_opt_ LPCSTR,
+ _In_ BOOL,
+ _In_ BOOL);
+
+BOOL
+WINAPI
+SHRegGetBoolUSValueW(
+ _In_ LPCWSTR,
+ _In_opt_ LPCWSTR,
+ _In_ BOOL,
+ _In_ BOOL);
+
#define SHRegGetBoolUSValue WINELIB_NAME_AW(SHRegGetBoolUSValue)
-int WINAPI SHRegGetIntW(HKEY,LPCWSTR,int);
+int WINAPI SHRegGetIntW(_In_ HKEY, _In_opt_ LPCWSTR, _In_ int);
/* IQueryAssociation and helpers */
enum
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
STDMETHOD_(ULONG,Release)(THIS) PURE;
/*** IQueryAssociations methods ***/
- STDMETHOD(Init)(THIS_ ASSOCF flags, LPCWSTR pszAssoc, HKEY hkProgid, HWND hwnd) PURE;
- STDMETHOD(GetString)(THIS_ ASSOCF flags, ASSOCSTR str, LPCWSTR pszExtra, LPWSTR pszOut, DWORD * pcchOut) PURE;
- STDMETHOD(GetKey)(THIS_ ASSOCF flags, ASSOCKEY key, LPCWSTR pszExtra, HKEY * phkeyOut) PURE;
- STDMETHOD(GetData)(THIS_ ASSOCF flags, ASSOCDATA data, LPCWSTR pszExtra, LPVOID pvOut, DWORD * pcbOut) PURE;
- STDMETHOD(GetEnum)(THIS_ ASSOCF flags, ASSOCENUM assocenum, LPCWSTR pszExtra, REFIID riid, LPVOID * ppvOut) PURE;
+ STDMETHOD(Init)(THIS_ _In_ ASSOCF flags, _In_opt_ LPCWSTR pszAssoc, _In_opt_ HKEY hkProgid, _In_opt_ HWND hwnd) PURE;
+ STDMETHOD(GetString)(THIS_ _In_ ASSOCF flags, _In_ ASSOCSTR str, _In_opt_ LPCWSTR pszExtra, _Out_writes_opt_(*pcchOut) LPWSTR pszOut, _Inout_ DWORD *pcchOut) PURE;
+ STDMETHOD(GetKey)(THIS_ _In_ ASSOCF flags, _In_ ASSOCKEY key, _In_opt_ LPCWSTR pszExtra, _Out_ HKEY *phkeyOut) PURE;
+ STDMETHOD(GetData)(THIS_ _In_ ASSOCF flags, _In_ ASSOCDATA data, _In_opt_ LPCWSTR pszExtra, _Out_writes_bytes_opt_(*pcbOut) LPVOID pvOut, _Inout_opt_ DWORD *pcbOut) PURE;
+ STDMETHOD(GetEnum)(THIS_ _In_ ASSOCF flags, _In_ ASSOCENUM assocenum, _In_opt_ LPCWSTR pszExtra, _In_ REFIID riid, _Outptr_ LPVOID *ppvOut) PURE;
};
#undef INTERFACE
#define IQueryAssociations_GetEnum(p,a,b,c,d,e) (p)->lpVtbl->GetEnum(p,a,b,c,d,e)
#endif
-HRESULT WINAPI AssocCreate(CLSID,REFIID,LPVOID*);
+HRESULT WINAPI AssocCreate(_In_ CLSID, _In_ REFIID, _Outptr_ LPVOID*);
+
+HRESULT
+WINAPI
+AssocQueryStringA(
+ _In_ ASSOCF,
+ _In_ ASSOCSTR,
+ _In_ LPCSTR,
+ _In_opt_ LPCSTR,
+ _Out_writes_opt_(*pcchOut) LPSTR,
+ _Inout_ LPDWORD pcchOut);
+
+HRESULT
+WINAPI
+AssocQueryStringW(
+ _In_ ASSOCF,
+ _In_ ASSOCSTR,
+ _In_ LPCWSTR,
+ _In_opt_ LPCWSTR,
+ _Out_writes_opt_(*pcchOut) LPWSTR,
+ _Inout_ LPDWORD pcchOut);
-HRESULT WINAPI AssocQueryStringA(ASSOCF,ASSOCSTR,LPCSTR,LPCSTR,LPSTR,LPDWORD);
-HRESULT WINAPI AssocQueryStringW(ASSOCF,ASSOCSTR,LPCWSTR,LPCWSTR,LPWSTR,LPDWORD);
#define AssocQueryString WINELIB_NAME_AW(AssocQueryString)
-HRESULT WINAPI AssocQueryStringByKeyA(ASSOCF,ASSOCSTR,HKEY,LPCSTR,LPSTR,LPDWORD);
-HRESULT WINAPI AssocQueryStringByKeyW(ASSOCF,ASSOCSTR,HKEY,LPCWSTR,LPWSTR,LPDWORD);
+HRESULT
+WINAPI
+AssocQueryStringByKeyA(
+ _In_ ASSOCF,
+ _In_ ASSOCSTR,
+ _In_ HKEY,
+ _In_opt_ LPCSTR,
+ _Out_writes_opt_(*pcchOut) LPSTR,
+ _Inout_ LPDWORD pcchOut);
+
+HRESULT
+WINAPI
+AssocQueryStringByKeyW(
+ _In_ ASSOCF,
+ _In_ ASSOCSTR,
+ _In_ HKEY,
+ _In_opt_ LPCWSTR,
+ _Out_writes_opt_(*pcchOut) LPWSTR,
+ _Inout_ LPDWORD pcchOut);
+
#define AssocQueryStringByKey WINELIB_NAME_AW(AssocQueryStringByKey)
-HRESULT WINAPI AssocQueryKeyA(ASSOCF,ASSOCKEY,LPCSTR,LPCSTR,PHKEY);
-HRESULT WINAPI AssocQueryKeyW(ASSOCF,ASSOCKEY,LPCWSTR,LPCWSTR,PHKEY);
+HRESULT
+WINAPI
+AssocQueryKeyA(
+ _In_ ASSOCF,
+ _In_ ASSOCKEY,
+ _In_ LPCSTR,
+ _In_opt_ LPCSTR,
+ _Out_ PHKEY);
+
+HRESULT
+WINAPI
+AssocQueryKeyW(
+ _In_ ASSOCF,
+ _In_ ASSOCKEY,
+ _In_ LPCWSTR,
+ _In_opt_ LPCWSTR,
+ _Out_ PHKEY);
+
#define AssocQueryKey WINELIB_NAME_AW(AssocQueryKey)
-BOOL WINAPI AssocIsDangerous(LPCWSTR);
+BOOL WINAPI AssocIsDangerous(_In_ LPCWSTR);
#endif /* NO_SHLWAPI_REG */
-HRESULT WINAPI IUnknown_SetSite(IUnknown *punk, IUnknown *punkSite);
-HRESULT WINAPI IUnknown_QueryService(IUnknown *punk, REFGUID guidService, REFIID riid, void **ppvOut);
+void WINAPI IUnknown_Set(_Inout_ IUnknown **ppunk, _In_opt_ IUnknown *punk);
+void WINAPI IUnknown_AtomicRelease(_Inout_opt_ IUnknown **punk);
+HRESULT WINAPI IUnknown_GetWindow(_In_ IUnknown *punk, _Out_ HWND *phwnd);
+
+HRESULT
+WINAPI
+IUnknown_SetSite(
+ _In_ IUnknown *punk,
+ _In_opt_ IUnknown *punkSite);
+
+HRESULT
+WINAPI
+IUnknown_GetSite(
+ _In_ IUnknown *punk,
+ _In_ REFIID riid,
+ _Outptr_ void **ppv);
+
+HRESULT
+WINAPI
+IUnknown_QueryService(
+ _In_opt_ IUnknown *punk,
+ _In_ REFGUID guidService,
+ _In_ REFIID riid,
+ _Outptr_ void **ppvOut);
/* Path functions */
#ifndef NO_SHLWAPI_PATH
#define GCT_WILD 0x4
#define GCT_SEPARATOR 0x8
-LPSTR WINAPI PathAddBackslashA(LPSTR);
-LPWSTR WINAPI PathAddBackslashW(LPWSTR);
+LPSTR WINAPI PathAddBackslashA(_Inout_updates_(MAX_PATH) LPSTR);
+LPWSTR WINAPI PathAddBackslashW(_Inout_updates_(MAX_PATH) LPWSTR);
#define PathAddBackslash WINELIB_NAME_AW(PathAddBackslash)
-BOOL WINAPI PathAddExtensionA(LPSTR,LPCSTR);
-BOOL WINAPI PathAddExtensionW(LPWSTR,LPCWSTR);
+BOOL
+WINAPI
+PathAddExtensionA(
+ _Inout_updates_(MAX_PATH) LPSTR,
+ _In_opt_ LPCSTR);
+
+BOOL
+WINAPI
+PathAddExtensionW(
+ _Inout_updates_(MAX_PATH) LPWSTR,
+ _In_opt_ LPCWSTR);
+
#define PathAddExtension WINELIB_NAME_AW(PathAddExtension)
-BOOL WINAPI PathAppendA(LPSTR,LPCSTR);
-BOOL WINAPI PathAppendW(LPWSTR,LPCWSTR);
+BOOL WINAPI PathAppendA(_Inout_updates_(MAX_PATH) LPSTR, _In_ LPCSTR);
+BOOL WINAPI PathAppendW(_Inout_updates_(MAX_PATH) LPWSTR, _In_ LPCWSTR);
#define PathAppend WINELIB_NAME_AW(PathAppend)
-LPSTR WINAPI PathBuildRootA(LPSTR,int);
-LPWSTR WINAPI PathBuildRootW(LPWSTR,int);
+LPSTR WINAPI PathBuildRootA(_Out_writes_(4) LPSTR, int);
+LPWSTR WINAPI PathBuildRootW(_Out_writes_(4) LPWSTR, int);
#define PathBuildRoot WINELIB_NAME_AW(PathBuiltRoot)
-BOOL WINAPI PathCanonicalizeA(LPSTR,LPCSTR);
-BOOL WINAPI PathCanonicalizeW(LPWSTR,LPCWSTR);
+BOOL WINAPI PathCanonicalizeA(_Out_writes_(MAX_PATH) LPSTR, _In_ LPCSTR);
+BOOL WINAPI PathCanonicalizeW(_Out_writes_(MAX_PATH) LPWSTR, _In_ LPCWSTR);
#define PathCanonicalize WINELIB_NAME_AW(PathCanonicalize)
-LPSTR WINAPI PathCombineA(LPSTR,LPCSTR,LPCSTR);
-LPWSTR WINAPI PathCombineW(LPWSTR,LPCWSTR,LPCWSTR);
+LPSTR
+WINAPI
+PathCombineA(
+ _Out_writes_(MAX_PATH) LPSTR,
+ _In_opt_ LPCSTR,
+ _In_opt_ LPCSTR);
+
+LPWSTR
+WINAPI
+PathCombineW(
+ _Out_writes_(MAX_PATH) LPWSTR,
+ _In_opt_ LPCWSTR,
+ _In_opt_ LPCWSTR);
+
#define PathCombine WINELIB_NAME_AW(PathCombine)
-BOOL WINAPI PathCompactPathA(HDC,LPSTR,UINT);
-BOOL WINAPI PathCompactPathW(HDC,LPWSTR,UINT);
+BOOL
+WINAPI
+PathCompactPathA(
+ _In_opt_ HDC,
+ _Inout_updates_(MAX_PATH) LPSTR,
+ _In_ UINT);
+
+BOOL
+WINAPI
+PathCompactPathW(
+ _In_opt_ HDC,
+ _Inout_updates_(MAX_PATH) LPWSTR,
+ _In_ UINT);
+
#define PathCompactPath WINELIB_NAME_AW(PathCompactPath)
-BOOL WINAPI PathCompactPathExA(LPSTR,LPCSTR,UINT,DWORD);
-BOOL WINAPI PathCompactPathExW(LPWSTR,LPCWSTR,UINT,DWORD);
+BOOL
+WINAPI
+PathCompactPathExA(
+ _Out_writes_(cchMax) LPSTR,
+ _In_ LPCSTR,
+ _In_ UINT cchMax,
+ _In_ DWORD);
+
+BOOL
+WINAPI
+PathCompactPathExW(
+ _Out_writes_(cchMax) LPWSTR,
+ _In_ LPCWSTR,
+ _In_ UINT cchMax,
+ _In_ DWORD);
+
#define PathCompactPathEx WINELIB_NAME_AW(PathCompactPathEx)
-int WINAPI PathCommonPrefixA(LPCSTR,LPCSTR,LPSTR);
-int WINAPI PathCommonPrefixW(LPCWSTR,LPCWSTR,LPWSTR);
+int
+WINAPI
+PathCommonPrefixA(
+ _In_ LPCSTR,
+ _In_ LPCSTR,
+ _Out_writes_opt_(MAX_PATH) LPSTR);
+
+int
+WINAPI
+PathCommonPrefixW(
+ _In_ LPCWSTR,
+ _In_ LPCWSTR,
+ _Out_writes_opt_(MAX_PATH) LPWSTR);
+
#define PathCommonPrefix WINELIB_NAME_AW(PathCommonPrefix)
-HRESULT WINAPI PathCreateFromUrlA(LPCSTR pszUrl, LPSTR pszPath, LPDWORD pcchPath, DWORD dwReserved);
-HRESULT WINAPI PathCreateFromUrlW(LPCWSTR pszUrl, LPWSTR pszPath, LPDWORD pcchPath, DWORD dwReserved);
+HRESULT
+WINAPI
+PathCreateFromUrlA(
+ _In_ LPCSTR,
+ _Out_writes_to_(*pcchPath, *pcchPath) LPSTR,
+ _Inout_ LPDWORD pcchPath,
+ DWORD);
+
+HRESULT
+WINAPI
+PathCreateFromUrlW(
+ _In_ LPCWSTR,
+ _Out_writes_to_(*pcchPath, *pcchPath) LPWSTR,
+ _Inout_ LPDWORD pcchPath,
+ DWORD);
+
#define PathCreateFromUrl WINELIB_NAME_AW(PathCreateFromUrl)
-BOOL WINAPI PathFileExistsA(LPCSTR);
-BOOL WINAPI PathFileExistsW(LPCWSTR);
+HRESULT WINAPI PathCreateFromUrlAlloc(_In_ LPCWSTR, _Outptr_ LPWSTR*, DWORD);
+
+BOOL WINAPI PathFileExistsA(_In_ LPCSTR);
+BOOL WINAPI PathFileExistsW(_In_ LPCWSTR);
#define PathFileExists WINELIB_NAME_AW(PathFileExists)
-BOOL WINAPI PathFileExistsAndAttributesA(LPCSTR lpszPath, DWORD *dwAttr);
-BOOL WINAPI PathFileExistsAndAttributesW(LPCWSTR lpszPath, DWORD *dwAttr);
+BOOL WINAPI PathFileExistsAndAttributesA(LPCSTR,DWORD*);
+BOOL WINAPI PathFileExistsAndAttributesW(LPCWSTR,DWORD*);
#define PathFileExistsAndAttributes WINELIB_NAME_AW(PathFileExistsAndAttributes)
-LPSTR WINAPI PathFindExtensionA(LPCSTR);
-LPWSTR WINAPI PathFindExtensionW(LPCWSTR);
+LPSTR WINAPI PathFindExtensionA(_In_ LPCSTR);
+LPWSTR WINAPI PathFindExtensionW(_In_ LPCWSTR);
#define PathFindExtension WINELIB_NAME_AW(PathFindExtension)
-LPSTR WINAPI PathFindFileNameA(LPCSTR);
-LPWSTR WINAPI PathFindFileNameW(LPCWSTR);
+LPSTR WINAPI PathFindFileNameA(_In_ LPCSTR);
+LPWSTR WINAPI PathFindFileNameW(_In_ LPCWSTR);
#define PathFindFileName WINELIB_NAME_AW(PathFindFileName)
-LPSTR WINAPI PathFindNextComponentA(LPCSTR);
-LPWSTR WINAPI PathFindNextComponentW(LPCWSTR);
+LPSTR WINAPI PathFindNextComponentA(_In_ LPCSTR);
+LPWSTR WINAPI PathFindNextComponentW(_In_ LPCWSTR);
#define PathFindNextComponent WINELIB_NAME_AW(PathFindNextComponent)
-BOOL WINAPI PathFindOnPathA(LPSTR,LPCSTR*);
-BOOL WINAPI PathFindOnPathW(LPWSTR,LPCWSTR*);
+BOOL WINAPI PathFindOnPathA(_Inout_updates_(MAX_PATH) LPSTR, _In_opt_ LPCSTR*);
+BOOL WINAPI PathFindOnPathW(_Inout_updates_(MAX_PATH) LPWSTR, _In_opt_ LPCWSTR*);
#define PathFindOnPath WINELIB_NAME_AW(PathFindOnPath)
-LPSTR WINAPI PathGetArgsA(LPCSTR);
-LPWSTR WINAPI PathGetArgsW(LPCWSTR);
+LPSTR WINAPI PathGetArgsA(_In_ LPCSTR);
+LPWSTR WINAPI PathGetArgsW(_In_ LPCWSTR);
#define PathGetArgs WINELIB_NAME_AW(PathGetArgs)
-UINT WINAPI PathGetCharTypeA(UCHAR);
-UINT WINAPI PathGetCharTypeW(WCHAR);
+UINT WINAPI PathGetCharTypeA(_In_ UCHAR);
+UINT WINAPI PathGetCharTypeW(_In_ WCHAR);
#define PathGetCharType WINELIB_NAME_AW(PathGetCharType)
-int WINAPI PathGetDriveNumberA(LPCSTR);
-int WINAPI PathGetDriveNumberW(LPCWSTR);
+int WINAPI PathGetDriveNumberA(_In_ LPCSTR);
+int WINAPI PathGetDriveNumberW(_In_ LPCWSTR);
#define PathGetDriveNumber WINELIB_NAME_AW(PathGetDriveNumber)
-BOOL WINAPI PathIsDirectoryA(LPCSTR);
-BOOL WINAPI PathIsDirectoryW(LPCWSTR);
+BOOL WINAPI PathIsDirectoryA(_In_ LPCSTR);
+BOOL WINAPI PathIsDirectoryW(_In_ LPCWSTR);
#define PathIsDirectory WINELIB_NAME_AW(PathIsDirectory)
-BOOL WINAPI PathIsDirectoryEmptyA(LPCSTR);
-BOOL WINAPI PathIsDirectoryEmptyW(LPCWSTR);
+BOOL WINAPI PathIsDirectoryEmptyA(_In_ LPCSTR);
+BOOL WINAPI PathIsDirectoryEmptyW(_In_ LPCWSTR);
#define PathIsDirectoryEmpty WINELIB_NAME_AW(PathIsDirectoryEmpty)
-BOOL WINAPI PathIsFileSpecA(LPCSTR);
-BOOL WINAPI PathIsFileSpecW(LPCWSTR);
+BOOL WINAPI PathIsFileSpecA(_In_ LPCSTR);
+BOOL WINAPI PathIsFileSpecW(_In_ LPCWSTR);
#define PathIsFileSpec WINELIB_NAME_AW(PathIsFileSpec);
-BOOL WINAPI PathIsPrefixA(LPCSTR,LPCSTR);
-BOOL WINAPI PathIsPrefixW(LPCWSTR,LPCWSTR);
+BOOL WINAPI PathIsPrefixA(_In_ LPCSTR, _In_ LPCSTR);
+BOOL WINAPI PathIsPrefixW(_In_ LPCWSTR, _In_ LPCWSTR);
#define PathIsPrefix WINELIB_NAME_AW(PathIsPrefix)
-BOOL WINAPI PathIsRelativeA(LPCSTR);
-BOOL WINAPI PathIsRelativeW(LPCWSTR);
+BOOL WINAPI PathIsRelativeA(_In_ LPCSTR);
+BOOL WINAPI PathIsRelativeW(_In_ LPCWSTR);
#define PathIsRelative WINELIB_NAME_AW(PathIsRelative)
-BOOL WINAPI PathIsRootA(LPCSTR);
-BOOL WINAPI PathIsRootW(LPCWSTR);
+BOOL WINAPI PathIsRootA(_In_ LPCSTR);
+BOOL WINAPI PathIsRootW(_In_ LPCWSTR);
#define PathIsRoot WINELIB_NAME_AW(PathIsRoot)
-BOOL WINAPI PathIsSameRootA(LPCSTR,LPCSTR);
-BOOL WINAPI PathIsSameRootW(LPCWSTR,LPCWSTR);
+BOOL WINAPI PathIsSameRootA(_In_ LPCSTR, _In_ LPCSTR);
+BOOL WINAPI PathIsSameRootW(_In_ LPCWSTR, _In_ LPCWSTR);
#define PathIsSameRoot WINELIB_NAME_AW(PathIsSameRoot)
-BOOL WINAPI PathIsUNCA(LPCSTR);
-BOOL WINAPI PathIsUNCW(LPCWSTR);
+BOOL WINAPI PathIsUNCA(_In_ LPCSTR);
+BOOL WINAPI PathIsUNCW(_In_ LPCWSTR);
#define PathIsUNC WINELIB_NAME_AW(PathIsUNC)
-BOOL WINAPI PathIsUNCServerA(LPCSTR);
-BOOL WINAPI PathIsUNCServerW(LPCWSTR);
+BOOL WINAPI PathIsUNCServerA(_In_ LPCSTR);
+BOOL WINAPI PathIsUNCServerW(_In_ LPCWSTR);
#define PathIsUNCServer WINELIB_NAME_AW(PathIsUNCServer)
-BOOL WINAPI PathIsUNCServerShareA(LPCSTR);
-BOOL WINAPI PathIsUNCServerShareW(LPCWSTR);
+BOOL WINAPI PathIsUNCServerShareA(_In_ LPCSTR);
+BOOL WINAPI PathIsUNCServerShareW(_In_ LPCWSTR);
#define PathIsUNCServerShare WINELIB_NAME_AW(PathIsUNCServerShare)
-BOOL WINAPI PathIsContentTypeA(LPCSTR,LPCSTR);
-BOOL WINAPI PathIsContentTypeW(LPCWSTR,LPCWSTR);
+BOOL WINAPI PathIsContentTypeA(_In_ LPCSTR, _In_ LPCSTR);
+BOOL WINAPI PathIsContentTypeW(_In_ LPCWSTR, _In_ LPCWSTR);
#define PathIsContentType WINELIB_NAME_AW(PathIsContentType)
-BOOL WINAPI PathIsURLA(LPCSTR);
-BOOL WINAPI PathIsURLW(LPCWSTR);
+BOOL WINAPI PathIsURLA(_In_ LPCSTR);
+BOOL WINAPI PathIsURLW(_In_ LPCWSTR);
#define PathIsURL WINELIB_NAME_AW(PathIsURL)
-BOOL WINAPI PathMakePrettyA(LPSTR);
-BOOL WINAPI PathMakePrettyW(LPWSTR);
+BOOL WINAPI PathMakePrettyA(_Inout_ LPSTR);
+BOOL WINAPI PathMakePrettyW(_Inout_ LPWSTR);
#define PathMakePretty WINELIB_NAME_AW(PathMakePretty)
-BOOL WINAPI PathMatchSpecA(LPCSTR,LPCSTR);
-BOOL WINAPI PathMatchSpecW(LPCWSTR,LPCWSTR);
+BOOL WINAPI PathMatchSpecA(_In_ LPCSTR, _In_ LPCSTR);
+BOOL WINAPI PathMatchSpecW(_In_ LPCWSTR, _In_ LPCWSTR);
#define PathMatchSpec WINELIB_NAME_AW(PathMatchSpec)
-int WINAPI PathParseIconLocationA(LPSTR);
-int WINAPI PathParseIconLocationW(LPWSTR);
+int WINAPI PathParseIconLocationA(_Inout_ LPSTR);
+int WINAPI PathParseIconLocationW(_Inout_ LPWSTR);
#define PathParseIconLocation WINELIB_NAME_AW(PathParseIconLocation)
-VOID WINAPI PathQuoteSpacesA(LPSTR);
-VOID WINAPI PathQuoteSpacesW(LPWSTR);
+VOID WINAPI PathQuoteSpacesA(_Inout_updates_(MAX_PATH) LPSTR);
+VOID WINAPI PathQuoteSpacesW(_Inout_updates_(MAX_PATH) LPWSTR);
#define PathQuoteSpaces WINELIB_NAME_AW(PathQuoteSpaces)
-BOOL WINAPI PathRelativePathToA(LPSTR,LPCSTR,DWORD,LPCSTR,DWORD);
-BOOL WINAPI PathRelativePathToW(LPWSTR,LPCWSTR,DWORD,LPCWSTR,DWORD);
+BOOL
+WINAPI
+PathRelativePathToA(
+ _Out_writes_(MAX_PATH) LPSTR,
+ _In_ LPCSTR,
+ _In_ DWORD,
+ _In_ LPCSTR,
+ _In_ DWORD);
+
+BOOL
+WINAPI
+PathRelativePathToW(
+ _Out_writes_(MAX_PATH) LPWSTR,
+ _In_ LPCWSTR,
+ _In_ DWORD,
+ _In_ LPCWSTR,
+ _In_ DWORD);
+
#define PathRelativePathTo WINELIB_NAME_AW(PathRelativePathTo)
-VOID WINAPI PathRemoveArgsA(LPSTR);
-VOID WINAPI PathRemoveArgsW(LPWSTR);
+VOID WINAPI PathRemoveArgsA(_Inout_ LPSTR);
+VOID WINAPI PathRemoveArgsW(_Inout_ LPWSTR);
#define PathRemoveArgs WINELIB_NAME_AW(PathRemoveArgs)
-LPSTR WINAPI PathRemoveBackslashA(LPSTR);
-LPWSTR WINAPI PathRemoveBackslashW(LPWSTR);
+LPSTR WINAPI PathRemoveBackslashA(_Inout_ LPSTR);
+LPWSTR WINAPI PathRemoveBackslashW(_Inout_ LPWSTR);
#define PathRemoveBackslash WINELIB_NAME_AW(PathRemoveBackslash)
-VOID WINAPI PathRemoveBlanksA(LPSTR);
-VOID WINAPI PathRemoveBlanksW(LPWSTR);
+VOID WINAPI PathRemoveBlanksA(_Inout_ LPSTR);
+VOID WINAPI PathRemoveBlanksW(_Inout_ LPWSTR);
#define PathRemoveBlanks WINELIB_NAME_AW(PathRemoveBlanks)
-VOID WINAPI PathRemoveExtensionA(LPSTR);
-VOID WINAPI PathRemoveExtensionW(LPWSTR);
+VOID WINAPI PathRemoveExtensionA(_Inout_ LPSTR);
+VOID WINAPI PathRemoveExtensionW(_Inout_ LPWSTR);
#define PathRemoveExtension WINELIB_NAME_AW(PathRemoveExtension)
-BOOL WINAPI PathRemoveFileSpecA(LPSTR);
-BOOL WINAPI PathRemoveFileSpecW(LPWSTR);
+BOOL WINAPI PathRemoveFileSpecA(_Inout_ LPSTR);
+BOOL WINAPI PathRemoveFileSpecW(_Inout_ LPWSTR);
#define PathRemoveFileSpec WINELIB_NAME_AW(PathRemoveFileSpec)
-BOOL WINAPI PathRenameExtensionA(LPSTR,LPCSTR);
-BOOL WINAPI PathRenameExtensionW(LPWSTR,LPCWSTR);
+BOOL
+WINAPI
+PathRenameExtensionA(
+ _Inout_updates_(MAX_PATH) LPSTR,
+ _In_ LPCSTR);
+
+BOOL
+WINAPI
+PathRenameExtensionW(
+ _Inout_updates_(MAX_PATH) LPWSTR,
+ _In_ LPCWSTR);
+
#define PathRenameExtension WINELIB_NAME_AW(PathRenameExtension)
-BOOL WINAPI PathSearchAndQualifyA(LPCSTR,LPSTR,UINT);
-BOOL WINAPI PathSearchAndQualifyW(LPCWSTR,LPWSTR,UINT);
+BOOL
+WINAPI
+PathSearchAndQualifyA(
+ _In_ LPCSTR,
+ _Out_writes_(cchBuf) LPSTR,
+ _In_ UINT cchBuf);
+
+BOOL
+WINAPI
+PathSearchAndQualifyW(
+ _In_ LPCWSTR,
+ _Out_writes_(cchBuf) LPWSTR,
+ _In_ UINT cchBuf);
+
#define PathSearchAndQualify WINELIB_NAME_AW(PathSearchAndQualify)
-VOID WINAPI PathSetDlgItemPathA(HWND,int,LPCSTR);
-VOID WINAPI PathSetDlgItemPathW(HWND,int,LPCWSTR);
+VOID WINAPI PathSetDlgItemPathA(_In_ HWND, int, LPCSTR);
+VOID WINAPI PathSetDlgItemPathW(_In_ HWND, int, LPCWSTR);
#define PathSetDlgItemPath WINELIB_NAME_AW(PathSetDlgItemPath)
-LPSTR WINAPI PathSkipRootA(LPCSTR);
-LPWSTR WINAPI PathSkipRootW(LPCWSTR);
+LPSTR WINAPI PathSkipRootA(_In_ LPCSTR);
+LPWSTR WINAPI PathSkipRootW(_In_ LPCWSTR);
#define PathSkipRoot WINELIB_NAME_AW(PathSkipRoot)
-VOID WINAPI PathStripPathA(LPSTR);
-VOID WINAPI PathStripPathW(LPWSTR);
+VOID WINAPI PathStripPathA(_Inout_ LPSTR);
+VOID WINAPI PathStripPathW(_Inout_ LPWSTR);
#define PathStripPath WINELIB_NAME_AW(PathStripPath)
-BOOL WINAPI PathStripToRootA(LPSTR);
-BOOL WINAPI PathStripToRootW(LPWSTR);
+BOOL WINAPI PathStripToRootA(_Inout_ LPSTR);
+BOOL WINAPI PathStripToRootW(_Inout_ LPWSTR);
#define PathStripToRoot WINELIB_NAME_AW(PathStripToRoot)
-VOID WINAPI PathUnquoteSpacesA(LPSTR);
-VOID WINAPI PathUnquoteSpacesW(LPWSTR);
+VOID WINAPI PathUnquoteSpacesA(_Inout_ LPSTR);
+VOID WINAPI PathUnquoteSpacesW(_Inout_ LPWSTR);
#define PathUnquoteSpaces WINELIB_NAME_AW(PathUnquoteSpaces)
-BOOL WINAPI PathMakeSystemFolderA(LPCSTR);
-BOOL WINAPI PathMakeSystemFolderW(LPCWSTR);
+BOOL WINAPI PathMakeSystemFolderA(_In_ LPCSTR);
+BOOL WINAPI PathMakeSystemFolderW(_In_ LPCWSTR);
#define PathMakeSystemFolder WINELIB_NAME_AW(PathMakeSystemFolder)
-BOOL WINAPI PathUnmakeSystemFolderA(LPCSTR);
-BOOL WINAPI PathUnmakeSystemFolderW(LPCWSTR);
+BOOL WINAPI PathUnmakeSystemFolderA(_In_ LPCSTR);
+BOOL WINAPI PathUnmakeSystemFolderW(_In_ LPCWSTR);
#define PathUnmakeSystemFolder WINELIB_NAME_AW(PathUnmakeSystemFolder)
-BOOL WINAPI PathIsSystemFolderA(LPCSTR,DWORD);
-BOOL WINAPI PathIsSystemFolderW(LPCWSTR,DWORD);
+BOOL WINAPI PathIsSystemFolderA(_In_opt_ LPCSTR, _In_ DWORD);
+BOOL WINAPI PathIsSystemFolderW(_In_opt_ LPCWSTR, _In_ DWORD);
#define PathIsSystemFolder WINELIB_NAME_AW(PathIsSystemFolder)
-BOOL WINAPI PathIsNetworkPathA(LPCSTR);
-BOOL WINAPI PathIsNetworkPathW(LPCWSTR);
+BOOL WINAPI PathIsNetworkPathA(_In_ LPCSTR);
+BOOL WINAPI PathIsNetworkPathW(_In_ LPCWSTR);
#define PathIsNetworkPath WINELIB_NAME_AW(PathIsNetworkPath)
-BOOL WINAPI PathIsLFNFileSpecA(LPCSTR);
-BOOL WINAPI PathIsLFNFileSpecW(LPCWSTR);
+BOOL WINAPI PathIsLFNFileSpecA(_In_ LPCSTR);
+BOOL WINAPI PathIsLFNFileSpecW(_In_ LPCWSTR);
#define PathIsLFNFileSpec WINELIB_NAME_AW(PathIsLFNFileSpec)
-LPCSTR WINAPI PathFindSuffixArrayA(LPCSTR,LPCSTR *,int);
-LPCWSTR WINAPI PathFindSuffixArrayW(LPCWSTR,LPCWSTR *,int);
+LPCSTR
+WINAPI
+PathFindSuffixArrayA(
+ _In_ LPCSTR,
+ _In_reads_(iArraySize) LPCSTR *,
+ int iArraySize);
+
+LPCWSTR
+WINAPI
+PathFindSuffixArrayW(
+ _In_ LPCWSTR,
+ _In_reads_(iArraySize) LPCWSTR *,
+ int iArraySize);
+
#define PathFindSuffixArray WINELIB_NAME_AW(PathFindSuffixArray)
-VOID WINAPI PathUndecorateA(LPSTR);
-VOID WINAPI PathUndecorateW(LPWSTR);
+VOID WINAPI PathUndecorateA(_Inout_ LPSTR);
+VOID WINAPI PathUndecorateW(_Inout_ LPWSTR);
#define PathUndecorate WINELIB_NAME_AW(PathUndecorate)
-BOOL WINAPI PathUnExpandEnvStringsA(LPCSTR,LPSTR,UINT);
-BOOL WINAPI PathUnExpandEnvStringsW(LPCWSTR,LPWSTR,UINT);
+BOOL
+WINAPI
+PathUnExpandEnvStringsA(
+ _In_ LPCSTR,
+ _Out_writes_(cchBuf) LPSTR,
+ _In_ UINT cchBuf);
+
+BOOL
+WINAPI
+PathUnExpandEnvStringsW(
+ _In_ LPCWSTR,
+ _Out_writes_(cchBuf) LPWSTR,
+ _In_ UINT cchBuf);
+
#define PathUnExpandEnvStrings WINELIB_NAME_AW(PathUnExpandEnvStrings)
/* Url functions */
#define URL_ESCAPE_SEGMENT_ONLY 0x00002000
#define URL_ESCAPE_PERCENT 0x00001000
-HRESULT WINAPI UrlApplySchemeA(LPCSTR,LPSTR,LPDWORD,DWORD);
-HRESULT WINAPI UrlApplySchemeW(LPCWSTR,LPWSTR,LPDWORD,DWORD);
+HRESULT
+WINAPI
+UrlApplySchemeA(
+ _In_ LPCSTR,
+ _Out_writes_(*pcchOut) LPSTR,
+ _Inout_ LPDWORD pcchOut,
+ DWORD);
+
+HRESULT
+WINAPI
+UrlApplySchemeW(
+ _In_ LPCWSTR,
+ _Out_writes_(*pcchOut) LPWSTR,
+ _Inout_ LPDWORD pcchOut,
+ DWORD);
+
#define UrlApplyScheme WINELIB_NAME_AW(UrlApplyScheme)
-HRESULT WINAPI UrlCanonicalizeA(LPCSTR,LPSTR,LPDWORD,DWORD);
-HRESULT WINAPI UrlCanonicalizeW(LPCWSTR,LPWSTR,LPDWORD,DWORD);
+HRESULT
+WINAPI
+UrlCanonicalizeA(
+ _In_ LPCSTR,
+ _Out_writes_to_(*pcchCanonicalized, *pcchCanonicalized) LPSTR,
+ _Inout_ LPDWORD pcchCanonicalized,
+ DWORD);
+
+HRESULT
+WINAPI
+UrlCanonicalizeW(
+ _In_ LPCWSTR,
+ _Out_writes_to_(*pcchCanonicalized, *pcchCanonicalized) LPWSTR,
+ _Inout_ LPDWORD pcchCanonicalized,
+ DWORD);
+
#define UrlCanonicalize WINELIB_NAME_AW(UrlCanonicalize)
-HRESULT WINAPI UrlCombineA(LPCSTR,LPCSTR,LPSTR,LPDWORD,DWORD);
-HRESULT WINAPI UrlCombineW(LPCWSTR,LPCWSTR,LPWSTR,LPDWORD,DWORD);
+HRESULT
+WINAPI
+UrlCombineA(
+ _In_ LPCSTR,
+ _In_ LPCSTR,
+ _Out_writes_to_opt_(*pcchCombined, *pcchCombined) LPSTR,
+ _Inout_ LPDWORD pcchCombined,
+ DWORD);
+
+HRESULT
+WINAPI
+UrlCombineW(
+ _In_ LPCWSTR,
+ _In_ LPCWSTR,
+ _Out_writes_to_opt_(*pcchCombined, *pcchCombined) LPWSTR,
+ _Inout_ LPDWORD pcchCombined,
+ DWORD);
+
#define UrlCombine WINELIB_NAME_AW(UrlCombine)
-INT WINAPI UrlCompareA(LPCSTR,LPCSTR,BOOL);
-INT WINAPI UrlCompareW(LPCWSTR,LPCWSTR,BOOL);
+INT WINAPI UrlCompareA(_In_ LPCSTR, _In_ LPCSTR, BOOL);
+INT WINAPI UrlCompareW(_In_ LPCWSTR, _In_ LPCWSTR, BOOL);
#define UrlCompare WINELIB_NAME_AW(UrlCompare)
-HRESULT WINAPI UrlEscapeA(LPCSTR,LPSTR,LPDWORD,DWORD);
-HRESULT WINAPI UrlEscapeW(LPCWSTR,LPWSTR,LPDWORD,DWORD);
+HRESULT
+WINAPI
+UrlEscapeA(
+ _In_ LPCSTR,
+ _Out_writes_to_(*pcchEscaped, *pcchEscaped) LPSTR,
+ _Inout_ LPDWORD pcchEscaped,
+ DWORD);
+
+HRESULT
+WINAPI
+UrlEscapeW(
+ _In_ LPCWSTR,
+ _Out_writes_to_(*pcchEscaped, *pcchEscaped) LPWSTR,
+ _Inout_ LPDWORD pcchEscaped,
+ DWORD);
+
#define UrlEscape WINELIB_NAME_AW(UrlEscape)
#define UrlEscapeSpacesA(x,y,z) UrlCanonicalizeA(x, y, z, \
URL_DONT_ESCAPE_EXTRA_INFO|URL_ESCAPE_SPACES_ONLY)
#define UrlEscapeSpaces WINELIB_NAME_AW(UrlEscapeSpaces)
-LPCSTR WINAPI UrlGetLocationA(LPCSTR);
-LPCWSTR WINAPI UrlGetLocationW(LPCWSTR);
+LPCSTR WINAPI UrlGetLocationA(_In_ LPCSTR);
+LPCWSTR WINAPI UrlGetLocationW(_In_ LPCWSTR);
#define UrlGetLocation WINELIB_NAME_AW(UrlGetLocation)
-HRESULT WINAPI UrlGetPartA(LPCSTR,LPSTR,LPDWORD,DWORD,DWORD);
-HRESULT WINAPI UrlGetPartW(LPCWSTR,LPWSTR,LPDWORD,DWORD,DWORD);
+HRESULT
+WINAPI
+UrlGetPartA(
+ _In_ LPCSTR,
+ _Out_writes_(*pcchOut) LPSTR,
+ _Inout_ LPDWORD pcchOut,
+ DWORD,
+ DWORD);
+
+HRESULT
+WINAPI
+UrlGetPartW(
+ _In_ LPCWSTR,
+ _Out_writes_(*pcchOut) LPWSTR,
+ _Inout_ LPDWORD pcchOut,
+ DWORD,
+ DWORD);
+
#define UrlGetPart WINELIB_NAME_AW(UrlGetPart)
-HRESULT WINAPI HashData(const unsigned char *,DWORD,unsigned char *lpDest,DWORD);
+HRESULT
+WINAPI
+HashData(
+ _In_reads_bytes_(cbData) const unsigned char *,
+ DWORD cbData,
+ _Out_writes_bytes_(cbHash) unsigned char *lpDest,
+ DWORD cbHash);
+
+HRESULT
+WINAPI
+UrlHashA(
+ _In_ LPCSTR,
+ _Out_writes_bytes_(cbHash) unsigned char *,
+ DWORD cbHash);
+
+HRESULT
+WINAPI
+UrlHashW(
+ _In_ LPCWSTR,
+ _Out_writes_bytes_(cbHash) unsigned char *,
+ DWORD cbHash);
-HRESULT WINAPI UrlHashA(LPCSTR,unsigned char *,DWORD);
-HRESULT WINAPI UrlHashW(LPCWSTR,unsigned char *,DWORD);
#define UrlHash WINELIB_NAME_AW(UrlHash)
-BOOL WINAPI UrlIsA(LPCSTR,URLIS);
-BOOL WINAPI UrlIsW(LPCWSTR,URLIS);
+BOOL WINAPI UrlIsA(_In_ LPCSTR, URLIS);
+BOOL WINAPI UrlIsW(_In_ LPCWSTR, URLIS);
#define UrlIs WINELIB_NAME_AW(UrlIs)
-BOOL WINAPI UrlIsNoHistoryA(LPCSTR);
-BOOL WINAPI UrlIsNoHistoryW(LPCWSTR);
+BOOL WINAPI UrlIsNoHistoryA(_In_ LPCSTR);
+BOOL WINAPI UrlIsNoHistoryW(_In_ LPCWSTR);
#define UrlIsNoHistory WINELIB_NAME_AW(UrlIsNoHistory)
-BOOL WINAPI UrlIsOpaqueA(LPCSTR);
-BOOL WINAPI UrlIsOpaqueW(LPCWSTR);
+BOOL WINAPI UrlIsOpaqueA(_In_ LPCSTR);
+BOOL WINAPI UrlIsOpaqueW(_In_ LPCWSTR);
#define UrlIsOpaque WINELIB_NAME_AW(UrlIsOpaque)
#define UrlIsFileUrlA(x) UrlIsA(x, URLIS_FILEURL)
-#define UrlIsFileUrlW(y) UrlIsW(x, URLIS_FILEURL)
+#define UrlIsFileUrlW(x) UrlIsW(x, URLIS_FILEURL)
#define UrlIsFileUrl WINELIB_NAME_AW(UrlIsFileUrl)
-HRESULT WINAPI UrlUnescapeA(LPSTR,LPSTR,LPDWORD,DWORD);
-HRESULT WINAPI UrlUnescapeW(LPWSTR,LPWSTR,LPDWORD,DWORD);
+HRESULT
+WINAPI
+UrlUnescapeA(
+ _Inout_ LPSTR,
+ _Out_writes_to_opt_(*pcchUnescaped, *pcchUnescaped) LPSTR,
+ _Inout_opt_ LPDWORD pcchUnescaped,
+ DWORD);
+
+HRESULT
+WINAPI
+UrlUnescapeW(
+ _Inout_ LPWSTR,
+ _Out_writes_to_opt_(*pcchUnescaped, *pcchUnescaped) LPWSTR,
+ _Inout_opt_ LPDWORD pcchUnescaped,
+ DWORD);
+
#define UrlUnescape WINELIB_NAME_AW(UrlUnescape)
#define UrlUnescapeInPlaceA(x,y) UrlUnescapeA(x, NULL, NULL, \
y | URL_UNESCAPE_INPLACE)
#define UrlUnescapeInPlace WINELIB_NAME_AW(UrlUnescapeInPlace)
-HRESULT WINAPI UrlCreateFromPathA(LPCSTR,LPSTR,LPDWORD,DWORD);
-HRESULT WINAPI UrlCreateFromPathW(LPCWSTR,LPWSTR,LPDWORD,DWORD);
+HRESULT
+WINAPI
+UrlCreateFromPathA(
+ _In_ LPCSTR,
+ _Out_writes_to_(*pcchUrl, *pcchUrl) LPSTR,
+ _Inout_ LPDWORD pcchUrl,
+ DWORD);
+
+HRESULT
+WINAPI
+UrlCreateFromPathW(
+ _In_ LPCWSTR,
+ _Out_writes_to_(*pcchUrl, *pcchUrl) LPWSTR,
+ _Inout_ LPDWORD pcchUrl,
+ DWORD);
+
#define UrlCreateFromPath WINELIB_NAME_AW(UrlCreateFromPath)
typedef struct tagPARSEDURLA {
UINT nScheme;
} PARSEDURLW, *PPARSEDURLW;
-HRESULT WINAPI ParseURLA(LPCSTR pszUrl, PARSEDURLA *ppu);
-HRESULT WINAPI ParseURLW(LPCWSTR pszUrl, PARSEDURLW *ppu);
+HRESULT WINAPI ParseURLA(_In_ LPCSTR pszUrl, _Inout_ PARSEDURLA *ppu);
+HRESULT WINAPI ParseURLW(_In_ LPCWSTR pszUrl, _Inout_ PARSEDURLW *ppu);
#define ParseURL WINELIB_NAME_AW(ParseUrl)
#endif /* NO_SHLWAPI_PATH */
BOOL WINAPI ChrCmpIW (WCHAR,WCHAR);
#define ChrCmpI WINELIB_NAME_AW(ChrCmpI)
-INT WINAPI StrCSpnA(LPCSTR,LPCSTR);
-INT WINAPI StrCSpnW(LPCWSTR,LPCWSTR);
+INT WINAPI StrCSpnA(_In_ LPCSTR, _In_ LPCSTR);
+INT WINAPI StrCSpnW(_In_ LPCWSTR, _In_ LPCWSTR);
#define StrCSpn WINELIB_NAME_AW(StrCSpn)
-INT WINAPI StrCSpnIA(LPCSTR,LPCSTR);
-INT WINAPI StrCSpnIW(LPCWSTR,LPCWSTR);
+INT WINAPI StrCSpnIA(_In_ LPCSTR, _In_ LPCSTR);
+INT WINAPI StrCSpnIW(_In_ LPCWSTR, _In_ LPCWSTR);
#define StrCSpnI WINELIB_NAME_AW(StrCSpnI)
#define StrCatA lstrcatA
-LPWSTR WINAPI StrCatW(LPWSTR,LPCWSTR);
+LPWSTR WINAPI StrCatW(_Inout_ LPWSTR, _In_ LPCWSTR);
#define StrCat WINELIB_NAME_AW(StrCat)
-LPSTR WINAPI StrCatBuffA(LPSTR,LPCSTR,INT);
-LPWSTR WINAPI StrCatBuffW(LPWSTR,LPCWSTR,INT);
+LPSTR
+WINAPI
+StrCatBuffA(
+ _Inout_updates_(cchDestBuffSize) LPSTR,
+ _In_ LPCSTR,
+ INT cchDestBuffSize);
+
+LPWSTR
+WINAPI
+StrCatBuffW(
+ _Inout_updates_(cchDestBuffSize) LPWSTR,
+ _In_ LPCWSTR,
+ INT cchDestBuffSize);
+
#define StrCatBuff WINELIB_NAME_AW(StrCatBuff)
-DWORD WINAPI StrCatChainW(LPWSTR,DWORD,DWORD,LPCWSTR);
+DWORD
+WINAPI
+StrCatChainW(
+ _Out_writes_(cchDst) LPWSTR,
+ DWORD cchDst,
+ DWORD,
+ _In_ LPCWSTR);
-LPSTR WINAPI StrChrA(LPCSTR,WORD);
-LPWSTR WINAPI StrChrW(LPCWSTR,WCHAR);
+LPSTR WINAPI StrChrA(_In_ LPCSTR, WORD);
+LPWSTR WINAPI StrChrW(_In_ LPCWSTR, WCHAR);
#define StrChr WINELIB_NAME_AW(StrChr)
-LPSTR WINAPI StrChrIA(LPCSTR,WORD);
-LPWSTR WINAPI StrChrIW(LPCWSTR,WCHAR);
+LPSTR WINAPI StrChrIA(_In_ LPCSTR, WORD);
+LPWSTR WINAPI StrChrIW(_In_ LPCWSTR, WCHAR);
#define StrChrI WINELIB_NAME_AW(StrChrI)
#define StrCmpA lstrcmpA
-int WINAPI StrCmpW(LPCWSTR,LPCWSTR);
+int WINAPI StrCmpW(_In_ LPCWSTR, _In_ LPCWSTR);
#define StrCmp WINELIB_NAME_AW(StrCmp)
#define StrCmpIA lstrcmpiA
-int WINAPI StrCmpIW(LPCWSTR,LPCWSTR);
+int WINAPI StrCmpIW(_In_ LPCWSTR, _In_ LPCWSTR);
#define StrCmpI WINELIB_NAME_AW(StrCmpI)
#define StrCpyA lstrcpyA
-LPWSTR WINAPI StrCpyW(LPWSTR,LPCWSTR);
+LPWSTR WINAPI StrCpyW(_Out_ LPWSTR, _In_ LPCWSTR);
#define StrCpy WINELIB_NAME_AW(StrCpy)
#define StrCpyNA lstrcpynA
-LPWSTR WINAPI StrCpyNW(LPWSTR,LPCWSTR,int);
+LPWSTR WINAPI StrCpyNW(_Out_writes_(cchMax) LPWSTR, _In_ LPCWSTR, int cchMax);
#define StrCpyN WINELIB_NAME_AW(StrCpyN)
#define StrNCpy WINELIB_NAME_AW(StrCpyN)
-INT WINAPI StrCmpLogicalW(LPCWSTR,LPCWSTR);
+INT WINAPI StrCmpLogicalW(_In_ LPCWSTR, _In_ LPCWSTR);
-INT WINAPI StrCmpNA(LPCSTR,LPCSTR,INT);
-INT WINAPI StrCmpNW(LPCWSTR,LPCWSTR,INT);
+INT WINAPI StrCmpNA(_In_ LPCSTR, _In_ LPCSTR, INT);
+INT WINAPI StrCmpNW(_In_ LPCWSTR, _In_ LPCWSTR, INT);
#define StrCmpN WINELIB_NAME_AW(StrCmpN)
#define StrNCmp WINELIB_NAME_AW(StrCmpN)
-INT WINAPI StrCmpNIA(LPCSTR,LPCSTR,INT);
-INT WINAPI StrCmpNIW(LPCWSTR,LPCWSTR,INT);
+INT WINAPI StrCmpNIA(_In_ LPCSTR, _In_ LPCSTR, INT);
+INT WINAPI StrCmpNIW(_In_ LPCWSTR, _In_ LPCWSTR, INT);
#define StrCmpNI WINELIB_NAME_AW(StrCmpNI)
#define StrNCmpI WINELIB_NAME_AW(StrCmpNI)
-LPSTR WINAPI StrDupA(LPCSTR);
-LPWSTR WINAPI StrDupW(LPCWSTR);
+LPSTR WINAPI StrDupA(_In_ LPCSTR);
+LPWSTR WINAPI StrDupW(_In_ LPCWSTR);
#define StrDup WINELIB_NAME_AW(StrDup)
-HRESULT WINAPI SHStrDupA(LPCSTR,WCHAR**);
-HRESULT WINAPI SHStrDupW(LPCWSTR,WCHAR**);
+HRESULT WINAPI SHStrDupA(_In_ LPCSTR, _Outptr_ WCHAR**);
+HRESULT WINAPI SHStrDupW(_In_ LPCWSTR, _Outptr_ WCHAR**);
#define SHStrDup WINELIB_NAME_AW(SHStrDup)
-LPSTR WINAPI StrFormatByteSizeA (DWORD,LPSTR,UINT);
+LPSTR
+WINAPI
+StrFormatByteSizeA(
+ DWORD,
+ _Out_writes_(cchBuf) LPSTR,
+ UINT cchBuf);
/* A/W Pairing is broken for this function */
-LPSTR WINAPI StrFormatByteSize64A (LONGLONG,LPSTR,UINT);
-LPWSTR WINAPI StrFormatByteSizeW (LONGLONG,LPWSTR,UINT);
+
+LPSTR
+WINAPI
+StrFormatByteSize64A(
+ LONGLONG,
+ _Out_writes_(cchBuf) LPSTR,
+ UINT cchBuf);
+
+LPWSTR
+WINAPI
+StrFormatByteSizeW(
+ LONGLONG,
+ _Out_writes_(cchBuf) LPWSTR,
+ UINT cchBuf);
+
#ifndef WINE_NO_UNICODE_MACROS
#ifdef UNICODE
#define StrFormatByteSize StrFormatByteSizeW
#endif
#endif
-LPSTR WINAPI StrFormatKBSizeA(LONGLONG,LPSTR,UINT);
-LPWSTR WINAPI StrFormatKBSizeW(LONGLONG,LPWSTR,UINT);
+LPSTR
+WINAPI
+StrFormatKBSizeA(
+ LONGLONG,
+ _Out_writes_(cchBuf) LPSTR,
+ UINT cchBuf);
+
+LPWSTR
+WINAPI
+StrFormatKBSizeW(
+ LONGLONG,
+ _Out_writes_(cchBuf) LPWSTR,
+ UINT cchBuf);
+
#define StrFormatKBSize WINELIB_NAME_AW(StrFormatKBSize)
-int WINAPI StrFromTimeIntervalA(LPSTR,UINT,DWORD,int);
-int WINAPI StrFromTimeIntervalW(LPWSTR,UINT,DWORD,int);
+int
+WINAPI
+StrFromTimeIntervalA(
+ _Out_writes_(cchMax) LPSTR,
+ UINT cchMax,
+ DWORD,
+ int);
+
+int
+WINAPI
+StrFromTimeIntervalW(
+ _Out_writes_(cchMax) LPWSTR,
+ UINT cchMax,
+ DWORD,
+ int);
+
#define StrFromTimeInterval WINELIB_NAME_AW(StrFromTimeInterval)
-BOOL WINAPI StrIsIntlEqualA(BOOL,LPCSTR,LPCSTR,int);
-BOOL WINAPI StrIsIntlEqualW(BOOL,LPCWSTR,LPCWSTR,int);
+BOOL WINAPI StrIsIntlEqualA(BOOL, _In_ LPCSTR, _In_ LPCSTR, int);
+BOOL WINAPI StrIsIntlEqualW(BOOL, _In_ LPCWSTR, _In_ LPCWSTR, int);
#define StrIsIntlEqual WINELIB_NAME_AW(StrIsIntlEqual)
#define StrIntlEqNA(a,b,c) StrIsIntlEqualA(TRUE,a,b,c)
#define StrIntlEqNIA(a,b,c) StrIsIntlEqualA(FALSE,a,b,c)
#define StrIntlEqNIW(a,b,c) StrIsIntlEqualW(FALSE,a,b,c)
-LPSTR WINAPI StrNCatA(LPSTR,LPCSTR,int);
-LPWSTR WINAPI StrNCatW(LPWSTR,LPCWSTR,int);
+LPSTR WINAPI StrNCatA(_Inout_updates_(cchMax) LPSTR, LPCSTR, int cchMax);
+LPWSTR WINAPI StrNCatW(_Inout_updates_(cchMax) LPWSTR, LPCWSTR, int cchMax);
#define StrNCat WINELIB_NAME_AW(StrNCat)
#define StrCatN WINELIB_NAME_AW(StrNCat)
-LPSTR WINAPI StrPBrkA(LPCSTR,LPCSTR);
-LPWSTR WINAPI StrPBrkW(LPCWSTR,LPCWSTR);
+LPSTR WINAPI StrPBrkA(_In_ LPCSTR, _In_ LPCSTR);
+LPWSTR WINAPI StrPBrkW(_In_ LPCWSTR, _In_ LPCWSTR);
#define StrPBrk WINELIB_NAME_AW(StrPBrk)
-LPSTR WINAPI StrRChrA(LPCSTR,LPCSTR,WORD);
-LPWSTR WINAPI StrRChrW(LPCWSTR,LPCWSTR,WORD);
+LPSTR WINAPI StrRChrA(_In_ LPCSTR, _In_opt_ LPCSTR, WORD);
+LPWSTR WINAPI StrRChrW(_In_ LPCWSTR, _In_opt_ LPCWSTR, WCHAR);
#define StrRChr WINELIB_NAME_AW(StrRChr)
-LPSTR WINAPI StrRChrIA(LPCSTR,LPCSTR,WORD);
-LPWSTR WINAPI StrRChrIW(LPCWSTR,LPCWSTR,WORD);
+LPSTR WINAPI StrRChrIA(_In_ LPCSTR, _In_opt_ LPCSTR, WORD);
+LPWSTR WINAPI StrRChrIW(_In_ LPCWSTR, _In_opt_ LPCWSTR, WCHAR);
#define StrRChrI WINELIB_NAME_AW(StrRChrI)
-LPSTR WINAPI StrRStrIA(LPCSTR,LPCSTR,LPCSTR);
-LPWSTR WINAPI StrRStrIW(LPCWSTR,LPCWSTR,LPCWSTR);
+LPSTR WINAPI StrRStrIA(_In_ LPCSTR, _In_opt_ LPCSTR, _In_ LPCSTR);
+LPWSTR WINAPI StrRStrIW(_In_ LPCWSTR, _In_opt_ LPCWSTR, _In_ LPCWSTR);
#define StrRStrI WINELIB_NAME_AW(StrRStrI)
-int WINAPI StrSpnA(LPCSTR,LPCSTR);
-int WINAPI StrSpnW(LPCWSTR,LPCWSTR);
+int WINAPI StrSpnA(_In_ LPCSTR, _In_ LPCSTR);
+int WINAPI StrSpnW(_In_ LPCWSTR, _In_ LPCWSTR);
#define StrSpn WINELIB_NAME_AW(StrSpn)
-LPSTR WINAPI StrStrA(LPCSTR,LPCSTR);
-LPWSTR WINAPI StrStrW(LPCWSTR,LPCWSTR);
+LPSTR WINAPI StrStrA(_In_ LPCSTR, _In_ LPCSTR);
+LPWSTR WINAPI StrStrW(_In_ LPCWSTR, _In_ LPCWSTR);
#define StrStr WINELIB_NAME_AW(StrStr)
-LPSTR WINAPI StrStrIA(LPCSTR,LPCSTR);
-LPWSTR WINAPI StrStrIW(LPCWSTR,LPCWSTR);
+LPSTR WINAPI StrStrIA(_In_ LPCSTR, _In_ LPCSTR);
+LPWSTR WINAPI StrStrIW(_In_ LPCWSTR, _In_ LPCWSTR);
#define StrStrI WINELIB_NAME_AW(StrStrI)
-int WINAPI StrToIntA(LPCSTR);
-int WINAPI StrToIntW(LPCWSTR);
+LPWSTR WINAPI StrStrNW(_In_ LPCWSTR, _In_ LPCWSTR, UINT);
+LPWSTR WINAPI StrStrNIW(_In_ LPCWSTR, _In_ LPCWSTR, UINT);
+
+int WINAPI StrToIntA(_In_ LPCSTR);
+int WINAPI StrToIntW(_In_ LPCWSTR);
#define StrToInt WINELIB_NAME_AW(StrToInt)
#define StrToLong WINELIB_NAME_AW(StrToInt)
-BOOL WINAPI StrToIntExA(LPCSTR,DWORD,int*);
-BOOL WINAPI StrToIntExW(LPCWSTR,DWORD,int*);
+BOOL WINAPI StrToIntExA(_In_ LPCSTR, DWORD, _Out_ int*);
+BOOL WINAPI StrToIntExW(_In_ LPCWSTR, DWORD, _Out_ int*);
#define StrToIntEx WINELIB_NAME_AW(StrToIntEx)
-BOOL WINAPI StrToInt64ExA(LPCSTR,DWORD,LONGLONG*);
-BOOL WINAPI StrToInt64ExW(LPCWSTR,DWORD,LONGLONG*);
+BOOL WINAPI StrToInt64ExA(_In_ LPCSTR, DWORD, _Out_ LONGLONG*);
+BOOL WINAPI StrToInt64ExW(_In_ LPCWSTR, DWORD, _Out_ LONGLONG*);
#define StrToIntEx64 WINELIB_NAME_AW(StrToIntEx64)
-BOOL WINAPI StrTrimA(LPSTR,LPCSTR);
-BOOL WINAPI StrTrimW(LPWSTR,LPCWSTR);
+BOOL WINAPI StrTrimA(_Inout_ LPSTR, _In_ LPCSTR);
+BOOL WINAPI StrTrimW(_Inout_ LPWSTR, _In_ LPCWSTR);
#define StrTrim WINELIB_NAME_AW(StrTrim)
-INT WINAPI wvnsprintfA(LPSTR,INT,LPCSTR,__ms_va_list);
-INT WINAPI wvnsprintfW(LPWSTR,INT,LPCWSTR,__ms_va_list);
+INT
+WINAPI
+wvnsprintfA(
+ _Out_writes_(cchDest) LPSTR,
+ _In_ INT cchDest,
+ _In_ _Printf_format_string_ LPCSTR,
+ _In_ __ms_va_list);
+
+INT
+WINAPI
+wvnsprintfW(
+ _Out_writes_(cchDest) LPWSTR,
+ _In_ INT cchDest,
+ _In_ _Printf_format_string_ LPCWSTR,
+ _In_ __ms_va_list);
+
#define wvnsprintf WINELIB_NAME_AW(wvnsprintf)
-INT WINAPIV wnsprintfA(LPSTR,INT,LPCSTR, ...);
-INT WINAPIV wnsprintfW(LPWSTR,INT,LPCWSTR, ...);
+INT
+WINAPIV
+wnsprintfA(
+ _Out_writes_(cchDest) LPSTR,
+ _In_ INT cchDest,
+ _In_ _Printf_format_string_ LPCSTR,
+ ...);
+
+INT
+WINAPIV
+wnsprintfW(
+ _Out_writes_(cchDest) LPWSTR,
+ _In_ INT cchDest,
+ _In_ _Printf_format_string_ LPCWSTR,
+ ...);
+
#define wnsprintf WINELIB_NAME_AW(wnsprintf)
-HRESULT WINAPI SHLoadIndirectString(LPCWSTR,LPWSTR,UINT,PVOID*);
+HRESULT
+WINAPI
+SHLoadIndirectString(
+ _In_ LPCWSTR,
+ _Out_writes_(cchOutBuf) LPWSTR,
+ _In_ UINT cchOutBuf,
+ _Reserved_ PVOID*);
+
+BOOL
+WINAPI
+IntlStrEqWorkerA(
+ BOOL,
+ _In_reads_(nChar) LPCSTR,
+ _In_reads_(nChar) LPCSTR,
+ int nChar);
+
+BOOL
+WINAPI
+IntlStrEqWorkerW(
+ BOOL,
+ _In_reads_(nChar) LPCWSTR,
+ _In_reads_(nChar) LPCWSTR,
+ int nChar);
-BOOL WINAPI IntlStrEqWorkerA(BOOL,LPCSTR,LPCSTR,int);
-BOOL WINAPI IntlStrEqWorkerW(BOOL,LPCWSTR,LPCWSTR,int);
#define IntlStrEqWorker WINELIB_NAME_AW(IntlStrEqWorker)
#define IntlStrEqNA(s1,s2,n) IntlStrEqWorkerA(TRUE,s1,s2,n)
#define IntlStrEqNIW(s1,s2,n) IntlStrEqWorkerW(FALSE,s1,s2,n)
#define IntlStrEqNI WINELIB_NAME_AW(IntlStrEqNI)
-HRESULT WINAPI StrRetToStrA(STRRET*,LPCITEMIDLIST,LPSTR*);
-HRESULT WINAPI StrRetToStrW(STRRET*,LPCITEMIDLIST,LPWSTR*);
+HRESULT
+WINAPI
+StrRetToStrA(
+ _Inout_ STRRET*,
+ _In_opt_ LPCITEMIDLIST,
+ _Outptr_ LPSTR*);
+
+HRESULT
+WINAPI
+StrRetToStrW(
+ _Inout_ STRRET*,
+ _In_opt_ LPCITEMIDLIST,
+ _Outptr_ LPWSTR*);
+
#define StrRetToStr WINELIB_NAME_AW(StrRetToStr)
-HRESULT WINAPI StrRetToBufA(STRRET*,LPCITEMIDLIST,LPSTR,UINT);
-HRESULT WINAPI StrRetToBufW(STRRET*,LPCITEMIDLIST,LPWSTR,UINT);
+HRESULT
+WINAPI
+StrRetToBufA(
+ _Inout_ STRRET*,
+ _In_opt_ LPCITEMIDLIST,
+ _Out_writes_(cchBuf) LPSTR,
+ UINT cchBuf);
+
+HRESULT
+WINAPI
+StrRetToBufW(
+ _Inout_ STRRET*,
+ _In_opt_ LPCITEMIDLIST,
+ _Out_writes_(cchBuf) LPWSTR,
+ UINT cchBuf);
+
#define StrRetToBuf WINELIB_NAME_AW(StrRetToBuf)
-HRESULT WINAPI StrRetToBSTR(STRRET*,LPCITEMIDLIST,BSTR*);
+HRESULT
+WINAPI
+StrRetToBSTR(
+ _Inout_ STRRET*,
+ _In_opt_ LPCITEMIDLIST,
+ _Outptr_ BSTR*);
+
+BOOL WINAPI IsCharSpaceA(CHAR);
+BOOL WINAPI IsCharSpaceW(WCHAR);
+#define IsCharSpace WINELIB_NAME_AW(IsCharSpace)
#endif /* NO_SHLWAPI_STRFCNS */
/* GDI functions */
#ifndef NO_SHLWAPI_GDI
-HPALETTE WINAPI SHCreateShellPalette(HDC);
+HPALETTE WINAPI SHCreateShellPalette(_In_opt_ HDC);
COLORREF WINAPI ColorHLSToRGB(WORD,WORD,WORD);
COLORREF WINAPI ColorAdjustLuma(COLORREF,int,BOOL);
-VOID WINAPI ColorRGBToHLS(COLORREF,LPWORD,LPWORD,LPWORD);
+VOID WINAPI ColorRGBToHLS(COLORREF, _Out_ LPWORD, _Out_ LPWORD, _Out_ LPWORD);
#endif /* NO_SHLWAPI_GDI */
+/* Security functions */
+BOOL WINAPI IsInternetESCEnabled(void);
/* Stream functions */
#ifndef NO_SHLWAPI_STREAM
-struct IStream * WINAPI SHOpenRegStreamA(HKEY,LPCSTR,LPCSTR,DWORD);
-struct IStream * WINAPI SHOpenRegStreamW(HKEY,LPCWSTR,LPCWSTR,DWORD);
+struct IStream *
+WINAPI
+SHOpenRegStreamA(
+ _In_ HKEY,
+ _In_opt_ LPCSTR,
+ _In_opt_ LPCSTR,
+ _In_ DWORD);
+
+struct IStream *
+WINAPI
+SHOpenRegStreamW(
+ _In_ HKEY,
+ _In_opt_ LPCWSTR,
+ _In_opt_ LPCWSTR,
+ _In_ DWORD);
+
#define SHOpenRegStream WINELIB_NAME_AW(SHOpenRegStream2) /* Uses version 2 */
-struct IStream * WINAPI SHOpenRegStream2A(HKEY,LPCSTR,LPCSTR,DWORD);
-struct IStream * WINAPI SHOpenRegStream2W(HKEY,LPCWSTR,LPCWSTR,DWORD);
+struct IStream *
+WINAPI
+SHOpenRegStream2A(
+ _In_ HKEY,
+ _In_opt_ LPCSTR,
+ _In_opt_ LPCSTR,
+ _In_ DWORD);
+
+struct IStream *
+WINAPI
+SHOpenRegStream2W(
+ _In_ HKEY,
+ _In_opt_ LPCWSTR,
+ _In_opt_ LPCWSTR,
+ _In_ DWORD);
+
#define SHOpenRegStream2 WINELIB_NAME_AW(SHOpenRegStream2)
-HRESULT WINAPI SHCreateStreamOnFileA(LPCSTR,DWORD,struct IStream**);
-HRESULT WINAPI SHCreateStreamOnFileW(LPCWSTR,DWORD,struct IStream**);
+HRESULT
+WINAPI
+SHCreateStreamOnFileA(
+ _In_ LPCSTR,
+ _In_ DWORD,
+ _Outptr_ struct IStream**);
+
+HRESULT
+WINAPI
+SHCreateStreamOnFileW(
+ _In_ LPCWSTR,
+ _In_ DWORD,
+ _Outptr_ struct IStream**);
+
#define SHCreateStreamOnFile WINELIB_NAME_AW(SHCreateStreamOnFile)
-HRESULT WINAPI SHCreateStreamOnFileEx(LPCWSTR,DWORD,DWORD,BOOL,struct IStream*,struct IStream**);
+HRESULT
+WINAPI
+SHCreateStreamOnFileEx(
+ _In_ LPCWSTR,
+ _In_ DWORD,
+ _In_ DWORD,
+ _In_ BOOL,
+ _In_opt_ struct IStream*,
+ _Outptr_ struct IStream**);
HRESULT WINAPI SHCreateStreamWrapper(LPBYTE,DWORD,DWORD,struct IStream**);
#define SHACF_AUTOAPPEND_FORCE_ON 0x40000000
#define SHACF_AUTOAPPEND_FORCE_OFF 0x80000000
-HRESULT WINAPI SHAutoComplete(HWND,DWORD);
+HRESULT WINAPI SHAutoComplete(_In_ HWND, DWORD);
/* Threads */
-HRESULT WINAPI SHGetThreadRef(IUnknown**);
-HRESULT WINAPI SHSetThreadRef(IUnknown*);
+HRESULT WINAPI SHCreateThreadRef(_Inout_ LONG*, _Outptr_ IUnknown**);
+HRESULT WINAPI SHGetThreadRef(_Outptr_ IUnknown**);
+HRESULT WINAPI SHSetThreadRef(_In_opt_ IUnknown*);
HRESULT WINAPI SHReleaseThreadRef(void);
/* SHCreateThread flags */
#define CTF_REF_COUNTED 0x20 /* Thread is ref counted */
#define CTF_WAIT_ALLOWCOM 0x40 /* Allow marshalling */
-BOOL WINAPI SHCreateThread(LPTHREAD_START_ROUTINE,void*,DWORD,LPTHREAD_START_ROUTINE);
+BOOL
+WINAPI
+SHCreateThread(
+ _In_ LPTHREAD_START_ROUTINE,
+ _In_opt_ void*,
+ _In_ DWORD,
+ _In_opt_ LPTHREAD_START_ROUTINE);
-BOOL WINAPI SHSkipJunction(struct IBindCtx*,const CLSID*);
+BOOL WINAPI SHSkipJunction(_In_opt_ struct IBindCtx*, _In_ const CLSID*);
/* Version Information */
#define MAKEDLLVERULL(mjr, mnr, bld, qfe) (((ULONGLONG)(mjr)<< 48)| \
((ULONGLONG)(mnr)<< 32) | ((ULONGLONG)(bld)<< 16) | (ULONGLONG)(qfe))
-HRESULT WINAPI DllInstall(BOOL,LPCWSTR) DECLSPEC_HIDDEN;
+HRESULT WINAPI DllInstall(BOOL, _In_opt_ LPCWSTR) DECLSPEC_HIDDEN;
#if (_WIN32_IE >= 0x0600)
#define SHGVSPB_USERDEFAULTS (SHGVSPB_PERUSER | SHGVSPB_ALLFOLDERS)
#define SHGVSPB_GLOBALDEAFAULTS (SHGVSPB_ALLUSERS | SHGVSPB_ALLFOLDERS)
-HRESULT WINAPI SHGetViewStatePropertyBag(LPCITEMIDLIST pidl, LPWSTR bag_name, DWORD flags, REFIID riid, void **ppv);
+HRESULT
+WINAPI
+SHGetViewStatePropertyBag(
+ _In_opt_ LPCITEMIDLIST pidl,
+ _In_opt_ LPWSTR bag_name,
+ DWORD flags,
+ _In_ REFIID riid,
+ _Outptr_ void **ppv);
+
#endif /* (_WIN32_IE >= 0x0600) */
int dwOffset;
} QITAB, *LPQITAB;
-HRESULT WINAPI QISearch(void* base, const QITAB *pqit, REFIID riid, void **ppv);
+HRESULT
+WINAPI
+QISearch(
+ _Inout_ void* base,
+ _In_ const QITAB *pqit,
+ _In_ REFIID riid,
+ _Outptr_ void **ppv);
#include <poppack.h>
LONG WINAPI SHSetWindowBits(HWND hwnd, INT offset, UINT wMask, UINT wFlags);
HWND WINAPI SHSetParentHwnd(HWND hWnd, HWND hWndParent);
HRESULT WINAPI ConnectToConnectionPoint(IUnknown *lpUnkSink, REFIID riid, BOOL bAdviseOnly, IUnknown *lpUnknown, LPDWORD lpCookie, IConnectionPoint **lppCP);
-DWORD WINAPI IUnknown_AtomicRelease(IUnknown **lpUnknown);
BOOL WINAPI SHIsSameObject(IUnknown *lpInt1, IUnknown *lpInt2);
HRESULT WINAPI IUnknown_GetWindow(IUnknown *lpUnknown, HWND *lphWnd);
HRESULT WINAPI IUnknown_SetOwner(IUnknown *pUnk, ULONG arg);
DWORD WINAPI GetConsoleAliasExesLengthW(VOID);
#endif
-HANDLE WINAPI CreateConsoleScreenBuffer(_In_ DWORD, _In_ DWORD, _In_opt_ CONST SECURITY_ATTRIBUTES*, _In_ DWORD, _Reserved_ LPVOID);
-BOOL WINAPI FillConsoleOutputAttribute(_In_ HANDLE, _In_ WORD, _In_ DWORD, _In_ COORD, _Out_ PDWORD);
-BOOL WINAPI FillConsoleOutputCharacterA(_In_ HANDLE, _In_ CHAR, _In_ DWORD, _In_ COORD, _Out_ PDWORD);
-BOOL WINAPI FillConsoleOutputCharacterW(_In_ HANDLE, _In_ WCHAR, _In_ DWORD, _In_ COORD, _Out_ PDWORD);
+HANDLE
+WINAPI
+CreateConsoleScreenBuffer(
+ _In_ DWORD,
+ _In_ DWORD,
+ _In_opt_ CONST SECURITY_ATTRIBUTES*,
+ _In_ DWORD,
+ _Reserved_ LPVOID);
+
+BOOL
+WINAPI
+FillConsoleOutputAttribute(
+ _In_ HANDLE,
+ _In_ WORD,
+ _In_ DWORD,
+ _In_ COORD,
+ _Out_ PDWORD);
+
+BOOL
+WINAPI
+FillConsoleOutputCharacterA(
+ _In_ HANDLE,
+ _In_ CHAR,
+ _In_ DWORD,
+ _In_ COORD,
+ _Out_ PDWORD);
+
+BOOL
+WINAPI
+FillConsoleOutputCharacterW(
+ _In_ HANDLE,
+ _In_ WCHAR,
+ _In_ DWORD,
+ _In_ COORD,
+ _Out_ PDWORD);
+
BOOL WINAPI FlushConsoleInputBuffer(_In_ HANDLE);
BOOL WINAPI FreeConsole(VOID);
BOOL WINAPI GenerateConsoleCtrlEvent(_In_ DWORD, _In_ DWORD);
UINT WINAPI GetConsoleCP(VOID);
BOOL WINAPI GetConsoleCursorInfo(_In_ HANDLE, _Out_ PCONSOLE_CURSOR_INFO);
-BOOL WINAPI GetConsoleMode(HANDLE,PDWORD);
+BOOL WINAPI GetConsoleMode(_In_ HANDLE, _Out_ PDWORD);
UINT WINAPI GetConsoleOutputCP(VOID);
-BOOL WINAPI GetConsoleScreenBufferInfo(_In_ HANDLE, _Out_ PCONSOLE_SCREEN_BUFFER_INFO);
+
+BOOL
+WINAPI
+GetConsoleScreenBufferInfo(
+ _In_ HANDLE,
+ _Out_ PCONSOLE_SCREEN_BUFFER_INFO);
/* Undocumented, see http://blog.airesoft.co.uk/2012/10/things-ms-can-do-that-they-dont-tell-you-about-console-graphics/ */
BOOL WINAPI InvalidateConsoleDIBits(_In_ HANDLE, _In_ PSMALL_RECT);
_Out_ PCONSOLE_FONT_INFO lpConsoleCurrentFont);
#if (_WIN32_WINNT >= 0x0500)
+
HWND WINAPI GetConsoleWindow(VOID);
BOOL APIENTRY GetConsoleDisplayMode(_Out_ LPDWORD lpModeFlags);
-BOOL APIENTRY SetConsoleDisplayMode(_In_ HANDLE hConsoleOutput, _In_ DWORD dwFlags, _Out_opt_ PCOORD lpNewScreenBufferDimensions);
+
+BOOL
+APIENTRY
+SetConsoleDisplayMode(
+ _In_ HANDLE hConsoleOutput,
+ _In_ DWORD dwFlags,
+ _Out_opt_ PCOORD lpNewScreenBufferDimensions);
+
#endif
+
COORD WINAPI GetLargestConsoleWindowSize(_In_ HANDLE);
-BOOL WINAPI GetNumberOfConsoleInputEvents(HANDLE,PDWORD);
+BOOL WINAPI GetNumberOfConsoleInputEvents(_In_ HANDLE, _Out_ PDWORD);
BOOL WINAPI GetNumberOfConsoleMouseButtons(_Out_ PDWORD);
-BOOL WINAPI PeekConsoleInputA(HANDLE,PINPUT_RECORD,DWORD,PDWORD);
+BOOL
+WINAPI PeekConsoleInputA(
+ _In_ HANDLE hConsoleInput,
+ _Out_writes_(nLength) PINPUT_RECORD lpBuffer,
+ _In_ DWORD nLength,
+ _Out_ LPDWORD lpNumberOfEventsRead);
BOOL
WINAPI
_In_ DWORD nLength,
_Out_ LPDWORD lpNumberOfEventsRead);
-BOOL WINAPI ReadConsoleA(HANDLE,PVOID,DWORD,PDWORD,PCONSOLE_READCONSOLE_CONTROL);
-BOOL WINAPI ReadConsoleW(HANDLE,PVOID,DWORD,PDWORD,PCONSOLE_READCONSOLE_CONTROL);
-BOOL WINAPI ReadConsoleInputA(HANDLE,PINPUT_RECORD,DWORD,PDWORD);
-BOOL WINAPI ReadConsoleInputW(HANDLE,PINPUT_RECORD,DWORD,PDWORD);
+_Success_(return != 0)
+BOOL
+WINAPI
+ReadConsoleA(
+ _In_ HANDLE hConsoleInput,
+ _Out_writes_bytes_to_(nNumberOfCharsToRead * sizeof(CHAR), *lpNumberOfCharsRead * sizeof(CHAR)) LPVOID lpBuffer,
+ _In_ DWORD nNumberOfCharsToRead,
+ _Out_ _Deref_out_range_(<= , nNumberOfCharsToRead) LPDWORD lpNumberOfCharsRead,
+ _In_opt_ PCONSOLE_READCONSOLE_CONTROL pInputControl);
+
+_Success_(return != 0)
+BOOL
+WINAPI
+ReadConsoleW(
+ _In_ HANDLE hConsoleInput,
+ _Out_writes_bytes_to_(nNumberOfCharsToRead * sizeof(WCHAR), *lpNumberOfCharsRead * sizeof(WCHAR)) LPVOID lpBuffer,
+ _In_ DWORD nNumberOfCharsToRead,
+ _Out_ _Deref_out_range_(<= , nNumberOfCharsToRead) LPDWORD lpNumberOfCharsRead,
+ _In_opt_ PCONSOLE_READCONSOLE_CONTROL pInputControl);
+
+_Success_(return != 0)
+BOOL
+WINAPI
+ReadConsoleInputA(
+ _In_ HANDLE hConsoleInput,
+ _Out_writes_to_(nLength, *lpNumberOfEventsRead) PINPUT_RECORD lpBuffer,
+ _In_ DWORD nLength,
+ _Out_ _Deref_out_range_(<= , nLength) LPDWORD lpNumberOfEventsRead);
+
+_Success_(return != 0)
+BOOL
+WINAPI
+ReadConsoleInputW(
+ _In_ HANDLE hConsoleInput,
+ _Out_writes_to_(nLength, *lpNumberOfEventsRead) PINPUT_RECORD lpBuffer,
+ _In_ DWORD nLength,
+ _Out_ _Deref_out_range_(<= , nLength) LPDWORD lpNumberOfEventsRead);
BOOL
WINAPI
_In_ COORD dwBufferCoord,
_Inout_ PSMALL_RECT lpReadRegion);
-BOOL WINAPI ScrollConsoleScreenBufferA(_In_ HANDLE, _In_ const SMALL_RECT*, _In_opt_ const SMALL_RECT*, _In_ COORD, _In_ const CHAR_INFO*);
-BOOL WINAPI ScrollConsoleScreenBufferW(_In_ HANDLE, _In_ const SMALL_RECT*, _In_opt_ const SMALL_RECT*, _In_ COORD, _In_ const CHAR_INFO*);
+BOOL
+WINAPI
+ScrollConsoleScreenBufferA(
+ _In_ HANDLE,
+ _In_ const SMALL_RECT*,
+ _In_opt_ const SMALL_RECT*,
+ _In_ COORD,
+ _In_ const CHAR_INFO*);
+
+BOOL
+WINAPI
+ScrollConsoleScreenBufferW(
+ _In_ HANDLE,
+ _In_ const SMALL_RECT*,
+ _In_opt_ const SMALL_RECT*,
+ _In_ COORD,
+ _In_ const CHAR_INFO*);
+
BOOL WINAPI SetConsoleActiveScreenBuffer(_In_ HANDLE);
BOOL WINAPI SetConsoleCP(_In_ UINT);
-BOOL WINAPI SetConsoleCtrlHandler(PHANDLER_ROUTINE,BOOL);
+BOOL WINAPI SetConsoleCtrlHandler(_In_opt_ PHANDLER_ROUTINE, _In_ BOOL);
BOOL WINAPI SetConsoleCursorInfo(_In_ HANDLE, _In_ const CONSOLE_CURSOR_INFO*);
BOOL WINAPI SetConsoleCursorPosition(_In_ HANDLE, _In_ COORD);
-BOOL WINAPI SetConsoleMode(HANDLE,DWORD);
+BOOL WINAPI SetConsoleMode(_In_ HANDLE, _In_ DWORD);
BOOL WINAPI SetConsoleOutputCP(_In_ UINT);
BOOL WINAPI SetConsoleScreenBufferSize(_In_ HANDLE, _In_ COORD);
BOOL WINAPI SetConsoleTextAttribute(_In_ HANDLE, _In_ WORD);
BOOL WINAPI SetConsoleTitleA(_In_ LPCSTR);
BOOL WINAPI SetConsoleTitleW(_In_ LPCWSTR);
-BOOL WINAPI SetConsoleWindowInfo(_In_ HANDLE, _In_ BOOL, _In_ const SMALL_RECT*);
+
+BOOL
+WINAPI
+SetConsoleWindowInfo(
+ _In_ HANDLE,
+ _In_ BOOL,
+ _In_ const SMALL_RECT*);
/* Undocumented, see http://undoc.airesoft.co.uk/kernel32.dll/ConsoleMenuControl.php */
HMENU WINAPI ConsoleMenuControl(_In_ HANDLE, _In_ DWORD, _In_ DWORD);
/* Undocumented, see http://comments.gmane.org/gmane.comp.lang.harbour.devel/27844 */
BOOL WINAPI SetConsolePalette(_In_ HANDLE, _In_ HPALETTE, _In_ UINT);
-BOOL WINAPI WriteConsoleA(HANDLE,CONST VOID*,DWORD,LPDWORD,LPVOID);
-BOOL WINAPI WriteConsoleW(HANDLE,CONST VOID*,DWORD,LPDWORD,LPVOID);
+BOOL
+WINAPI
+WriteConsoleA(
+ _In_ HANDLE hConsoleOutput,
+ _In_reads_(nNumberOfCharsToWrite) CONST VOID *lpBuffer,
+ _In_ DWORD nNumberOfCharsToWrite,
+ _Out_opt_ LPDWORD lpNumberOfCharsWritten,
+ _Reserved_ LPVOID lpReserved);
+
+BOOL
+WINAPI
+WriteConsoleW(
+ _In_ HANDLE hConsoleOutput,
+ _In_reads_(nNumberOfCharsToWrite) CONST VOID *lpBuffer,
+ _In_ DWORD nNumberOfCharsToWrite,
+ _Out_opt_ LPDWORD lpNumberOfCharsWritten,
+ _Reserved_ LPVOID lpReserved);
BOOL
WINAPI
#ifdef __cplusplus
}
#endif
-#endif
+
+#endif /* _WINCON_H */
SOCKET
PASCAL FAR
accept(
- IN SOCKET s,
- OUT struct sockaddr FAR *addr OPTIONAL,
- IN OUT int FAR *addrlen OPTIONAL);
+ _In_ SOCKET s,
+ _Out_writes_bytes_opt_(*addrlen) struct sockaddr FAR *addr,
+ _Inout_opt_ int FAR *addrlen);
int
PASCAL FAR
bind(
- IN SOCKET s,
- IN const struct sockaddr FAR *addr,
- IN int namelen);
+ _In_ SOCKET s,
+ _In_reads_bytes_(namelen) const struct sockaddr FAR *addr,
+ _In_ int namelen);
int
PASCAL FAR
closesocket(
- IN SOCKET s);
+ _In_ SOCKET s);
int
PASCAL FAR
connect(
- IN SOCKET s,
- IN const struct sockaddr FAR *name,
- IN int namelen);
+ _In_ SOCKET s,
+ _In_reads_bytes_(namelen) const struct sockaddr FAR *name,
+ _In_ int namelen);
int
PASCAL FAR
ioctlsocket(
- IN SOCKET s,
- IN long cmd,
- IN OUT u_long FAR *argp);
+ _In_ SOCKET s,
+ _In_ long cmd,
+ _Inout_ u_long FAR *argp);
int
PASCAL FAR
getpeername(
- IN SOCKET s,
- OUT struct sockaddr FAR *name,
- IN OUT int FAR *namelen);
+ _In_ SOCKET s,
+ _Out_writes_bytes_to_(*namelen, *namelen) struct sockaddr FAR *name,
+ _Inout_ int FAR *namelen);
int
PASCAL FAR
getsockname(
- IN SOCKET s,
- OUT struct sockaddr FAR *name,
- IN OUT int FAR *namelen);
+ _In_ SOCKET s,
+ _Out_writes_bytes_to_(*namelen, *namelen) struct sockaddr FAR *name,
+ _Inout_ int FAR *namelen);
int
PASCAL FAR
getsockopt(
- IN SOCKET s,
- IN int level,
- IN int optname,
- OUT char FAR *optval,
- IN OUT int FAR *optlen);
+ _In_ SOCKET s,
+ _In_ int level,
+ _In_ int optname,
+ _Out_writes_bytes_(*optlen) char FAR *optval,
+ _Inout_ int FAR *optlen);
u_long
PASCAL FAR
htonl(
- IN u_long hostlong);
+ _In_ u_long hostlong);
u_short
PASCAL FAR
htons(
- IN u_short hostshort);
+ _In_ u_short hostshort);
unsigned long
PASCAL FAR
inet_addr(
- IN const char FAR *cp);
+ _In_z_ const char FAR *cp);
char FAR
*PASCAL FAR
inet_ntoa(
- IN struct in_addr in);
+ _In_ struct in_addr in);
int
PASCAL FAR
listen(
- IN SOCKET s,
- IN int backlog);
+ _In_ SOCKET s,
+ _In_ int backlog);
u_long
PASCAL FAR
ntohl(
- IN u_long netlong);
+ _In_ u_long netlong);
u_short
PASCAL FAR
ntohs(
- IN u_short netshort);
+ _In_ u_short netshort);
int
PASCAL FAR
recv(
- IN SOCKET s,
- OUT char FAR *buf,
- IN int len,
- IN int flags);
+ _In_ SOCKET s,
+ _Out_writes_bytes_to_(len, return) __out_data_source(NETWORK) char FAR *buf,
+ _In_ int len,
+ _In_ int flags);
int
PASCAL FAR
recvfrom(
- IN SOCKET s,
- OUT char FAR *buf,
- IN int len,
- IN int flags,
- OUT struct sockaddr FAR *from OPTIONAL,
- IN OUT int FAR * fromlen OPTIONAL);
+ _In_ SOCKET s,
+ _Out_writes_bytes_to_(len, return) __out_data_source(NETWORK) char FAR *buf,
+ _In_ int len,
+ _In_ int flags,
+ _Out_writes_bytes_to_opt_(*fromlen, *fromlen) struct sockaddr FAR *from,
+ _Inout_opt_ int FAR * fromlen);
int
PASCAL FAR
select(
- IN int nfds,
- IN OUT fd_set FAR *readfds OPTIONAL,
- IN OUT fd_set FAR *writefds OPTIONAL,
- IN OUT fd_set FAR *exceptfds OPTIONAL,
- IN const struct timeval FAR *timeout OPTIONAL);
+ _In_ int nfds,
+ _Inout_opt_ fd_set FAR *readfds,
+ _Inout_opt_ fd_set FAR *writefds,
+ _Inout_opt_ fd_set FAR *exceptfds,
+ _In_opt_ const struct timeval FAR *timeout);
int
PASCAL FAR
send(
- IN SOCKET s,
- IN const char FAR *buf,
- IN int len,
- IN int flags);
+ _In_ SOCKET s,
+ _In_reads_bytes_(len) const char FAR *buf,
+ _In_ int len,
+ _In_ int flags);
int
PASCAL FAR
sendto(
- IN SOCKET s,
- IN const char FAR *buf,
- IN int len,
- IN int flags,
- IN const struct sockaddr FAR *to OPTIONAL,
- IN int tolen);
+ _In_ SOCKET s,
+ _In_reads_bytes_(len) const char FAR *buf,
+ _In_ int len,
+ _In_ int flags,
+ _In_reads_bytes_opt_(tolen) const struct sockaddr FAR *to,
+ _In_ int tolen);
int
PASCAL FAR
setsockopt(
- IN SOCKET s,
- IN int level,
- IN int optname,
- IN const char FAR *optval OPTIONAL,
- IN int optlen);
+ _In_ SOCKET s,
+ _In_ int level,
+ _In_ int optname,
+ _In_reads_bytes_opt_(optlen) const char FAR *optval,
+ _In_ int optlen);
int
PASCAL FAR
shutdown(
- IN SOCKET s,
- IN int how);
+ _In_ SOCKET s,
+ _In_ int how);
SOCKET
PASCAL FAR
socket(
- IN int af,
- IN int type,
- IN int protocol);
+ _In_ int af,
+ _In_ int type,
+ _In_ int protocol);
struct hostent FAR
*PASCAL FAR
gethostbyaddr(
- IN const char FAR *addr,
- IN int len,
- IN int type);
+ _In_reads_bytes_(len) const char FAR *addr,
+ _In_ int len,
+ _In_ int type);
struct hostent FAR
*PASCAL FAR
gethostbyname(
- IN const char FAR *name);
+ _In_z_ const char FAR *name);
int
PASCAL FAR
gethostname(
- OUT char FAR *name,
- IN int namelen);
+ _Out_writes_bytes_to_(namelen, return) char FAR *name,
+ _In_ int namelen);
struct servent FAR
*PASCAL FAR
getservbyport(
- IN int port,
- IN const char FAR *proto);
+ _In_ int port,
+ _In_z_ const char FAR *proto);
struct servent FAR
*PASCAL FAR
getservbyname(
- IN const char FAR *name,
- IN const char FAR *proto);
+ _In_z_ const char FAR *name,
+ _In_z_ const char FAR *proto);
struct protoent FAR
*PASCAL FAR
getprotobynumber(
- IN int number);
+ _In_ int number);
struct protoent FAR
*PASCAL FAR
getprotobyname(
- IN const char FAR *name);
+ _In_z_ const char FAR *name);
int
PASCAL FAR
WSAStartup(
- IN WORD wVersionRequired,
- OUT LPWSADATA lpWSAData);
+ _In_ WORD wVersionRequired,
+ _Out_ LPWSADATA lpWSAData);
int
PASCAL FAR
void
PASCAL FAR
WSASetLastError(
- IN int iError);
+ _In_ int iError);
int
PASCAL FAR
FARPROC
PASCAL FAR
WSASetBlockingHook(
- IN FARPROC lpBlockFunc);
+ _In_ FARPROC lpBlockFunc);
int
PASCAL FAR
HANDLE
PASCAL FAR
WSAAsyncGetServByName(
- IN HWND hWnd,
- IN u_int wMsg,
- IN const char FAR *name,
- IN const char FAR *proto,
- OUT char FAR *buf,
- IN int buflen);
+ _In_ HWND hWnd,
+ _In_ u_int wMsg,
+ _In_z_ const char FAR *name,
+ _In_z_ const char FAR *proto,
+ _Out_writes_bytes_(buflen) char FAR *buf,
+ _In_ int buflen);
HANDLE
PASCAL FAR
WSAAsyncGetServByPort(
- IN HWND hWnd,
- IN u_int wMsg,
- IN int port,
- IN const char FAR *proto,
- OUT char FAR *buf,
- IN int buflen);
+ _In_ HWND hWnd,
+ _In_ u_int wMsg,
+ _In_ int port,
+ _In_ const char FAR *proto,
+ _Out_writes_bytes_(buflen) char FAR *buf,
+ _In_ int buflen);
HANDLE
PASCAL FAR
WSAAsyncGetProtoByName(
- IN HWND hWnd,
- IN u_int wMsg,
- IN const char FAR *name,
- OUT char FAR *buf,
- IN int buflen);
+ _In_ HWND hWnd,
+ _In_ u_int wMsg,
+ _In_z_ const char FAR *name,
+ _Out_writes_bytes_(buflen) char FAR *buf,
+ _In_ int buflen);
HANDLE
PASCAL FAR
WSAAsyncGetProtoByNumber(
- IN HWND hWnd,
- IN u_int wMsg,
- IN int number,
- OUT char FAR *buf,
- IN int buflen);
+ _In_ HWND hWnd,
+ _In_ u_int wMsg,
+ _In_ int number,
+ _Out_writes_bytes_(buflen) char FAR *buf,
+ _In_ int buflen);
HANDLE
PASCAL FAR
WSAAsyncGetHostByName(
- IN HWND hWnd,
- IN u_int wMsg,
- IN const char FAR *name,
- OUT char FAR *buf,
- IN int buflen);
+ _In_ HWND hWnd,
+ _In_ u_int wMsg,
+ _In_z_ const char FAR *name,
+ _Out_writes_bytes_(buflen) char FAR *buf,
+ _In_ int buflen);
HANDLE
PASCAL FAR
WSAAsyncGetHostByAddr(
- IN HWND hWnd,
- IN u_int wMsg,
- IN const char FAR *addr,
- IN int len,
- IN int type,
- OUT char FAR *buf,
- IN int buflen);
+ _In_ HWND hWnd,
+ _In_ u_int wMsg,
+ _In_ const char FAR *addr,
+ _In_ int len,
+ _In_ int type,
+ _Out_writes_bytes_(buflen) char FAR *buf,
+ _In_ int buflen);
int
PASCAL FAR
WSACancelAsyncRequest(
- IN HANDLE hAsyncTaskHandle);
+ _In_ HANDLE hAsyncTaskHandle);
int
PASCAL FAR
WSAAsyncSelect(
- IN SOCKET s,
- IN HWND hWnd,
- IN u_int wMsg,
- IN long lEvent);
+ _In_ SOCKET s,
+ _In_ HWND hWnd,
+ _In_ u_int wMsg,
+ _In_ long lEvent);
int
PASCAL FAR
WSARecvEx(
- IN SOCKET s,
- OUT char FAR *buf,
- IN int len,
- IN OUT int FAR *flags);
+ _In_ SOCKET s,
+ _Out_writes_bytes_to_(len, return) __out_data_source(NETWORK) char FAR *buf,
+ _In_ int len,
+ _Inout_ int FAR *flags);
typedef struct _TRANSMIT_FILE_BUFFERS {
PVOID Head;
BOOL
PASCAL FAR
TransmitFile(
- IN SOCKET hSocket,
- IN HANDLE hFile,
- IN DWORD nNumberOfBytesToWrite,
- IN DWORD nNumberOfBytesPerSend,
- IN OUT LPOVERLAPPED lpOverlapped OPTIONAL,
- IN LPTRANSMIT_FILE_BUFFERS lpTransmitBuffers OPTIONAL,
- IN DWORD dwReserved);
+ _In_ SOCKET hSocket,
+ _In_ HANDLE hFile,
+ _In_ DWORD nNumberOfBytesToWrite,
+ _In_ DWORD nNumberOfBytesPerSend,
+ _Inout_opt_ LPOVERLAPPED lpOverlapped,
+ _In_opt_ LPTRANSMIT_FILE_BUFFERS lpTransmitBuffers,
+ _In_ DWORD dwReserved);
BOOL
PASCAL FAR
AcceptEx(
- IN SOCKET sListenSocket,
- IN SOCKET sAcceptSocket,
- OUT PVOID lpOutputBuffer,
- IN DWORD dwReceiveDataLength,
- IN DWORD dwLocalAddressLength,
- IN DWORD dwRemoteAddressLength,
- OUT LPDWORD lpdwBytesReceived,
- IN OUT LPOVERLAPPED lpOverlapped);
+ _In_ SOCKET sListenSocket,
+ _In_ SOCKET sAcceptSocket,
+ _Out_writes_bytes_to_(dwReceiveDataLength + dwLocalAddressLength + dwRemoteAddressLength, *lpdwBytesReceived) PVOID lpOutputBuffer,
+ _In_ DWORD dwReceiveDataLength,
+ _In_ DWORD dwLocalAddressLength,
+ _In_ DWORD dwRemoteAddressLength,
+ _Out_ LPDWORD lpdwBytesReceived,
+ _Inout_ LPOVERLAPPED lpOverlapped);
VOID
PASCAL FAR
GetAcceptExSockaddrs(
- IN PVOID lpOutputBuffer,
- IN DWORD dwReceiveDataLength,
- IN DWORD dwLocalAddressLength,
- IN DWORD dwRemoteAddressLength,
- OUT struct sockaddr **LocalSockaddr,
- OUT LPINT LocalSockaddrLength,
- OUT struct sockaddr **RemoteSockaddr,
- OUT LPINT RemoteSockaddrLength);
+ _In_reads_bytes_(dwReceiveDataLength + dwLocalAddressLength + dwRemoteAddressLength) PVOID lpOutputBuffer,
+ _In_ DWORD dwReceiveDataLength,
+ _In_ DWORD dwLocalAddressLength,
+ _In_ DWORD dwRemoteAddressLength,
+ _Outptr_result_bytebuffer_(*LocalSockaddrLength) struct sockaddr **LocalSockaddr,
+ _Out_ LPINT LocalSockaddrLength,
+ _Outptr_result_bytebuffer_(*RemoteSockaddrLength) struct sockaddr **RemoteSockaddr,
+ _Out_ LPINT RemoteSockaddrLength);
#if(_WIN32_WINNT >= 0x0501)
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
+
#pragma once
#define _WS2SPI_H
(CALLBACK FAR *LPBLOCKINGCALLBACK)(
DWORD_PTR dwContext);
-typedef SOCKET
+typedef
+_Must_inspect_result_
+SOCKET
(WSPAPI *LPWSPACCEPT)(
- IN SOCKET s,
- OUT struct sockaddr FAR *addr OPTIONAL,
- IN OUT LPINT addrlen OPTIONAL,
- IN LPCONDITIONPROC lpfnCondition OPTIONAL,
- IN DWORD_PTR dwCallbackData OPTIONAL,
- OUT LPINT lpErrno);
+ _In_ SOCKET s,
+ _Out_writes_bytes_to_opt_(*addrlen, *addrlen) struct sockaddr FAR *addr,
+ _Inout_opt_ LPINT addrlen,
+ _In_opt_ LPCONDITIONPROC lpfnCondition,
+ _In_opt_ DWORD_PTR dwCallbackData,
+ _Out_ LPINT lpErrno);
typedef VOID
(CALLBACK FAR *LPWSAUSERAPC)(
typedef INT
(WSPAPI *LPWSPADDRESSTOSTRING)(
- IN LPSOCKADDR lpsaAddress,
- IN DWORD dwAddressLength,
- IN LPWSAPROTOCOL_INFOW lpProtocolInfo OPTIONAL,
- OUT LPWSTR lpszAddressString,
- IN OUT LPDWORD lpdwAddressStringLength,
- OUT LPINT lpErrno);
+ _In_reads_bytes_(dwAddressLength) LPSOCKADDR lpsaAddress,
+ _In_ DWORD dwAddressLength,
+ _In_opt_ LPWSAPROTOCOL_INFOW lpProtocolInfo,
+ _Out_writes_to_(*lpdwAddressStringLength, *lpdwAddressStringLength) LPWSTR lpszAddressString,
+ _Inout_ LPDWORD lpdwAddressStringLength,
+ _Out_ LPINT lpErrno);
typedef int
(WSPAPI *LPWSPASYNCSELECT)(
- IN SOCKET s,
- IN HWND hWnd,
- IN unsigned int wMsg,
- IN long lEvent,
- OUT LPINT lpErrno);
+ _In_ SOCKET s,
+ _In_ HWND hWnd,
+ _In_ unsigned int wMsg,
+ _In_ long lEvent,
+ _Out_ LPINT lpErrno);
typedef int
(WSPAPI *LPWSPBIND)(
- IN SOCKET s,
- IN const struct sockaddr FAR *name,
- IN int namelen,
- OUT LPINT lpErrno);
+ _In_ SOCKET s,
+ _In_reads_bytes_(namelen) const struct sockaddr FAR *name,
+ _In_ int namelen,
+ _Out_ LPINT lpErrno);
typedef int
(WSPAPI *LPWSPCANCELBLOCKINGCALL)(
- OUT LPINT lpErrno);
+ _Out_ LPINT lpErrno);
typedef int
(WSPAPI *LPWSPCLEANUP)(
- OUT LPINT lpErrno);
+ _Out_ LPINT lpErrno);
typedef int
(WSPAPI *LPWSPCLOSESOCKET)(
- IN SOCKET s,
- OUT LPINT lpErrno);
+ _In_ SOCKET s,
+ _Out_ LPINT lpErrno);
typedef int
(WSPAPI *LPWSPCONNECT)(
- IN SOCKET s,
- IN const struct sockaddr FAR *name,
- IN int namelen,
- IN LPWSABUF lpCallerData OPTIONAL,
- OUT LPWSABUF lpCalleeData OPTIONAL,
- IN LPQOS lpSQOS OPTIONAL,
- IN LPQOS lpGQOS OPTIONAL,
- OUT LPINT lpErrno);
+ _In_ SOCKET s,
+ _In_reads_bytes_(namelen) const struct sockaddr FAR *name,
+ _In_ int namelen,
+ _In_opt_ LPWSABUF lpCallerData,
+ _Out_opt_ LPWSABUF lpCalleeData,
+ _In_opt_ LPQOS lpSQOS,
+ _In_opt_ LPQOS lpGQOS,
+ _Out_ LPINT lpErrno);
typedef int
(WSPAPI *LPWSPDUPLICATESOCKET)(
- IN SOCKET s,
- IN DWORD dwProcessId,
- OUT LPWSAPROTOCOL_INFOW lpProtocolInfo,
- OUT LPINT lpErrno);
+ _In_ SOCKET s,
+ _In_ DWORD dwProcessId,
+ _Out_ LPWSAPROTOCOL_INFOW lpProtocolInfo,
+ _Out_ LPINT lpErrno);
typedef int
(WSPAPI *LPWSPENUMNETWORKEVENTS)(
- IN SOCKET s,
- IN WSAEVENT hEventObject,
- OUT LPWSANETWORKEVENTS lpNetworkEvents,
- OUT LPINT lpErrno);
+ _In_ SOCKET s,
+ _In_ WSAEVENT hEventObject,
+ _Out_ LPWSANETWORKEVENTS lpNetworkEvents,
+ _Out_ LPINT lpErrno);
typedef int
(WSPAPI *LPWSPEVENTSELECT)(
- IN SOCKET s,
- IN WSAEVENT hEventObject,
- IN long lNetworkEvents,
- OUT LPINT lpErrno);
+ _In_ SOCKET s,
+ _In_opt_ WSAEVENT hEventObject,
+ _In_ long lNetworkEvents,
+ _Out_ LPINT lpErrno);
typedef BOOL
(WSPAPI *LPWSPGETOVERLAPPEDRESULT)(
- IN SOCKET s,
- IN LPWSAOVERLAPPED lpOverlapped,
- OUT LPDWORD lpcbTransfer,
- IN BOOL fWait,
- OUT LPDWORD lpdwFlags,
- OUT LPINT lpErrno);
+ _In_ SOCKET s,
+ _In_ LPWSAOVERLAPPED lpOverlapped,
+ _Out_ LPDWORD lpcbTransfer,
+ _In_ BOOL fWait,
+ _Out_ LPDWORD lpdwFlags,
+ _Out_ LPINT lpErrno);
typedef int
(WSPAPI *LPWSPGETPEERNAME)(
- IN SOCKET s,
- OUT struct sockaddr FAR *name,
- IN OUT LPINT namelen,
- OUT LPINT lpErrno);
+ _In_ SOCKET s,
+ _Out_writes_bytes_to_(*namelen, *namelen) struct sockaddr FAR *name,
+ _Inout_ LPINT namelen,
+ _Out_ LPINT lpErrno);
typedef int
(WSPAPI *LPWSPGETSOCKNAME)(
- IN SOCKET s,
- OUT struct sockaddr FAR *name,
- IN OUT LPINT namelen,
- OUT LPINT lpErrno);
+ _In_ SOCKET s,
+ _Out_writes_bytes_to_(*namelen, *namelen) struct sockaddr FAR *name,
+ _Inout_ LPINT namelen,
+ _Out_ LPINT lpErrno);
typedef int
(WSPAPI *LPWSPGETSOCKOPT)(
- IN SOCKET s,
- IN int level,
- IN int optname,
- OUT char FAR *optval,
- IN OUT LPINT optlen,
- OUT LPINT lpErrno);
+ _In_ SOCKET s,
+ _In_ int level,
+ _In_ int optname,
+ _Out_writes_bytes_(*optlen) char FAR *optval,
+ _Inout_ LPINT optlen,
+ _Out_ LPINT lpErrno);
typedef BOOL
(WSPAPI *LPWSPGETQOSBYNAME)(
- IN SOCKET s,
- IN LPWSABUF lpQOSName,
- OUT LPQOS lpQOS,
- OUT LPINT lpErrno);
+ _In_ SOCKET s,
+ _In_ LPWSABUF lpQOSName,
+ _Out_ LPQOS lpQOS,
+ _Out_ LPINT lpErrno);
typedef int
(WSPAPI *LPWSPIOCTL)(
- IN SOCKET s,
- IN DWORD dwIoControlCode,
- IN LPVOID lpvInBuffer OPTIONAL,
- IN DWORD cbInBuffer,
- OUT LPVOID lpvOutBuffer OPTIONAL,
- IN DWORD cbOutBuffer,
- OUT LPDWORD lpcbBytesReturned,
- IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL,
- IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL,
- IN LPWSATHREADID lpThreadId OPTIONAL,
- OUT LPINT lpErrno);
+ _In_ SOCKET s,
+ _In_ DWORD dwIoControlCode,
+ _In_reads_bytes_opt_(cbInBuffer) LPVOID lpvInBuffer,
+ _In_ DWORD cbInBuffer,
+ _Out_writes_bytes_to_opt_(cbOutBuffer, *lpcbBytesReturned) LPVOID lpvOutBuffer,
+ _In_ DWORD cbOutBuffer,
+ _Out_ LPDWORD lpcbBytesReturned,
+ _Inout_opt_ LPWSAOVERLAPPED lpOverlapped,
+ _In_opt_ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,
+ _In_opt_ LPWSATHREADID lpThreadId,
+ _Out_ LPINT lpErrno);
typedef SOCKET
(WSPAPI *LPWSPJOINLEAF)(
- IN SOCKET s,
- IN const struct sockaddr FAR *name,
- IN int namelen,
- IN LPWSABUF lpCallerData OPTIONAL,
- OUT LPWSABUF lpCalleeData OPTIONAL,
- IN LPQOS lpSQOS OPTIONAL,
- IN LPQOS lpGQOS OPTIONAL,
- IN DWORD dwFlags,
- OUT LPINT lpErrno);
+ _In_ SOCKET s,
+ _In_reads_bytes_(namelen) const struct sockaddr FAR *name,
+ _In_ int namelen,
+ _In_opt_ LPWSABUF lpCallerData,
+ _Out_opt_ LPWSABUF lpCalleeData,
+ _In_opt_ LPQOS lpSQOS,
+ _In_opt_ LPQOS lpGQOS,
+ _In_ DWORD dwFlags,
+ _Out_ LPINT lpErrno);
typedef int
(WSPAPI *LPWSPLISTEN)(
- IN SOCKET s,
- IN int backlog,
- OUT LPINT lpErrno);
+ _In_ SOCKET s,
+ _In_ int backlog,
+ _Out_ LPINT lpErrno);
typedef int
(WSPAPI *LPWSPRECV)(
- IN SOCKET s,
- IN LPWSABUF lpBuffers,
- IN DWORD dwBufferCount,
- OUT LPDWORD lpNumberOfBytesRecvd OPTIONAL,
- IN OUT LPDWORD lpFlags,
- IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL,
- IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL,
- IN LPWSATHREADID lpThreadId OPTIONAL,
- IN LPINT lpErrno);
+ _In_ SOCKET s,
+ _In_reads_(dwBufferCount) LPWSABUF lpBuffers,
+ _In_ DWORD dwBufferCount,
+ _Out_opt_ LPDWORD lpNumberOfBytesRecvd,
+ _Inout_ LPDWORD lpFlags,
+ _Inout_opt_ LPWSAOVERLAPPED lpOverlapped,
+ _In_opt_ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,
+ _In_opt_ LPWSATHREADID lpThreadId,
+ _In_ LPINT lpErrno);
typedef int
(WSPAPI *LPWSPRECVDISCONNECT)(
- IN SOCKET s,
- IN LPWSABUF lpInboundDisconnectData OPTIONAL,
- OUT LPINT lpErrno);
+ _In_ SOCKET s,
+ _In_opt_ LPWSABUF lpInboundDisconnectData,
+ _Out_ LPINT lpErrno);
typedef int
(WSPAPI *LPWSPRECVFROM)(
- IN SOCKET s,
- IN LPWSABUF lpBuffers,
- IN DWORD dwBufferCount,
- OUT LPDWORD lpNumberOfBytesRecvd OPTIONAL,
- IN OUT LPDWORD lpFlags,
- OUT struct sockaddr FAR *lpFrom OPTIONAL,
- IN OUT LPINT lpFromlen OPTIONAL,
- IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL,
- IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL,
- IN LPWSATHREADID lpThreadId OPTIONAL,
- OUT LPINT lpErrno);
+ _In_ SOCKET s,
+ _In_reads_(dwBufferCount) LPWSABUF lpBuffers,
+ _In_ DWORD dwBufferCount,
+ _Out_opt_ LPDWORD lpNumberOfBytesRecvd,
+ _Inout_ LPDWORD lpFlags,
+ _Out_writes_bytes_to_opt_(*lpFromlen, *lpFromlen) struct sockaddr FAR *lpFrom,
+ _Inout_opt_ LPINT lpFromlen,
+ _Inout_opt_ LPWSAOVERLAPPED lpOverlapped,
+ _In_opt_ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,
+ _In_opt_ LPWSATHREADID lpThreadId,
+ _Out_ LPINT lpErrno);
typedef int
(WSPAPI *LPWSPSELECT)(
- IN int nfds,
- IN OUT fd_set FAR *readfds OPTIONAL,
- IN OUT fd_set FAR *writefds OPTIONAL,
- IN OUT fd_set FAR *exceptfds OPTIONAL,
- IN const struct timeval FAR *timeout OPTIONAL,
- OUT LPINT lpErrno);
+ _In_ int nfds,
+ _Inout_opt_ fd_set FAR *readfds,
+ _Inout_opt_ fd_set FAR *writefds,
+ _Inout_opt_ fd_set FAR *exceptfds,
+ _In_opt_ const struct timeval FAR *timeout,
+ _Out_ LPINT lpErrno);
typedef int
(WSPAPI *LPWSPSEND)(
- IN SOCKET s,
- IN LPWSABUF lpBuffers,
- IN DWORD dwBufferCount,
- OUT LPDWORD lpNumberOfBytesSent OPTIONAL,
- IN DWORD dwFlags,
- IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL,
- IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL,
- IN LPWSATHREADID lpThreadId OPTIONAL,
- OUT LPINT lpErrno);
+ _In_ SOCKET s,
+ _In_reads_(dwBufferCount) LPWSABUF lpBuffers,
+ _In_ DWORD dwBufferCount,
+ _Out_opt_ LPDWORD lpNumberOfBytesSent,
+ _In_ DWORD dwFlags,
+ _Inout_opt_ LPWSAOVERLAPPED lpOverlapped,
+ _In_opt_ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,
+ _In_opt_ LPWSATHREADID lpThreadId,
+ _Out_ LPINT lpErrno);
typedef int
(WSPAPI *LPWSPSENDDISCONNECT)(
- IN SOCKET s,
- IN LPWSABUF lpOutboundDisconnectData OPTIONAL,
- OUT LPINT lpErrno);
+ _In_ SOCKET s,
+ _In_opt_ LPWSABUF lpOutboundDisconnectData,
+ _Out_ LPINT lpErrno);
typedef int
(WSPAPI *LPWSPSENDTO)(
- IN SOCKET s,
- IN LPWSABUF lpBuffers,
- IN DWORD dwBufferCount,
- OUT LPDWORD lpNumberOfBytesSent OPTIONAL,
- IN DWORD dwFlags,
- IN const struct sockaddr FAR *lpTo OPTIONAL,
- IN int iTolen,
- IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL,
- IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL,
- IN LPWSATHREADID lpThreadId OPTIONAL,
- OUT LPINT lpErrno);
+ _In_ SOCKET s,
+ _In_reads_(dwBufferCount) LPWSABUF lpBuffers,
+ _In_ DWORD dwBufferCount,
+ _Out_opt_ LPDWORD lpNumberOfBytesSent,
+ _In_ DWORD dwFlags,
+ _In_reads_bytes_opt_(iTolen) const struct sockaddr FAR *lpTo,
+ _In_ int iTolen,
+ _Inout_opt_ LPWSAOVERLAPPED lpOverlapped,
+ _In_opt_ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,
+ _In_opt_ LPWSATHREADID lpThreadId,
+ _Out_ LPINT lpErrno);
typedef int
(WSPAPI *LPWSPSETSOCKOPT)(
- IN SOCKET s,
- IN int level,
- IN int optname,
- IN const char FAR *optval OPTIONAL,
- IN int optlen,
- OUT LPINT lpErrno);
+ _In_ SOCKET s,
+ _In_ int level,
+ _In_ int optname,
+ _In_reads_bytes_opt_(optlen) const char FAR *optval,
+ _In_ int optlen,
+ _Out_ LPINT lpErrno);
typedef int
(WSPAPI *LPWSPSHUTDOWN)(
- IN SOCKET s,
- IN int how,
- OUT LPINT lpErrno);
+ _In_ SOCKET s,
+ _In_ int how,
+ _Out_ LPINT lpErrno);
-typedef SOCKET
+typedef
+_Must_inspect_result_
+SOCKET
(WSPAPI *LPWSPSOCKET)(
- IN int af,
- IN int type,
- IN int protocol,
- IN LPWSAPROTOCOL_INFOW lpProtocolInfo OPTIONAL,
- IN GROUP g,
- IN DWORD dwFlags,
- OUT LPINT lpErrno);
+ _In_ int af,
+ _In_ int type,
+ _In_ int protocol,
+ _In_opt_ LPWSAPROTOCOL_INFOW lpProtocolInfo,
+ _In_ GROUP g,
+ _In_ DWORD dwFlags,
+ _Out_ LPINT lpErrno);
typedef INT
(WSPAPI *LPWSPSTRINGTOADDRESS)(
- IN LPWSTR AddressString,
- IN INT AddressFamily,
- IN LPWSAPROTOCOL_INFOW lpProtocolInfo OPTIONAL,
- OUT LPSOCKADDR lpAddress,
- IN OUT LPINT lpAddressLength,
- OUT LPINT lpErrno);
+ _In_ LPWSTR AddressString,
+ _In_ INT AddressFamily,
+ _In_opt_ LPWSAPROTOCOL_INFOW lpProtocolInfo,
+ _Out_writes_bytes_to_(*lpAddressLength, *lpAddressLength) LPSOCKADDR lpAddress,
+ _Inout_ LPINT lpAddressLength,
+ _Out_ LPINT lpErrno);
typedef BOOL
(WSPAPI *LPWPUCLOSEEVENT)(
- IN WSAEVENT hEvent,
- OUT LPINT lpErrno);
+ _In_ WSAEVENT hEvent,
+ _Out_ LPINT lpErrno);
typedef int
(WSPAPI *LPWPUCLOSESOCKETHANDLE)(
- IN SOCKET s,
- OUT LPINT lpErrno);
+ _In_ SOCKET s,
+ _Out_ LPINT lpErrno);
typedef WSAEVENT
(WSPAPI *LPWPUCREATEEVENT)(
- OUT LPINT lpErrno);
+ _Out_ LPINT lpErrno);
-typedef SOCKET
+typedef
+_Must_inspect_result_
+SOCKET
(WSPAPI *LPWPUCREATESOCKETHANDLE)(
- IN DWORD dwCatalogEntryId,
- IN DWORD_PTR dwContext,
- OUT LPINT lpErrno);
+ _In_ DWORD dwCatalogEntryId,
+ _In_ DWORD_PTR dwContext,
+ _Out_ LPINT lpErrno);
typedef int
(WSPAPI *LPWPUFDISSET)(
- IN SOCKET s,
- IN fd_set FAR *fdset);
+ _In_ SOCKET s,
+ _In_ fd_set FAR *fdset);
typedef int
(WSPAPI *LPWPUGETPROVIDERPATH)(
- IN LPGUID lpProviderId,
- OUT WCHAR FAR *lpszProviderDllPath,
- IN OUT LPINT lpProviderDllPathLen,
- OUT LPINT lpErrno);
+ _In_ LPGUID lpProviderId,
+ _Out_writes_(*lpProviderDllPathLen) WCHAR FAR *lpszProviderDllPath,
+ _Inout_ LPINT lpProviderDllPathLen,
+ _Out_ LPINT lpErrno);
typedef SOCKET
(WSPAPI *LPWPUMODIFYIFSHANDLE)(
- IN DWORD dwCatalogEntryId,
- IN SOCKET ProposedHandle,
- OUT LPINT lpErrno);
+ _In_ DWORD dwCatalogEntryId,
+ _In_ SOCKET ProposedHandle,
+ _Out_ LPINT lpErrno);
typedef BOOL
(WSPAPI *LPWPUPOSTMESSAGE)(
- IN HWND hWnd,
- IN UINT Msg,
- IN WPARAM wParam,
- IN LPARAM lParam);
+ _In_ HWND hWnd,
+ _In_ UINT Msg,
+ _In_ WPARAM wParam,
+ _In_ LPARAM lParam);
typedef int
(WSPAPI *LPWPUQUERYBLOCKINGCALLBACK)(
- IN DWORD dwCatalogEntryId,
- OUT LPBLOCKINGCALLBACK FAR *lplpfnCallback,
- OUT PDWORD_PTR lpdwContext,
- OUT LPINT lpErrno);
+ _In_ DWORD dwCatalogEntryId,
+ _Out_ LPBLOCKINGCALLBACK FAR *lplpfnCallback,
+ _Out_ PDWORD_PTR lpdwContext,
+ _Out_ LPINT lpErrno);
typedef int
(WSPAPI *LPWPUQUERYSOCKETHANDLECONTEXT)(
- IN SOCKET s,
- OUT PDWORD_PTR lpContext,
- OUT LPINT lpErrno);
+ _In_ SOCKET s,
+ _Out_ PDWORD_PTR lpContext,
+ _Out_ LPINT lpErrno);
typedef int
(WSPAPI *LPWPUQUEUEAPC)(
- IN LPWSATHREADID lpThreadId,
- IN LPWSAUSERAPC lpfnUserApc,
- IN DWORD_PTR dwContext,
- OUT LPINT lpErrno);
+ _In_ LPWSATHREADID lpThreadId,
+ _In_ LPWSAUSERAPC lpfnUserApc,
+ _In_ DWORD_PTR dwContext,
+ _Out_ LPINT lpErrno);
typedef BOOL
(WSPAPI *LPWPURESETEVENT)(
- IN WSAEVENT hEvent,
- OUT LPINT lpErrno);
+ _In_ WSAEVENT hEvent,
+ _Out_ LPINT lpErrno);
typedef BOOL
(WSPAPI *LPWPUSETEVENT)(
- IN WSAEVENT hEvent,
- OUT LPINT lpErrno);
+ _In_ WSAEVENT hEvent,
+ _Out_ LPINT lpErrno);
typedef int
(WSPAPI *LPWPUOPENCURRENTTHREAD)(
- OUT LPWSATHREADID lpThreadId,
- OUT LPINT lpErrno);
+ _Out_ LPWSATHREADID lpThreadId,
+ _Out_ LPINT lpErrno);
typedef int
(WSPAPI *LPWPUCLOSETHREAD)(
- IN LPWSATHREADID lpThreadId,
- OUT LPINT lpErrno);
+ _In_ LPWSATHREADID lpThreadId,
+ _Out_ LPINT lpErrno);
typedef int
(WSPAPI *LPWPUCOMPLETEOVERLAPPEDREQUEST)(
- IN SOCKET s,
- IN OUT LPWSAOVERLAPPED lpOverlapped,
- IN DWORD dwError,
- IN DWORD cbTransferred,
- OUT LPINT lpErrno);
+ _In_ SOCKET s,
+ _Inout_ LPWSAOVERLAPPED lpOverlapped,
+ _In_ DWORD dwError,
+ _In_ DWORD cbTransferred,
+ _Out_ LPINT lpErrno);
typedef int
(WSPAPI *LPWSCENUMPROTOCOLS)(
- IN LPINT lpiProtocols OPTIONAL,
- OUT LPWSAPROTOCOL_INFOW lpProtocolBuffer OPTIONAL,
- IN OUT LPDWORD lpdwBufferLength,
- OUT LPINT lpErrno);
+ _In_opt_ LPINT lpiProtocols,
+ _Out_writes_bytes_to_opt_(*lpdwBufferLength, *lpdwBufferlength) LPWSAPROTOCOL_INFOW lpProtocolBuffer,
+ _Inout_ LPDWORD lpdwBufferLength,
+ _Out_ LPINT lpErrno);
typedef int
(WSPAPI *LPWSCDEINSTALLPROVIDER)(
- IN LPGUID lpProviderId,
- OUT LPINT lpErrno);
+ _In_ LPGUID lpProviderId,
+ _Out_ LPINT lpErrno);
typedef int
(WSPAPI *LPWSCINSTALLPROVIDER)(
- IN LPGUID lpProviderId,
- IN const WCHAR FAR *lpszProviderDllPath,
- IN const LPWSAPROTOCOL_INFOW lpProtocolInfoList,
- IN DWORD dwNumberOfEntries,
- OUT LPINT lpErrno);
+ _In_ LPGUID lpProviderId,
+ _In_z_ const WCHAR FAR *lpszProviderDllPath,
+ _In_reads_(dwNumberOfEntries) const LPWSAPROTOCOL_INFOW lpProtocolInfoList,
+ _In_ DWORD dwNumberOfEntries,
+ _Out_ LPINT lpErrno);
typedef int
(WSPAPI *LPWSCGETPROVIDERPATH)(
- IN LPGUID lpProviderId,
- OUT WCHAR FAR *lpszProviderDllPath,
- IN OUT LPINT lpProviderDllPathLen,
- OUT LPINT lpErrno);
+ _In_ LPGUID lpProviderId,
+ _Out_writes_to_(*lpProviderDllPathLen, *lpProviderDllPathLen) WCHAR FAR *lpszProviderDllPath,
+ _Inout_ LPINT lpProviderDllPathLen,
+ _Out_ LPINT lpErrno);
typedef INT
(WSPAPI *LPWSCINSTALLNAMESPACE)(
- IN LPWSTR lpszIdentifier,
- IN LPWSTR lpszPathName,
- IN DWORD dwNameSpace,
- IN DWORD dwVersion,
- IN LPGUID lpProviderId);
+ _In_ LPWSTR lpszIdentifier,
+ _In_ LPWSTR lpszPathName,
+ _In_ DWORD dwNameSpace,
+ _In_ DWORD dwVersion,
+ _In_ LPGUID lpProviderId);
typedef INT
(WSPAPI *LPWSCUNINSTALLNAMESPACE)(
- IN LPGUID lpProviderId);
+ _In_ LPGUID lpProviderId);
typedef INT
(WSPAPI *LPWSCENABLENSPROVIDER)(
- IN LPGUID lpProviderId,
- IN BOOL fEnable);
+ _In_ LPGUID lpProviderId,
+ _In_ BOOL fEnable);
/* Service provider procedure table */
typedef struct _WSPPROC_TABLE {
typedef INT
(WSAAPI *LPNSPCLEANUP)(
- IN LPGUID lpProviderId);
+ _In_ LPGUID lpProviderId);
typedef INT
(WSAAPI *LPNSPLOOKUPSERVICEBEGIN)(
- IN LPGUID lpProviderId,
- IN LPWSAQUERYSETW lpqsRestrictions,
- IN LPWSASERVICECLASSINFOW lpServiceClassInfo,
- IN DWORD dwControlFlags,
- OUT LPHANDLE lphLookup);
+ _In_ LPGUID lpProviderId,
+ _In_ LPWSAQUERYSETW lpqsRestrictions,
+ _In_ LPWSASERVICECLASSINFOW lpServiceClassInfo,
+ _In_ DWORD dwControlFlags,
+ _Out_ LPHANDLE lphLookup);
typedef INT
(WSAAPI *LPNSPLOOKUPSERVICENEXT)(
- IN HANDLE hLookup,
- IN DWORD dwControlFlags,
- IN OUT LPDWORD lpdwBufferLength,
- OUT LPWSAQUERYSETW lpqsResults);
+ _In_ HANDLE hLookup,
+ _In_ DWORD dwControlFlags,
+ _Inout_ LPDWORD lpdwBufferLength,
+ _Out_writes_bytes_to_(*lpdwBufferLength, *lpdwBufferLength) LPWSAQUERYSETW lpqsResults);
#if(_WIN32_WINNT >= 0x0501)
typedef INT
(WSAAPI *LPNSPIOCTL)(
- IN HANDLE hLookup,
- IN DWORD dwControlCode,
- IN LPVOID lpvInBuffer,
- IN DWORD cbInBuffer,
- OUT LPVOID lpvOutBuffer,
- IN DWORD cbOutBuffer,
- OUT LPDWORD lpcbBytesReturned,
- IN LPWSACOMPLETION lpCompletion OPTIONAL,
- IN LPWSATHREADID lpThreadId);
+ _In_ HANDLE hLookup,
+ _In_ DWORD dwControlCode,
+ _In_reads_bytes_(cbInBuffer) LPVOID lpvInBuffer,
+ _In_ DWORD cbInBuffer,
+ _Out_writes_bytes_to_(cbOutBuffer, *lpcbBytesReturned) LPVOID lpvOutBuffer,
+ _In_ DWORD cbOutBuffer,
+ _Out_ LPDWORD lpcbBytesReturned,
+ _In_opt_ LPWSACOMPLETION lpCompletion,
+ _In_ LPWSATHREADID lpThreadId);
#endif
typedef INT
(WSAAPI *LPNSPLOOKUPSERVICEEND)(
- IN HANDLE hLookup);
+ _In_ HANDLE hLookup);
typedef INT
(WSAAPI *LPNSPSETSERVICE)(
- IN LPGUID lpProviderId,
- IN LPWSASERVICECLASSINFOW lpServiceClassInfo,
- IN LPWSAQUERYSETW lpqsRegInfo,
- IN WSAESETSERVICEOP essOperation,
- IN DWORD dwControlFlags);
+ _In_ LPGUID lpProviderId,
+ _In_ LPWSASERVICECLASSINFOW lpServiceClassInfo,
+ _In_ LPWSAQUERYSETW lpqsRegInfo,
+ _In_ WSAESETSERVICEOP essOperation,
+ _In_ DWORD dwControlFlags);
typedef INT
(WSAAPI *LPNSPINSTALLSERVICECLASS)(
- IN LPGUID lpProviderId,
- IN LPWSASERVICECLASSINFOW lpServiceClassInfo);
+ _In_ LPGUID lpProviderId,
+ _In_ LPWSASERVICECLASSINFOW lpServiceClassInfo);
typedef INT
(WSAAPI *LPNSPREMOVESERVICECLASS)(
- IN LPGUID lpProviderId,
- IN LPGUID lpServiceClassId);
+ _In_ LPGUID lpProviderId,
+ _In_ LPGUID lpServiceClassId);
typedef INT
(WSAAPI *LPNSPGETSERVICECLASSINFO)(
- IN LPGUID lpProviderId,
- IN LPDWORD lpdwBufSize,
- IN LPWSASERVICECLASSINFOW lpServiceClassInfo);
+ _In_ LPGUID lpProviderId,
+ _In_ LPDWORD lpdwBufSize,
+ _In_ LPWSASERVICECLASSINFOW lpServiceClassInfo);
-typedef INT
+typedef
+_Must_inspect_result_
+INT
(WSAAPI *LPNSPV2STARTUP)(
- IN LPGUID lpProviderId,
- OUT LPVOID *ppvClientSessionArg);
+ _In_ LPGUID lpProviderId,
+ _Outptr_ LPVOID *ppvClientSessionArg);
typedef INT
(WSAAPI *LPNSPV2CLEANUP)(
- IN LPGUID lpProviderId,
- IN LPVOID pvClientSessionArg);
+ _In_ LPGUID lpProviderId,
+ _In_ LPVOID pvClientSessionArg);
typedef INT
(WSAAPI *LPNSPV2LOOKUPSERVICEBEGIN)(
- IN LPGUID lpProviderId,
- IN LPWSAQUERYSET2W lpqsRestrictions,
- IN DWORD dwControlFlags,
- IN LPVOID lpvClientSessionArg,
- OUT LPHANDLE lphLookup);
+ _In_ LPGUID lpProviderId,
+ _In_ LPWSAQUERYSET2W lpqsRestrictions,
+ _In_ DWORD dwControlFlags,
+ _In_ LPVOID lpvClientSessionArg,
+ _Out_ LPHANDLE lphLookup);
typedef VOID
(WSAAPI *LPNSPV2LOOKUPSERVICENEXTEX)(
- IN HANDLE hAsyncCall,
- IN HANDLE hLookup,
- IN DWORD dwControlFlags,
- IN LPDWORD lpdwBufferLength,
- OUT LPWSAQUERYSET2W lpqsResults);
+ _In_ HANDLE hAsyncCall,
+ _In_ HANDLE hLookup,
+ _In_ DWORD dwControlFlags,
+ _In_ LPDWORD lpdwBufferLength,
+ _Out_ LPWSAQUERYSET2W lpqsResults);
typedef INT
(WSAAPI *LPNSPV2LOOKUPSERVICEEND)(
- IN HANDLE hLookup);
+ _In_ HANDLE hLookup);
typedef VOID
(WSAAPI *LPNSPV2SETSERVICEEX)(
- IN HANDLE hAsyncCall,
- IN LPGUID lpProviderId,
- IN LPWSAQUERYSET2W lpqsRegInfo,
- IN WSAESETSERVICEOP essOperation,
- IN DWORD dwControlFlags,
- IN LPVOID lpvClientSessionArg);
+ _In_ HANDLE hAsyncCall,
+ _In_ LPGUID lpProviderId,
+ _In_ LPWSAQUERYSET2W lpqsRegInfo,
+ _In_ WSAESETSERVICEOP essOperation,
+ _In_ DWORD dwControlFlags,
+ _In_ LPVOID lpvClientSessionArg);
typedef VOID
(WSAAPI *LPNSPV2CLIENTSESSIONRUNDOWN)(
- IN LPGUID lpProviderId,
- IN LPVOID pvClientSessionArg);
+ _In_ LPGUID lpProviderId,
+ _In_ LPVOID pvClientSessionArg);
/* Service Provider upcall table */
typedef struct _WSPUPCALLTABLE {
LPWPUCLOSETHREAD lpWPUCloseThread;
} WSPUPCALLTABLE, FAR* LPWSPUPCALLTABLE;
-typedef int
+typedef
+_Must_inspect_result_
+int
(WSPAPI *LPWSPSTARTUP)(
- IN WORD wVersionRequested,
- IN LPWSPDATA lpWSPData,
- IN LPWSAPROTOCOL_INFOW lpProtocolInfo,
- IN WSPUPCALLTABLE UpcallTable,
- OUT LPWSPPROC_TABLE lpProcTable);
+ _In_ WORD wVersionRequested,
+ _In_ LPWSPDATA lpWSPData,
+ _In_ LPWSAPROTOCOL_INFOW lpProtocolInfo,
+ _In_ WSPUPCALLTABLE UpcallTable,
+ _Out_ LPWSPPROC_TABLE lpProcTable);
#if (_WIN32_WINNT >= 0x0600)
LPNSPIOCTL NSPIoctl;
} NSP_ROUTINE, *PNSP_ROUTINE, FAR* LPNSP_ROUTINE;
-typedef INT
+typedef
+_Must_inspect_result_
+INT
(WSAAPI *LPNSPSTARTUP)(
- IN LPGUID lpProviderId,
- IN OUT LPNSP_ROUTINE lpnspRoutines);
+ _In_ LPGUID lpProviderId,
+ _Inout_ LPNSP_ROUTINE lpnspRoutines);
typedef struct _NSPV2_ROUTINE {
DWORD cbSize;
} NSPV2_ROUTINE, *PNSPV2_ROUTINE, *LPNSPV2_ROUTINE;
typedef const NSPV2_ROUTINE *PCNSPV2_ROUTINE, *LPCNSPV2_ROUTINE;
+_Must_inspect_result_
int
WSPAPI
WSPStartup(
- IN WORD wVersionRequested,
- IN LPWSPDATA lpWSPData,
- IN LPWSAPROTOCOL_INFOW lpProtocolInfo,
- IN WSPUPCALLTABLE UpcallTable,
- OUT LPWSPPROC_TABLE lpProcTable);
+ _In_ WORD wVersionRequested,
+ _In_ LPWSPDATA lpWSPData,
+ _In_ LPWSAPROTOCOL_INFOW lpProtocolInfo,
+ _In_ WSPUPCALLTABLE UpcallTable,
+ _Out_ LPWSPPROC_TABLE lpProcTable);
int
WSPAPI
WSCEnumProtocols(
- IN LPINT lpiProtocols OPTIONAL,
- OUT LPWSAPROTOCOL_INFOW lpProtocolBuffer OPTIONAL,
- IN OUT LPDWORD lpdwBufferLength,
- OUT LPINT lpErrno);
+ _In_opt_ LPINT lpiProtocols,
+ _Out_writes_bytes_to_opt_(*lpdwBufferLength, *lpdwBufferLength) LPWSAPROTOCOL_INFOW lpProtocolBuffer,
+ _Inout_ LPDWORD lpdwBufferLength,
+ _Out_ LPINT lpErrno);
#if (_WIN32_WINNT >= 0x0501)
int
WSPAPI
WPUOpenCurrentThread(
- OUT LPWSATHREADID lpThreadId,
- OUT LPINT lpErrno);
+ _Out_ LPWSATHREADID lpThreadId,
+ _Out_ LPINT lpErrno);
int
WSPAPI
WPUCloseThread(
- IN LPWSATHREADID lpThreadId,
- OUT LPINT lpErrno);
+ _In_ LPWSATHREADID lpThreadId,
+ _Out_ LPINT lpErrno);
#define WSCEnumNameSpaceProviders WSAEnumNameSpaceProvidersW
#define LPFN_WSCENUMNAMESPACEPROVIDERS LPFN_WSAENUMNAMESPACEPROVIDERSW
int
WSPAPI
WSCUpdateProvider(
- IN LPGUID lpProviderId,
- IN const WCHAR FAR *lpszProviderDllPath,
- IN const LPWSAPROTOCOL_INFOW lpProtocolInfoList,
- IN DWORD dwNumberOfEntries,
- OUT LPINT lpErrno);
+ _In_ LPGUID lpProviderId,
+ _In_z_ const WCHAR FAR *lpszProviderDllPath,
+ _In_reads_(dwNumberOfEntries) const LPWSAPROTOCOL_INFOW lpProtocolInfoList,
+ _In_ DWORD dwNumberOfEntries,
+ _Out_ LPINT lpErrno);
typedef int
(WSPAPI *LPWSCUPDATEPROVIDER)(
- IN LPGUID lpProviderId,
- IN const WCHAR FAR *lpszProviderDllPath,
- IN const LPWSAPROTOCOL_INFOW lpProtocolInfoList,
- IN DWORD dwNumberOfEntries,
- OUT LPINT lpErrno);
+ _In_ LPGUID lpProviderId,
+ _In_z_ const WCHAR FAR *lpszProviderDllPath,
+ _In_reads_(dwNumberOfEntries) const LPWSAPROTOCOL_INFOW lpProtocolInfoList,
+ _In_ DWORD dwNumberOfEntries,
+ _Out_ LPINT lpErrno);
#if defined(_WIN64)
int
WSPAPI
WSCEnumProtocols32(
- IN LPINT lpiProtocols OPTIONAL,
- OUT LPWSAPROTOCOL_INFOW lpProtocolBuffer,
- IN OUT LPDWORD lpdwBufferLength,
- OUT LPINT lpErrno);
+ _In_opt_ LPINT lpiProtocols,
+ _Out_writes_bytes_(*lpdwBufferLength) LPWSAPROTOCOL_INFOW lpProtocolBuffer,
+ _Inout_ LPDWORD lpdwBufferLength,
+ _Out_ LPINT lpErrno);
int
WSPAPI
WSCDeinstallProvider32(
- IN LPGUID lpProviderId,
- OUT LPINT lpErrno);
+ _In_ LPGUID lpProviderId,
+ _Out_ LPINT lpErrno);
int
WSPAPI
WSCInstallProvider64_32(
- IN LPGUID lpProviderId,
- IN const WCHAR FAR *lpszProviderDllPath,
- IN const LPWSAPROTOCOL_INFOW lpProtocolInfoList,
- IN DWORD dwNumberOfEntries,
- OUT LPINT lpErrno);
+ _In_ LPGUID lpProviderId,
+ _In_z_ const WCHAR FAR *lpszProviderDllPath,
+ _In_reads_(dwNumberOfEntries) const LPWSAPROTOCOL_INFOW lpProtocolInfoList,
+ _In_ DWORD dwNumberOfEntries,
+ _Out_ LPINT lpErrno);
+_Success_(return == 0)
int
WSPAPI
WSCGetProviderPath32(
- IN LPGUID lpProviderId,
- OUT WCHAR FAR *lpszProviderDllPath,
- IN OUT LPINT lpProviderDllPathLen,
- OUT LPINT lpErrno);
+ _In_ LPGUID lpProviderId,
+ _Out_writes_to_(*lpProviderDllPathLen, *lpProviderDllPathLen) WCHAR FAR *lpszProviderDllPath,
+ _Inout_ LPINT lpProviderDllPathLen,
+ _Out_ LPINT lpErrno);
int
WSPAPI
WSCUpdateProvider32(
- IN LPGUID lpProviderId,
- IN const WCHAR FAR *lpszProviderDllPath,
- IN const LPWSAPROTOCOL_INFOW lpProtocolInfoList,
- IN DWORD dwNumberOfEntries,
- OUT LPINT lpErrno);
+ _In_ LPGUID lpProviderId,
+ _In_z_ const WCHAR FAR *lpszProviderDllPath,
+ _In_reads_(dwNumberOfEntries) const LPWSAPROTOCOL_INFOW lpProtocolInfoList,
+ _In_ DWORD dwNumberOfEntries,
+ _Out_ LPINT lpErrno);
INT
WSAAPI
WSCEnumNameSpaceProviders32(
- IN OUT LPDWORD lpdwBufferLength,
- OUT LPWSANAMESPACE_INFOW lpnspBuffer);
+ _Inout_ LPDWORD lpdwBufferLength,
+ _Out_writes_bytes_(*lpdwBufferLength) LPWSANAMESPACE_INFOW lpnspBuffer);
INT
WSPAPI
WSCInstallNameSpace32(
- IN LPWSTR lpszIdentifier,
- IN LPWSTR lpszPathName,
- IN DWORD dwNameSpace,
- IN DWORD dwVersion,
- IN LPGUID lpProviderId);
+ _In_ LPWSTR lpszIdentifier,
+ _In_ LPWSTR lpszPathName,
+ _In_ DWORD dwNameSpace,
+ _In_ DWORD dwVersion,
+ _In_ LPGUID lpProviderId);
INT
WSPAPI
WSCUnInstallNameSpace32(
- IN LPGUID lpProviderId);
+ _In_ LPGUID lpProviderId);
INT
WSPAPI
WSCEnableNSProvider32(
- IN LPGUID lpProviderId,
- IN BOOL fEnable);
+ _In_ LPGUID lpProviderId,
+ _In_ BOOL fEnable);
#endif /* defined(_WIN64) */
int
WSPAPI
WSCDeinstallProvider(
- IN LPGUID lpProviderId,
- OUT LPINT lpErrno);
+ _In_ LPGUID lpProviderId,
+ _Out_ LPINT lpErrno);
int
WSPAPI
WSCInstallProvider(
- IN LPGUID lpProviderId,
- IN const WCHAR FAR *lpszProviderDllPath,
- IN const LPWSAPROTOCOL_INFOW lpProtocolInfoList,
- IN DWORD dwNumberOfEntries,
- OUT LPINT lpErrno);
+ _In_ LPGUID lpProviderId,
+ _In_z_ const WCHAR FAR *lpszProviderDllPath,
+ _In_reads_(dwNumberOfEntries) const LPWSAPROTOCOL_INFOW lpProtocolInfoList,
+ _In_ DWORD dwNumberOfEntries,
+ _Out_ LPINT lpErrno);
int
WSPAPI
WSCGetProviderPath(
- IN LPGUID lpProviderId,
- OUT WCHAR FAR *lpszProviderDllPath,
- IN OUT LPINT lpProviderDllPathLen,
- OUT LPINT lpErrno);
+ _In_ LPGUID lpProviderId,
+ _Out_writes_to_(*lpProviderDllPathLen, *lpProviderDllPathLen) WCHAR FAR *lpszProviderDllPath,
+ _Inout_ LPINT lpProviderDllPathLen,
+ _Out_ LPINT lpErrno);
#if (_WIN32_WINNT < 0x0600)
int
WSPAPI
WSCInstallQOSTemplate(
- IN const LPGUID Guid,
- IN LPWSABUF QosName,
- IN LPQOS Qos);
+ _In_ const LPGUID Guid,
+ _In_ LPWSABUF QosName,
+ _In_ LPQOS Qos);
typedef int
(WSPAPI *LPWSCINSTALLQOSTEMPLATE)(
- IN const LPGUID Guid,
- IN LPWSABUF QosName,
- IN LPQOS Qos);
+ _In_ const LPGUID Guid,
+ _In_ LPWSABUF QosName,
+ _In_ LPQOS Qos);
int
WSPAPI
WSCRemoveQOSTemplate(
- IN const LPGUID Guid,
- IN LPWSABUF QosName);
+ _In_ const LPGUID Guid,
+ _In_ LPWSABUF QosName);
typedef int
(WSPAPI *LPWSCREMOVEQOSTEMPLATE)(
- IN const LPGUID Guid,
- IN LPWSABUF QosName);
+ _In_ const LPGUID Guid,
+ _In_ LPWSABUF QosName);
#endif /* (_WIN32_WINNT < 0x0600) */
int
WSPAPI
WSCSetProviderInfo(
- IN LPGUID lpProviderId,
- IN WSC_PROVIDER_INFO_TYPE InfoType,
- IN PBYTE Info,
- IN size_t InfoSize,
- IN DWORD Flags,
- OUT LPINT lpErrno);
+ _In_ LPGUID lpProviderId,
+ _In_ WSC_PROVIDER_INFO_TYPE InfoType,
+ _In_reads_bytes_(InfoSize) PBYTE Info,
+ _In_ size_t InfoSize,
+ _In_ DWORD Flags,
+ _Out_ LPINT lpErrno);
int
WSPAPI
WSCGetProviderInfo(
- IN LPGUID lpProviderId,
- IN WSC_PROVIDER_INFO_TYPE InfoType,
- OUT PBYTE Info,
- IN OUT *InfoSize,
- IN DWORD Flags,
- OUT LPINT lpErrno);
+ _In_ LPGUID lpProviderId,
+ _In_ WSC_PROVIDER_INFO_TYPE InfoType,
+ _Out_writes_bytes_to_(*InfoSize, *InfoSize) PBYTE Info,
+ _Inout_ *InfoSize,
+ _In_ DWORD Flags,
+ _Out_ LPINT lpErrno);
int
WSPAPI
WSCSetApplicationCategory(
- IN LPCWSTR Path,
- IN DWORD PathLength,
- IN LPCWSTR Extra OPTIONAL,
- IN DWORD ExtraLength,
- IN DWORD PermittedLspCategories,
- OUT DWORD *pPrevPermLspCat OPTIONAL,
- OUT LPINT lpErrno);
+ _In_reads_(PathLength) LPCWSTR Path,
+ _In_ DWORD PathLength,
+ _In_reads_opt_(ExtraLength) LPCWSTR Extra,
+ _In_ DWORD ExtraLength,
+ _In_ DWORD PermittedLspCategories,
+ _Out_opt_ DWORD *pPrevPermLspCat,
+ _Out_ LPINT lpErrno);
int
WSPAPI
WSCGetApplicationCategory(
- IN LPCWSTR Path,
- IN DWORD PathLength,
- IN LPCWSTR Extra OPTIONAL,
- IN DWORD ExtraLength,
- OUT DWORD *pPermittedLspCategories,
- OUT LPINT lpErrno);
+ _In_reads_(PathLength) LPCWSTR Path,
+ _In_ DWORD PathLength,
+ _In_reads_opt_(ExtraLength) LPCWSTR Extra,
+ _In_ DWORD ExtraLength,
+ _Out_ DWORD *pPermittedLspCategories,
+ _Out_ LPINT lpErrno);
#define WSCEnumNameSpaceProvidersEx WSAEnumNameSpaceProvidersExW
#define LPFN_WSCENUMNAMESPACEPROVIDERSEX LPFN_WSAENUMNAMESPACEPROVIDERSEXW
INT
WSPAPI
WSCInstallNameSpaceEx(
- IN LPWSTR lpszIdentifier,
- IN LPWSTR lpszPathName,
- IN DWORD dwNameSpace,
- IN DWORD dwVersion,
- IN LPGUID lpProviderId,
- IN LPBLOB lpProviderSpecific);
+ _In_ LPWSTR lpszIdentifier,
+ _In_ LPWSTR lpszPathName,
+ _In_ DWORD dwNameSpace,
+ _In_ DWORD dwVersion,
+ _In_ LPGUID lpProviderId,
+ _In_ LPBLOB lpProviderSpecific);
INT
WSAAPI
WSAAdvertiseProvider(
- IN const GUID *puuidProviderId,
- IN const LPCNSPV2_ROUTINE pNSPv2Routine);
+ _In_ const GUID *puuidProviderId,
+ _In_ const LPCNSPV2_ROUTINE pNSPv2Routine);
INT
WSAAPI
WSAUnadvertiseProvider(
- IN const GUID *puuidProviderId);
+ _In_ const GUID *puuidProviderId);
INT
WSAAPI
WSAProviderCompleteAsyncCall(
- IN HANDLE hAsyncCall,
- IN INT iRetCode);
+ _In_ HANDLE hAsyncCall,
+ _In_ INT iRetCode);
#if defined(_WIN64)
int
WSPAPI
WSCSetProviderInfo32(
- IN LPGUID lpProviderId,
- IN WSC_PROVIDER_INFO_TYPE InfoType,
- IN PBYTE Info,
- IN size_t InfoSize,
- IN DWORD Flags,
- OUT LPINT lpErrno);
+ _In_ LPGUID lpProviderId,
+ _In_ WSC_PROVIDER_INFO_TYPE InfoType,
+ _In_reads_bytes_(InfoSize) PBYTE Info,
+ _In_ size_t InfoSize,
+ _In_ DWORD Flags,
+ _Out_ LPINT lpErrno);
int
WSPAPI
WSCGetProviderInfo32(
- IN LPGUID lpProviderId,
- IN WSC_PROVIDER_INFO_TYPE InfoType,
- OUT PBYTE Info,
- IN OUT size_t *InfoSize,
- IN DWORD Flags,
- OUT LPINT lpErrno);
+ _In_ LPGUID lpProviderId,
+ _In_ WSC_PROVIDER_INFO_TYPE InfoType,
+ _Out_writes_bytes_to_(*InfoSize, *InfoSize) PBYTE Info,
+ _Inout_ size_t *InfoSize,
+ _In_ DWORD Flags,
+ _Out_ LPINT lpErrno);
INT
WSAAPI
WSCEnumNameSpaceProvidersEx32(
- IN OUT LPDWORD lpdwBufferLength,
- OUT LPWSANAMESPACE_INFOEXW lpnspBuffer);
+ _Inout_ LPDWORD lpdwBufferLength,
+ _Out_writes_bytes_(*lpdwBufferLength) LPWSANAMESPACE_INFOEXW lpnspBuffer);
INT
WSPAPI
WSCInstallNameSpaceEx32(
- IN LPWSTR lpszIdentifier,
- IN LPWSTR lpszPathName,
- IN DWORD dwNameSpace,
- IN DWORD dwVersion,
- IN LPGUID lpProviderId,
- IN LPBLOB lpProviderSpecific);
+ _In_ LPWSTR lpszIdentifier,
+ _In_ LPWSTR lpszPathName,
+ _In_ DWORD dwNameSpace,
+ _In_ DWORD dwVersion,
+ _In_ LPGUID lpProviderId,
+ _In_ LPBLOB lpProviderSpecific);
#endif /* (_WIN64) */
WSPAPI
WSCInstallProviderAndChains(
#endif
- IN LPGUID lpProviderId,
- IN const LPWSTR lpszProviderDllPath,
+ _In_ LPGUID lpProviderId,
+ _In_ const LPWSTR lpszProviderDllPath,
#if defined(_WIN64)
- IN const LPWSTR lpszProviderDllPath32,
+ _In_ const LPWSTR lpszProviderDllPath32,
#endif
- IN const LPWSTR lpszLspName,
- IN DWORD dwServiceFlags,
- IN OUT LPWSAPROTOCOL_INFOW lpProtocolInfoList,
- IN DWORD dwNumberOfEntries,
- OUT LPDWORD lpdwCatalogEntryId OPTIONAL,
- OUT LPINT lpErrno);
+ _In_ const LPWSTR lpszLspName,
+ _In_ DWORD dwServiceFlags,
+ _Inout_updates_(dwNumberOfEntries) LPWSAPROTOCOL_INFOW lpProtocolInfoList,
+ _In_ DWORD dwNumberOfEntries,
+ _Out_opt_ LPDWORD lpdwCatalogEntryId,
+ _Out_ LPINT lpErrno);
#endif /* (_WIN32_WINNT >= 0x0600) */
BOOL
WSPAPI
WPUCloseEvent(
- IN WSAEVENT hEvent,
- OUT LPINT lpErrno);
+ _In_ WSAEVENT hEvent,
+ _Out_ LPINT lpErrno);
int
WSPAPI
WPUCloseSocketHandle(
- IN SOCKET s,
- OUT LPINT lpErrno);
+ _In_ SOCKET s,
+ _Out_ LPINT lpErrno);
WSAEVENT
WSPAPI
WPUCreateEvent(
- OUT LPINT lpErrno);
+ _Out_ LPINT lpErrno);
SOCKET
WSPAPI
WPUCreateSocketHandle(
- IN DWORD dwCatalogEntryId,
- IN DWORD_PTR dwContext,
- OUT LPINT lpErrno);
+ _In_ DWORD dwCatalogEntryId,
+ _In_ DWORD_PTR dwContext,
+ _Out_ LPINT lpErrno);
int
WSPAPI
WPUFDIsSet(
- IN SOCKET s,
- IN fd_set FAR *fdset);
+ _In_ SOCKET s,
+ _In_ fd_set FAR *fdset);
int
WSPAPI
WPUGetProviderPath(
- IN LPGUID lpProviderId,
- OUT WCHAR FAR *lpszProviderDllPath,
- IN OUT LPINT lpProviderDllPathLen,
- OUT LPINT lpErrno);
+ _In_ LPGUID lpProviderId,
+ _Out_writes_(*lpProviderDllPathLen) WCHAR FAR *lpszProviderDllPath,
+ _Inout_ LPINT lpProviderDllPathLen,
+ _Out_ LPINT lpErrno);
SOCKET
WSPAPI
WPUModifyIFSHandle(
- IN DWORD dwCatalogEntryId,
- IN SOCKET ProposedHandle,
- OUT LPINT lpErrno);
+ _In_ DWORD dwCatalogEntryId,
+ _In_ SOCKET ProposedHandle,
+ _Out_ LPINT lpErrno);
BOOL
WSPAPI
WPUPostMessage(
- IN HWND hWnd,
- IN UINT Msg,
- IN WPARAM wParam,
- IN LPARAM lParam);
+ _In_ HWND hWnd,
+ _In_ UINT Msg,
+ _In_ WPARAM wParam,
+ _In_ LPARAM lParam);
int
WSPAPI
WPUQueryBlockingCallback(
- IN DWORD dwCatalogEntryId,
- OUT LPBLOCKINGCALLBACK FAR *lplpfnCallback,
- OUT PDWORD_PTR lpdwContext,
- OUT LPINT lpErrno);
+ _In_ DWORD dwCatalogEntryId,
+ _Out_ LPBLOCKINGCALLBACK FAR *lplpfnCallback,
+ _Out_ PDWORD_PTR lpdwContext,
+ _Out_ LPINT lpErrno);
int
WSPAPI
WPUQuerySocketHandleContext(
- IN SOCKET s,
- OUT PDWORD_PTR lpContext,
- OUT LPINT lpErrno);
+ _In_ SOCKET s,
+ _Out_ PDWORD_PTR lpContext,
+ _Out_ LPINT lpErrno);
int
WSPAPI
WPUQueueApc(
- IN LPWSATHREADID lpThreadId,
- IN LPWSAUSERAPC lpfnUserApc,
- IN DWORD_PTR dwContext,
- OUT LPINT lpErrno);
+ _In_ LPWSATHREADID lpThreadId,
+ _In_ LPWSAUSERAPC lpfnUserApc,
+ _In_ DWORD_PTR dwContext,
+ _Out_ LPINT lpErrno);
BOOL
WSPAPI
WPUResetEvent(
- IN WSAEVENT hEvent,
- OUT LPINT lpErrno);
+ _In_ WSAEVENT hEvent,
+ _Out_ LPINT lpErrno);
BOOL
WSPAPI
WPUSetEvent(
- IN WSAEVENT hEvent,
- OUT LPINT lpErrno);
+ _In_ WSAEVENT hEvent,
+ _Out_ LPINT lpErrno);
int
WSPAPI
WPUCompleteOverlappedRequest(
- IN SOCKET s,
- IN OUT LPWSAOVERLAPPED lpOverlapped,
- IN DWORD dwError,
- IN DWORD cbTransferred,
- OUT LPINT lpErrno);
+ _In_ SOCKET s,
+ _Inout_ LPWSAOVERLAPPED lpOverlapped,
+ _In_ DWORD dwError,
+ _In_ DWORD cbTransferred,
+ _Out_ LPINT lpErrno);
INT
WSPAPI
WSCInstallNameSpace(
- IN LPWSTR lpszIdentifier,
- IN LPWSTR lpszPathName,
- IN DWORD dwNameSpace,
- IN DWORD dwVersion,
- IN LPGUID lpProviderId);
+ _In_ LPWSTR lpszIdentifier,
+ _In_ LPWSTR lpszPathName,
+ _In_ DWORD dwNameSpace,
+ _In_ DWORD dwVersion,
+ _In_ LPGUID lpProviderId);
INT
WSPAPI
WSCUnInstallNameSpace(
- IN LPGUID lpProviderId);
+ _In_ LPGUID lpProviderId);
INT
WSPAPI
WSCEnableNSProvider(
- IN LPGUID lpProviderId,
- IN BOOL fEnable);
+ _In_ LPGUID lpProviderId,
+ _In_ BOOL fEnable);
+_Must_inspect_result_
INT
WSAAPI
NSPStartup(
- IN LPGUID lpProviderId,
- IN OUT LPNSP_ROUTINE lpnspRoutines);
+ _In_ LPGUID lpProviderId,
+ _Inout_ LPNSP_ROUTINE lpnspRoutines);
#if !defined(_WIN64)
#include <poppack.h>
INT
WSAAPI
getaddrinfo(
- IN PCSTR pNodeName OPTIONAL,
- IN PCSTR pServiceName OPTIONAL,
- IN const ADDRINFOA *pHints OPTIONAL,
- OUT PADDRINFOA *ppResult);
+ _In_opt_ PCSTR pNodeName,
+ _In_opt_ PCSTR pServiceName,
+ _In_opt_ const ADDRINFOA *pHints,
+ _Outptr_ PADDRINFOA *ppResult);
#if (NTDDI_VERSION >= NTDDI_WINXPSP2) || (_WIN32_WINNT >= 0x0502)
INT
WSAAPI
GetAddrInfoW(
- IN PCWSTR pNodeName OPTIONAL,
- IN PCWSTR pServiceName OPTIONAL,
- IN const ADDRINFOW *pHints OPTIONAL,
- OUT PADDRINFOW *ppResult);
+ _In_opt_ PCWSTR pNodeName,
+ _In_opt_ PCWSTR pServiceName,
+ _In_opt_ const ADDRINFOW *pHints,
+ _Outptr_ PADDRINFOW *ppResult);
#define GetAddrInfoA getaddrinfo
typedef INT
(WSAAPI *LPFN_GETADDRINFO)(
- IN PCSTR pNodeName OPTIONAL,
- IN PCSTR pServiceName OPTIONAL,
- IN const ADDRINFOA *pHints OPTIONAL,
- OUT PADDRINFOA *ppResult);
+ _In_opt_ PCSTR pNodeName,
+ _In_opt_ PCSTR pServiceName,
+ _In_opt_ const ADDRINFOA *pHints,
+ _Outptr_ PADDRINFOA *ppResult);
typedef INT
(WSAAPI *LPFN_GETADDRINFOW)(
- IN PCWSTR pNodeName OPTIONAL,
- IN PCWSTR pServiceName OPTIONAL,
- IN const ADDRINFOW *pHints OPTIONAL,
- OUT PADDRINFOW *ppResult);
+ _In_opt_ PCWSTR pNodeName,
+ _In_opt_ PCWSTR pServiceName,
+ _In_opt_ const ADDRINFOW *pHints,
+ _Outptr_ PADDRINFOW *ppResult);
#define LPFN_GETADDRINFOA LPFN_GETADDRINFO
typedef void
(CALLBACK *LPLOOKUPSERVICE_COMPLETION_ROUTINE)(
- IN DWORD dwError,
- IN DWORD dwBytes,
- IN LPWSAOVERLAPPED lpOverlapped);
+ _In_ DWORD dwError,
+ _In_ DWORD dwBytes,
+ _In_ LPWSAOVERLAPPED lpOverlapped);
WINSOCK_API_LINKAGE
INT
WSAAPI
GetAddrInfoExA(
- IN PCSTR pName OPTIONAL,
- IN PCSTR pServiceName OPTIONAL,
- IN DWORD dwNameSpace,
- IN LPGUID lpNspId OPTIONAL,
- IN const ADDRINFOEXA *hints,
- OUT PADDRINFOEXA *ppResult,
- IN struct timeval *timeout OPTIONAL,
- IN LPOVERLAPPED lpOverlapped OPTIONAL,
- IN LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL,
- OUT LPHANDLE lpNameHandle OPTIONAL);
+ _In_opt_ PCSTR pName,
+ _In_opt_ PCSTR pServiceName,
+ _In_ DWORD dwNameSpace,
+ _In_opt_ LPGUID lpNspId,
+ _In_opt_ const ADDRINFOEXA *hints,
+ _Outptr_ PADDRINFOEXA *ppResult,
+ _In_opt_ struct timeval *timeout,
+ _In_opt_ LPOVERLAPPED lpOverlapped,
+ _In_opt_ LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine,
+ _Out_opt_ LPHANDLE lpNameHandle);
WINSOCK_API_LINKAGE
INT
WSAAPI
GetAddrInfoExW(
- IN PCWSTR pName OPTIONAL,
- IN PCWSTR pServiceName OPTIONAL,
- IN DWORD dwNameSpace,
- IN LPGUID lpNspId OPTIONAL,
- IN const ADDRINFOEXW *hints OPTIONAL,
- OUT PADDRINFOEXW *ppResult,
- IN struct timeval *timeout OPTIONAL,
- IN LPOVERLAPPED lpOverlapped OPTIONAL,
- IN LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL,
- OUT LPHANDLE lpHandle OPTIONAL);
+ _In_opt_ PCWSTR pName,
+ _In_opt_ PCWSTR pServiceName,
+ _In_ DWORD dwNameSpace,
+ _In_opt_ LPGUID lpNspId,
+ _In_opt_ const ADDRINFOEXW *hints,
+ _Outptr_ PADDRINFOEXW *ppResult,
+ _In_opt_ struct timeval *timeout,
+ _In_opt_ LPOVERLAPPED lpOverlapped,
+ _In_opt_ LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine,
+ _Out_opt_ LPHANDLE lpHandle);
#ifdef UNICODE
#define GetAddrInfoEx GetAddrInfoExW
typedef INT
(WSAAPI *LPFN_GETADDRINFOEXA)(
- IN PCSTR pName,
- IN PCSTR pServiceName OPTIONAL,
- IN DWORD dwNameSpace,
- IN LPGUID lpNspId OPTIONAL,
- IN const ADDRINFOEXA *hints OPTIONAL,
- OUT PADDRINFOEXA *ppResult,
- IN struct timeval *timeout OPTIONAL,
- IN LPOVERLAPPED lpOverlapped OPTIONAL,
- IN LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL,
- OUT LPHANDLE lpNameHandle OPTIONAL);
+ _In_ PCSTR pName,
+ _In_opt_ PCSTR pServiceName,
+ _In_ DWORD dwNameSpace,
+ _In_opt_ LPGUID lpNspId,
+ _In_opt_ const ADDRINFOEXA *hints,
+ _Outptr_ PADDRINFOEXA *ppResult,
+ _In_opt_ struct timeval *timeout,
+ _In_opt_ LPOVERLAPPED lpOverlapped,
+ _In_opt_ LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine,
+ _Out_opt_ LPHANDLE lpNameHandle);
typedef INT
(WSAAPI *LPFN_GETADDRINFOEXW)(
- IN PCWSTR pName,
- IN PCWSTR pServiceName OPTIONAL,
- IN DWORD dwNameSpace,
- IN LPGUID lpNspId OPTIONAL,
- IN const ADDRINFOEXW *hints OPTIONAL,
- OUT PADDRINFOEXW *ppResult,
- IN struct timeval *timeout OPTIONAL,
- IN LPOVERLAPPED lpOverlapped OPTIONAL,
- IN LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL,
- OUT LPHANDLE lpHandle OPTIONAL);
+ _In_ PCWSTR pName,
+ _In_opt_ PCWSTR pServiceName,
+ _In_ DWORD dwNameSpace,
+ _In_opt_ LPGUID lpNspId,
+ _In_opt_ const ADDRINFOEXW *hints,
+ _Outptr_ PADDRINFOEXW *ppResult,
+ _In_opt_ struct timeval *timeout,
+ _In_opt_ LPOVERLAPPED lpOverlapped,
+ _In_opt_ LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine,
+ _Out_opt_ LPHANDLE lpHandle);
#ifdef UNICODE
#define LPFN_GETADDRINFOEX LPFN_GETADDRINFOEXW
INT
WSAAPI
SetAddrInfoExA(
- IN PCSTR pName,
- IN PCSTR pServiceName OPTIONAL,
- IN SOCKET_ADDRESS *pAddresses OPTIONAL,
- IN DWORD dwAddressCount,
- IN LPBLOB lpBlob OPTIONAL,
- IN DWORD dwFlags,
- IN DWORD dwNameSpace,
- IN LPGUID lpNspId OPTIONAL,
- IN struct timeval *timeout OPTIONAL,
- IN LPOVERLAPPED lpOverlapped OPTIONAL,
- IN LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL,
- OUT LPHANDLE lpNameHandle OPTIONAL);
+ _In_ PCSTR pName,
+ _In_opt_ PCSTR pServiceName,
+ _In_opt_ SOCKET_ADDRESS *pAddresses,
+ _In_ DWORD dwAddressCount,
+ _In_opt_ LPBLOB lpBlob,
+ _In_ DWORD dwFlags,
+ _In_ DWORD dwNameSpace,
+ _In_opt_ LPGUID lpNspId,
+ _In_opt_ struct timeval *timeout,
+ _In_opt_ LPOVERLAPPED lpOverlapped,
+ _In_opt_ LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine,
+ _Out_opt_ LPHANDLE lpNameHandle);
WINSOCK_API_LINKAGE
INT
WSAAPI
SetAddrInfoExW(
- IN PCWSTR pName,
- IN PCWSTR pServiceName OPTIONAL,
- IN SOCKET_ADDRESS *pAddresses OPTIONAL,
- IN DWORD dwAddressCount,
- IN LPBLOB lpBlob OPTIONAL,
- IN DWORD dwFlags,
- IN DWORD dwNameSpace,
- IN LPGUID lpNspId OPTIONAL,
- IN struct timeval *timeout OPTIONAL,
- IN LPOVERLAPPED lpOverlapped OPTIONAL,
- IN LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL,
- OUT LPHANDLE lpNameHandle OPTIONAL);
+ _In_ PCWSTR pName,
+ _In_opt_ PCWSTR pServiceName,
+ _In_opt_ SOCKET_ADDRESS *pAddresses,
+ _In_ DWORD dwAddressCount,
+ _In_opt_ LPBLOB lpBlob,
+ _In_ DWORD dwFlags,
+ _In_ DWORD dwNameSpace,
+ _In_opt_ LPGUID lpNspId,
+ _In_opt_ struct timeval *timeout,
+ _In_opt_ LPOVERLAPPED lpOverlapped,
+ _In_opt_ LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine,
+ _Out_opt_ LPHANDLE lpNameHandle);
#ifdef UNICODE
#define SetAddrInfoEx SetAddrInfoExW
typedef INT
(WSAAPI *LPFN_SETADDRINFOEXA)(
- IN PCSTR pName,
- IN PCSTR pServiceName OPTIONAL,
- IN SOCKET_ADDRESS *pAddresses OPTIONAL,
- IN DWORD dwAddressCount,
- IN LPBLOB lpBlob OPTIONAL,
- IN DWORD dwFlags,
- IN DWORD dwNameSpace,
- IN LPGUID lpNspId OPTIONAL,
- IN struct timeval *timeout OPTIONAL,
- IN LPOVERLAPPED lpOverlapped OPTIONAL,
- IN LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL,
- OUT LPHANDLE lpNameHandle OPTIONAL);
+ _In_ PCSTR pName,
+ _In_opt_ PCSTR pServiceName,
+ _In_opt_ SOCKET_ADDRESS *pAddresses,
+ _In_ DWORD dwAddressCount,
+ _In_opt_ LPBLOB lpBlob,
+ _In_ DWORD dwFlags,
+ _In_ DWORD dwNameSpace,
+ _In_opt_ LPGUID lpNspId,
+ _In_opt_ struct timeval *timeout,
+ _In_opt_ LPOVERLAPPED lpOverlapped,
+ _In_opt_ LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine,
+ _Out_opt_ LPHANDLE lpNameHandle);
typedef INT
(WSAAPI *LPFN_SETADDRINFOEXW)(
- IN PCWSTR pName,
- IN PCWSTR pServiceName OPTIONAL,
- IN SOCKET_ADDRESS *pAddresses OPTIONAL,
- IN DWORD dwAddressCount,
- IN LPBLOB lpBlob OPTIONAL,
- IN DWORD dwFlags,
- IN DWORD dwNameSpace,
- IN LPGUID lpNspId OPTIONAL,
- IN struct timeval *timeout OPTIONAL,
- IN LPOVERLAPPED lpOverlapped OPTIONAL,
- IN LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL,
- OUT LPHANDLE lpNameHandle OPTIONAL);
+ _In_ PCWSTR pName,
+ _In_opt_ PCWSTR pServiceName,
+ _In_opt_ SOCKET_ADDRESS *pAddresses,
+ _In_ DWORD dwAddressCount,
+ _In_opt_ LPBLOB lpBlob,
+ _In_ DWORD dwFlags,
+ _In_ DWORD dwNameSpace,
+ _In_opt_ LPGUID lpNspId,
+ _In_opt_ struct timeval *timeout,
+ _In_opt_ LPOVERLAPPED lpOverlapped,
+ _In_opt_ LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine,
+ _Out_opt_ LPHANDLE lpNameHandle);
#ifdef UNICODE
#define LPFN_SETADDRINFOEX LPFN_SETADDRINFOEXW
VOID
WSAAPI
freeaddrinfo(
- IN PADDRINFOA pAddrInfo OPTIONAL);
+ _In_opt_ PADDRINFOA pAddrInfo);
#if (NTDDI_VERSION >= NTDDI_WINXPSP2) || (_WIN32_WINNT >= 0x0502)
VOID
WSAAPI
FreeAddrInfoW(
- IN PADDRINFOW pAddrInfo OPTIONAL);
+ _In_opt_ PADDRINFOW pAddrInfo);
#define FreeAddrInfoA freeaddrinfo
typedef VOID
(WSAAPI *LPFN_FREEADDRINFO)(
- IN PADDRINFOA pAddrInfo OPTIONAL);
+ _In_opt_ PADDRINFOA pAddrInfo);
typedef VOID
(WSAAPI *LPFN_FREEADDRINFOW)(
- IN PADDRINFOW pAddrInfo OPTIONAL);
+ _In_opt_ PADDRINFOW pAddrInfo);
#define LPFN_FREEADDRINFOA LPFN_FREEADDRINFO
void
WSAAPI
FreeAddrInfoEx(
- IN PADDRINFOEXA pAddrInfoEx OPTIONAL);
+ _In_opt_ PADDRINFOEXA pAddrInfoEx);
WINSOCK_API_LINKAGE
void
WSAAPI
FreeAddrInfoExW(
- IN PADDRINFOEXW pAddrInfoEx OPTIONAL);
+ _In_opt_ PADDRINFOEXW pAddrInfoEx);
#define FreeAddrInfoExA FreeAddrInfoEx
typedef void
(WSAAPI *LPFN_FREEADDRINFOEXA)(
- IN PADDRINFOEXA pAddrInfoEx);
+ _In_ PADDRINFOEXA pAddrInfoEx);
typedef void
(WSAAPI *LPFN_FREEADDRINFOEXW)(
- IN PADDRINFOEXW pAddrInfoEx);
+ _In_ PADDRINFOEXW pAddrInfoEx);
#ifdef UNICODE
INT
WSAAPI
getnameinfo(
- IN const SOCKADDR *pSockaddr,
- IN socklen_t SockaddrLength,
- OUT PCHAR pNodeBuffer OPTIONAL,
- IN DWORD NodeBufferSize,
- OUT PCHAR pServiceBuffer,
- IN DWORD ServiceBufferSize,
- IN INT Flags);
+ _In_reads_bytes_(SockaddrLength) const SOCKADDR *pSockaddr,
+ _In_ socklen_t SockaddrLength,
+ _Out_writes_opt_(NodeBufferSize) PCHAR pNodeBuffer,
+ _In_ DWORD NodeBufferSize,
+ _Out_writes_opt_(ServiceBufferSize) PCHAR pServiceBuffer,
+ _In_ DWORD ServiceBufferSize,
+ _In_ INT Flags);
#if (NTDDI_VERSION >= NTDDI_WINXPSP2) || (_WIN32_WINNT >= 0x0502)
INT
WSAAPI
GetNameInfoW(
- IN const SOCKADDR *pSockaddr,
- IN socklen_t SockaddrLength,
- OUT PWCHAR pNodeBuffer,
- IN DWORD NodeBufferSize,
- OUT PWCHAR pServiceBuffer OPTIONAL,
- IN DWORD ServiceBufferSize,
- IN INT Flags);
+ _In_reads_bytes_(SockaddrLength) const SOCKADDR *pSockaddr,
+ _In_ socklen_t SockaddrLength,
+ _Out_writes_opt_(NodeBufferSize) PWCHAR pNodeBuffer,
+ _In_ DWORD NodeBufferSize,
+ _Out_writes_opt_(ServiceBufferSize) PWCHAR pServiceBuffer,
+ _In_ DWORD ServiceBufferSize,
+ _In_ INT Flags);
#define GetNameInfoA getnameinfo
typedef int
(WSAAPI *LPFN_GETNAMEINFO)(
- IN const SOCKADDR *pSockaddr,
- IN socklen_t SockaddrLength,
- OUT PCHAR pNodeBuffer,
- IN DWORD NodeBufferSize,
- OUT PCHAR pServiceBuffer OPTIONAL,
- IN DWORD ServiceBufferSize,
- IN INT Flags);
+ _In_reads_bytes_(SockaddrLength) const SOCKADDR *pSockaddr,
+ _In_ socklen_t SockaddrLength,
+ _Out_writes_opt_(NodeBufferSize) PCHAR pNodeBuffer,
+ _In_ DWORD NodeBufferSize,
+ _Out_writes_opt_(ServiceBufferSize) PCHAR pServiceBuffer,
+ _In_ DWORD ServiceBufferSize,
+ _In_ INT Flags);
typedef INT
(WSAAPI *LPFN_GETNAMEINFOW)(
- IN const SOCKADDR *pSockaddr,
- IN socklen_t SockaddrLength,
- OUT PWCHAR pNodeBuffer,
- IN DWORD NodeBufferSize,
- OUT PWCHAR pServiceBuffer OPTIONAL,
- IN DWORD ServiceBufferSize,
- IN INT Flags);
+ _In_reads_bytes_(SockaddrLength) const SOCKADDR *pSockaddr,
+ _In_ socklen_t SockaddrLength,
+ _Out_writes_opt_(NodeBufferSize) PWCHAR pNodeBuffer,
+ _In_ DWORD NodeBufferSize,
+ _Out_writes_opt_(ServiceBufferSize) PWCHAR pServiceBuffer,
+ _In_ DWORD ServiceBufferSize,
+ _In_ INT Flags);
#define LPFN_GETNAMEINFOA LPFN_GETNAMEINFO
INT
WSAAPI
inet_pton(
- IN INT Family,
- IN PCSTR pszAddrString,
- OUT PVOID pAddrBuf);
+ _In_ INT Family,
+ _In_ PCSTR pszAddrString,
+ _Out_writes_bytes_(sizeof(IN6_ADDR)) PVOID pAddrBuf);
INT
WSAAPI
InetPtonW(
- IN INT Family,
- IN PCWSTR pszAddrString,
- OUT PVOID pAddrBuf);
+ _In_ INT Family,
+ _In_ PCWSTR pszAddrString,
+ _Out_writes_bytes_(sizeof(IN6_ADDR)) PVOID pAddrBuf);
PCSTR
WSAAPI
inet_ntop(
- IN INT Family,
- IN PVOID pAddr,
- OUT PSTR pStringBuf,
- IN size_t StringBufSize);
+ _In_ INT Family,
+ _In_ PVOID pAddr,
+ _Out_writes_(StringBufSize) PSTR pStringBuf,
+ _In_ size_t StringBufSize);
PCWSTR
WSAAPI
InetNtopW(
- IN INT Family,
- IN PVOID pAddr,
- OUT PWSTR pStringBuf,
- IN size_t StringBufSize);
+ _In_ INT Family,
+ _In_ PVOID pAddr,
+ _Out_writes_(StringBufSize) PWSTR pStringBuf,
+ _In_ size_t StringBufSize);
#define InetPtonA inet_pton
#define InetNtopA inet_ntop
typedef INT
(WSAAPI *LPFN_INET_PTONA)(
- IN INT Family,
- IN PCSTR pszAddrString,
- OUT PVOID pAddrBuf);
+ _In_ INT Family,
+ _In_ PCSTR pszAddrString,
+ _Out_writes_bytes_(sizeof(IN6_ADDR)) PVOID pAddrBuf);
typedef INT
(WSAAPI *LPFN_INET_PTONW)(
- IN INT Family,
- IN PCWSTR pszAddrString,
- OUT PVOID pAddrBuf);
+ _In_ INT Family,
+ _In_ PCWSTR pszAddrString,
+ _Out_writes_bytes_(sizeof(IN6_ADDR)) PVOID pAddrBuf);
typedef PCSTR
(WSAAPI *LPFN_INET_NTOPA)(
- IN INT Family,
- IN PVOID pAddr,
- OUT PSTR pStringBuf,
- IN size_t StringBufSize);
+ _In_ INT Family,
+ _In_ PVOID pAddr,
+ _Out_writes_(StringBufSize) PSTR pStringBuf,
+ _In_ size_t StringBufSize);
typedef PCWSTR
(WSAAPI *LPFN_INET_NTOPW)(
- IN INT Family,
- IN PVOID pAddr,
- OUT PWSTR pStringBuf,
- IN size_t StringBufSize);
+ _In_ INT Family,
+ _In_ PVOID pAddr,
+ _Out_writes_(StringBufSize) PWSTR pStringBuf,
+ _In_ size_t StringBufSize);
#ifdef UNICODE
#define LPFN_INET_PTON LPFN_INET_PTONW
static __inline
char *
gai_strerrorA(
- IN int ecode)
+ _In_ int ecode)
{
static char buff[GAI_STRERROR_BUFFER_SIZE + 1];
static __inline
WCHAR *
gai_strerrorW(
- IN int ecode)
+ _In_ int ecode)
{
static WCHAR buff[GAI_STRERROR_BUFFER_SIZE + 1];
WS2TCPIP_INLINE
int
setipv4sourcefilter(
- IN SOCKET Socket,
- IN IN_ADDR Interface,
- IN IN_ADDR Group,
- IN MULTICAST_MODE_TYPE FilterMode,
- IN ULONG SourceCount,
- IN CONST IN_ADDR *SourceList)
+ _In_ SOCKET Socket,
+ _In_ IN_ADDR Interface,
+ _In_ IN_ADDR Group,
+ _In_ MULTICAST_MODE_TYPE FilterMode,
+ _In_ ULONG SourceCount,
+ _In_reads_(SourceCount) CONST IN_ADDR *SourceList)
{
int Error;
DWORD Size, Returned;
return Error;
}
+_Success_(return == 0)
WS2TCPIP_INLINE
int
getipv4sourcefilter(
- IN SOCKET Socket,
- IN IN_ADDR Interface,
- IN IN_ADDR Group,
- OUT MULTICAST_MODE_TYPE *FilterMode,
- IN OUT ULONG *SourceCount,
- OUT IN_ADDR *SourceList)
+ _In_ SOCKET Socket,
+ _In_ IN_ADDR Interface,
+ _In_ IN_ADDR Group,
+ _Out_ MULTICAST_MODE_TYPE *FilterMode,
+ _Inout_ ULONG *SourceCount,
+ _Out_writes_(*SourceCount) IN_ADDR *SourceList)
{
int Error;
DWORD Size, Returned;
WS2TCPIP_INLINE
int
setsourcefilter(
- IN SOCKET Socket,
- IN ULONG Interface,
- IN CONST SOCKADDR *Group,
- IN int GroupLength,
- IN MULTICAST_MODE_TYPE FilterMode,
- IN ULONG SourceCount,
- IN CONST SOCKADDR_STORAGE *SourceList)
+ _In_ SOCKET Socket,
+ _In_ ULONG Interface,
+ _In_ CONST SOCKADDR *Group,
+ _In_ int GroupLength,
+ _In_ MULTICAST_MODE_TYPE FilterMode,
+ _In_ ULONG SourceCount,
+ _In_reads_(SourceCount) CONST SOCKADDR_STORAGE *SourceList)
{
int Error;
DWORD Size, Returned;
return Error;
}
+_Success_(return == 0)
WS2TCPIP_INLINE
int
getsourcefilter(
- IN SOCKET Socket,
- IN ULONG Interface,
- IN CONST SOCKADDR *Group,
- IN int GroupLength,
- OUT MULTICAST_MODE_TYPE *FilterMode,
- IN OUT ULONG *SourceCount,
- OUT SOCKADDR_STORAGE *SourceList)
+ _In_ SOCKET Socket,
+ _In_ ULONG Interface,
+ _In_ CONST SOCKADDR *Group,
+ _In_ int GroupLength,
+ _Out_ MULTICAST_MODE_TYPE *FilterMode,
+ _Inout_ ULONG *SourceCount,
+ _Out_writes_(*SourceCount) SOCKADDR_STORAGE *SourceList)
{
int Error;
DWORD Size, Returned;
WS2TCPIP_INLINE
int
idealsendbacklogquery(
- IN SOCKET s,
- OUT ULONG *pISB)
+ _In_ SOCKET s,
+ _Out_ ULONG *pISB)
{
DWORD bytes;
WS2TCPIP_INLINE
int
idealsendbacklognotify(
- IN SOCKET s,
- IN LPWSAOVERLAPPED lpOverlapped OPTIONAL,
- IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL)
+ _In_ SOCKET s,
+ _In_opt_ LPWSAOVERLAPPED lpOverlapped,
+ _In_opt_ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine)
{
DWORD bytes;
INT
WSAAPI
WSASetSocketSecurity(
- IN SOCKET Socket,
- IN const SOCKET_SECURITY_SETTINGS *SecuritySettings OPTIONAL,
- IN ULONG SecuritySettingsLen,
- IN LPWSAOVERLAPPED Overlapped OPTIONAL,
- IN LPWSAOVERLAPPED_COMPLETION_ROUTINE CompletionRoutine OPTIONAL);
+ _In_ SOCKET Socket,
+ _In_reads_bytes_opt_(SecuritySettingsLen) const SOCKET_SECURITY_SETTINGS *SecuritySettings,
+ _In_ ULONG SecuritySettingsLen,
+ _In_opt_ LPWSAOVERLAPPED Overlapped,
+ _In_opt_ LPWSAOVERLAPPED_COMPLETION_ROUTINE CompletionRoutine);
WINSOCK_API_LINKAGE
INT
WSAAPI
WSAQuerySocketSecurity(
- IN SOCKET Socket,
- IN const SOCKET_SECURITY_QUERY_TEMPLATE *SecurityQueryTemplate OPTIONAL,
- IN ULONG SecurityQueryTemplateLen,
- OUT SOCKET_SECURITY_QUERY_INFO* SecurityQueryInfo OPTIONAL,
- IN OUT ULONG *SecurityQueryInfoLen,
- IN LPWSAOVERLAPPED Overlapped OPTIONAL,
- IN LPWSAOVERLAPPED_COMPLETION_ROUTINE CompletionRoutine OPTIONAL);
+ _In_ SOCKET Socket,
+ _In_reads_bytes_opt_(SecurityQueryTemplateLen) const SOCKET_SECURITY_QUERY_TEMPLATE *SecurityQueryTemplate,
+ _In_ ULONG SecurityQueryTemplateLen,
+ _Out_writes_bytes_to_opt_(*SecurityQueryInfoLen, *SecurityQueryInfoLen) SOCKET_SECURITY_QUERY_INFO* SecurityQueryInfo,
+ _Inout_ ULONG *SecurityQueryInfoLen,
+ _In_opt_ LPWSAOVERLAPPED Overlapped,
+ _In_opt_ LPWSAOVERLAPPED_COMPLETION_ROUTINE CompletionRoutine);
WINSOCK_API_LINKAGE
INT
WSAAPI
WSASetSocketPeerTargetName(
- IN SOCKET Socket,
- IN const SOCKET_PEER_TARGET_NAME *PeerTargetName,
- IN ULONG PeerTargetNameLen,
- IN LPWSAOVERLAPPED Overlapped OPTIONAL,
- IN LPWSAOVERLAPPED_COMPLETION_ROUTINE CompletionRoutine OPTIONAL);
+ _In_ SOCKET Socket,
+ _In_reads_bytes_(PeerTargetNameLen) const SOCKET_PEER_TARGET_NAME *PeerTargetName,
+ _In_ ULONG PeerTargetNameLen,
+ _In_opt_ LPWSAOVERLAPPED Overlapped,
+ _In_opt_ LPWSAOVERLAPPED_COMPLETION_ROUTINE CompletionRoutine);
WINSOCK_API_LINKAGE
INT
WSAAPI
WSADeleteSocketPeerTargetName(
- IN SOCKET Socket,
- IN const struct sockaddr *PeerAddr,
- IN ULONG PeerAddrLen,
- IN LPWSAOVERLAPPED Overlapped OPTIONAL,
- IN LPWSAOVERLAPPED_COMPLETION_ROUTINE CompletionRoutine OPTIONAL);
+ _In_ SOCKET Socket,
+ _In_reads_bytes_(PeerAddrLen) const struct sockaddr *PeerAddr,
+ _In_ ULONG PeerAddrLen,
+ _In_opt_ LPWSAOVERLAPPED Overlapped,
+ _In_opt_ LPWSAOVERLAPPED_COMPLETION_ROUTINE CompletionRoutine);
WINSOCK_API_LINKAGE
INT
WSAAPI
WSAImpersonateSocketPeer(
- IN SOCKET Socket,
- IN const struct sockaddr *PeerAddr OPTIONAL,
- IN ULONG PeerAddrLen);
+ _In_ SOCKET Socket,
+ _In_reads_bytes_opt_(PeerAddrLen) const struct sockaddr *PeerAddr,
+ _In_ ULONG PeerAddrLen);
WINSOCK_API_LINKAGE
INT
CpGetByte(
IN PCPPORT Port,
OUT PUCHAR Byte,
- IN BOOLEAN Wait
+ IN BOOLEAN Wait,
+ IN BOOLEAN Poll
);
VOID
neteventmsg.mc
ntiologc.mc
ntstatus.mc
- pciclass.mc
+ pciclass.mc)
+
+list(APPEND UNICODE_SOURCE_REALLY
sacmsg.mc)
add_message_headers(ANSI ${ANSI_SOURCE})
# FIXME: this needs testing before switching to unicode
add_message_headers(ANSI ${UNICODE_SOURCE})
+add_message_headers(UNICODE ${UNICODE_SOURCE_REALLY})
MessageId=1
SymbolicName=SAC_INIT_STATUS
Language=English
-Computer is booting, SAC started and initialized.\n\nUse the \"ch -?\" command for information about using channels.\nUse the \"?\" command for general help.
+
+Computer is booting, SAC started and initialized.
+
+Use the "ch -?" command for information about using channels.
+Use the "?" command for general help.
+
.
MessageId=2
MessageId=5
SymbolicName=SACDRV_5
Language=English
-The SAC will become unavailable soon. The computer is shutting down.\n
+The SAC will become unavailable soon. The computer is shutting down.
+
.
MessageId=6
MessageId=69
SymbolicName=SACDRV_69
Language=English
-memory: %%4ld kb uptime:%%3ld %%2ld:%%02ld:%%02ld.%%03ld\n\n
+memory: %%4ld kb uptime:%%3ld %%2ld:%%02ld:%%02ld.%%03ld
+
+
.
MessageId=70
MessageId=73
SymbolicName=SACDRV_73
Language=English
-\n Memory:%%7ldK Avail:%%7ldK TotalWs:%%7ldK InRam Kernel:%%5ldK P:%%5ldK
+
+ Memory:%%7ldK Avail:%%7ldK TotalWs:%%7ldK InRam Kernel:%%5ldK P:%%5ldK
.
MessageId=74
MessageId=90
SymbolicName=SACDRV_90
Language=English
-A duplicate process id is being cleaned up by the system. Try the \ncommand again in a few seconds.
+A duplicate process id is being cleaned up by the system. Try the
+command again in a few seconds.
.
MessageId=92
.
MessageId=98
-SymbolicName=SACDRV_98
+SymbolicName=SAC_NO_DATA_MSG
Language=English
None%0
.
.
MessageId=100
-SymbolicName=SACDRV_100
+SymbolicName=SAC_DATACENTER_SUITE_MSG
Language=English
Windows Server 2003 Datacenter Edition%0
.
MessageId=101
-SymbolicName=SACDRV_101
+SymbolicName=SAC_EMBEDDED_SUITE_MSG
Language=English
Windows Server 2003 Embedded%0
.
MessageId=102
-SymbolicName=SACDRV_102
+SymbolicName=SAC_ENTERPRISE_SUITE_MSG
Language=English
Windows Server 2003 Enterprise Edition%0
.
MessageId=103
-SymbolicName=SACDRV_103
+SymbolicName=SAC_NO_SUITE_MSG
Language=English
Windows Server 2003%0
.
MessageId=108
SymbolicName=SACDRV_108
Language=English
-Channel List\n \n(Use \"ch -?\" for information on using channels)\n\n# Status Channel Name
+Channel List
+
+(Use "ch -?" for information on using channels)
+
+# Status Channel Name
.
MessageId=109
SymbolicName=SACDRV_109
Language=English
-EVENT: A new channel has been created. Use \"ch -?\" for channel help.\nChannel: %%s
+EVENT: A new channel has been created. Use "ch -?" for channel help.
+Channel: %%s
.
MessageId=110
SymbolicName=SACDRV_110
Language=English
-EVENT: A channel has been closed.\nChannel: %%s
+EVENT: A channel has been closed.
+Channel: %%s
.
MessageId=111
SymbolicName=SACDRV_111
Language=English
-Name: %%s\nDescription: %%s\nType: %%s\nChannel GUID: %%08lx-%%04x-%%04x-%%02x%%02x-%%02x%%02x%%02x%%02x%%02x%%02x\nApplication Type GUID: %%08lx-%%04x-%%04x-%%02x%%02x-%%02x%%02x%%02x%%02x%%02x%%02x\n\nPress <esc><tab> for next channel.\nPress <esc><tab>0 to return to the SAC channel.\nUse any other key to view this channel.\n
+Name: %%s
+Description: %%s
+Type: %%s
+Channel GUID: %%08lx-%%04x-%%04x-%%02x%%02x-%%02x%%02x%%02x%%02x%%02x%%02x
+Application Type GUID: %%08lx-%%04x-%%04x-%%02x%%02x-%%02x%%02x%%02x%%02x%%02x%%02x
+
+Press <esc><tab> for next channel.
+Press <esc><tab>0 to return to the SAC channel.
+Use any other key to view this channel.
+
.
MessageId=112
SymbolicName=SACDRV_112
Language=English
-ch Channel management commands. Use ch -? for more help.
+ch Channel management commands. Use ch -? for more help.
.
MessageId=113
MessageId=116
SymbolicName=SACDRV_116
Language=English
-Error! Failed to remove channel! \n\nPlease contact your system administrator.\n
+Error! Failed to remove channel!
+
+Please contact your system administrator.
+
.
MessageId=119
MessageId=120
SymbolicName=SACDRV_120
Language=English
-Timeout: Unable to launch a Command Prompt. The service responsible for \n launching Command Prompt channels has timed out. This may be \n because the service is malfunctioning or is unresponsive.
+Timeout: Unable to launch a Command Prompt. The service responsible for
+ launching Command Prompt channels has timed out. This may be
+ because the service is malfunctioning or is unresponsive.
.
MessageId=121
MessageId=131
SymbolicName=SACDRV_131
Language=English
-Error: Unable to launch a Command Prompt. The service responsible for launching\n Command Prompt channels has not yet registered. This may be because the\n service is not yet started, is disabled by the administrator, is\n malfunctioning or is unresponsive.
+Error: Unable to launch a Command Prompt. The service responsible for launching
+ Command Prompt channels has not yet registered. This may be because the
+ service is not yet started, is disabled by the administrator, is
+ malfunctioning or is unresponsive.
.
MessageId=132
MessageId=134
SymbolicName=SACDRV_134
Language=English
-EVENT: An attempt was made to close a channel but failed.\nChannel: %%s
+EVENT: An attempt was made to close a channel but failed.
+Channel: %%s
.
MessageId=135
SymbolicName=SACDRV_135
Language=English
-EVENT: An attempt to close a channel failed because it is already closed.\nChannel: %%s
+EVENT: An attempt to close a channel failed because it is already closed.
+Channel: %%s
.
MessageId=136
SymbolicName=SACDRV_136
Language=English
-Channel management commands:\n\nch List all channels.\n\nStatus Legend: (AB)\nA: Channel operational status\n 'A' = Channel is active.\n 'I' = Channel is inactive.\nB: Channel Type\n 'V' = VT-UTF8 emulation.\n 'R' = Raw - no emulation.\n\nch -si <#> Switch to a channel by its number.\nch -sn <name> Switch to a channel by its name.\nch -ci <#> Close a channel by its number.\nch -cn <name> Close a channel by its name.\n\nPress <esc><tab> to select a channel.\nPress <esc><tab>0 to return to the SAC channel.
+Channel management commands:
+
+ch List all channels.
+
+Status Legend: (AB)
+A: Channel operational status
+ 'A' = Channel is active.
+ 'I' = Channel is inactive.
+B: Channel Type
+ 'V' = VT-UTF8 emulation.
+ 'R' = Raw - no emulation.
+
+ch -si <#> Switch to a channel by its number.
+ch -sn <name> Switch to a channel by its name.
+ch -ci <#> Close a channel by its number.
+ch -cn <name> Close a channel by its name.
+
+Press <esc><tab> to select a channel.
+Press <esc><tab>0 to return to the SAC channel.
.
MessageId=137
.
MessageId=153
-SymbolicName=SACDRV_153
+SymbolicName=SAC_UNINITIALIZED_MSG
Language=English
not yet initialized%0
.
MessageId=154
SymbolicName=SACDRV_154
Language=English
-The maximum number of channels has been reached.
+The maximum number of channels has been reached.
.
} CSRSRV_API_NUMBER, *PCSRSRV_API_NUMBER;
-/*
-typedef struct _CSR_API_NUMBER
-{
- WORD Index;
- WORD Subsystem;
-} CSR_API_NUMBER, *PCSR_API_NUMBER;
-*/
typedef ULONG CSR_API_NUMBER;
#define CSR_CREATE_API_NUMBER(ServerId, ApiId) \
(ULONG)((ULONG)(ApiNumber) & 0xFFFF)
-typedef struct _CSR_CONNECTION_INFO
+typedef struct _CSR_API_CONNECTINFO
{
ULONG Version;
ULONG Unknown;
ULONG DebugFlags;
ULONG Unknown2[3];
HANDLE ProcessId;
-} CSR_CONNECTION_INFO, *PCSR_CONNECTION_INFO;
+} CSR_API_CONNECTINFO, *PCSR_API_CONNECTINFO;
+
+#define CSRSRV_VERSION 0x10000
// We must have a size at most equal to the maximum acceptable LPC data size.
-C_ASSERT(sizeof(CSR_CONNECTION_INFO) <= LPC_MAX_DATA_LENGTH);
+C_ASSERT(sizeof(CSR_API_CONNECTINFO) <= LPC_MAX_DATA_LENGTH);
typedef struct _CSR_IDENTIFY_ALTERTABLE_THREAD
PORT_MESSAGE Header;
union
{
- CSR_CONNECTION_INFO ConnectionInfo; // Uniquely used in CSRSRV for internal signaling (opening a new connection).
+ CSR_API_CONNECTINFO ConnectionInfo; // Uniquely used in CSRSRV for internal signaling (opening a new connection).
struct
{
PCSR_CAPTURE_BUFFER CsrCaptureData;
BasepMaxApiNumber
} BASESRV_API_NUMBER, *PBASESRV_API_NUMBER;
+
+typedef struct _BASESRV_API_CONNECTINFO
+{
+ ULONG ExpectedVersion;
+ HANDLE DefaultObjectDirectory;
+ ULONG WindowsVersion;
+ ULONG CurrentVersion;
+ ULONG DebugFlags;
+ WCHAR WindowsDirectory[MAX_PATH];
+ WCHAR WindowsSystemDirectory[MAX_PATH];
+} BASESRV_API_CONNECTINFO, *PBASESRV_API_CONNECTINFO;
+
+#define BASESRV_VERSION 0x10000
+
+
typedef struct _BASE_SXS_CREATEPROCESS_MSG
{
ULONG Flags;
typedef struct
{
- UINT uExitCode;
-} BASE_EXIT_PROCESS, *PBASE_EXIT_PROCESS;
+ UINT UniqueID;
+} BASE_GET_TEMP_FILE, *PBASE_GET_TEMP_FILE;
typedef struct
{
- UINT UniqueID;
-} BASE_GET_TEMP_FILE, *PBASE_GET_TEMP_FILE;
+ UINT uExitCode;
+} BASE_EXIT_PROCESS, *PBASE_EXIT_PROCESS;
typedef struct
{
- ULONG iTask;
+ ULONG iTask;
HANDLE ConsoleHandle;
- ULONG BinaryType;
+ ULONG BinaryType;
HANDLE WaitObjectForParent;
HANDLE StdIn;
HANDLE StdOut;
HANDLE StdErr;
- ULONG CodePage;
- ULONG dwCreationFlags;
- PCHAR CmdLine;
- PCHAR appName;
- PCHAR PifFile;
- PCHAR CurDirectory;
- PCHAR Env;
- ULONG EnvLen;
- PVOID StartupInfo;
- PCHAR Desktop;
- ULONG DesktopLen;
- PCHAR Title;
- ULONG TitleLen;
- PCHAR Reserved;
- ULONG ReservedLen;
+ ULONG CodePage;
+ ULONG dwCreationFlags;
+ PCHAR CmdLine;
+ PCHAR appName;
+ PCHAR PifFile;
+ PCHAR CurDirectory;
+ PCHAR Env;
+ ULONG EnvLen;
+ LPSTARTUPINFOA StartupInfo;
+ PCHAR Desktop;
+ ULONG DesktopLen;
+ PCHAR Title;
+ ULONG TitleLen;
+ PCHAR Reserved;
+ ULONG ReservedLen;
USHORT CmdLen;
USHORT AppLen;
USHORT PifLen;
typedef struct
{
- ULONG iTask;
- ULONG BinaryType;
+ ULONG iTask;
+ ULONG BinaryType;
HANDLE ConsoleHandle;
HANDLE VDMProcessHandle;
HANDLE WaitObjectForParent;
USHORT VDMCreationState;
} BASE_UPDATE_VDM_ENTRY, *PBASE_UPDATE_VDM_ENTRY;
+typedef struct
+{
+ ULONG iTask;
+ HANDLE ConsoleHandle;
+ HANDLE WaitObjectForVDM;
+ HANDLE StdIn;
+ HANDLE StdOut;
+ HANDLE StdErr;
+ ULONG CodePage;
+ ULONG dwCreationFlags;
+ ULONG ExitCode;
+ PCHAR CmdLine;
+ PCHAR AppName;
+ PCHAR PifFile;
+ PCHAR CurDirectory;
+ PCHAR Env;
+ ULONG EnvLen;
+ LPSTARTUPINFOA StartupInfo;
+ PCHAR Desktop;
+ ULONG DesktopLen;
+ PCHAR Title;
+ ULONG TitleLen;
+ PCHAR Reserved;
+ ULONG ReservedLen;
+ USHORT CurrentDrive;
+ USHORT CmdLen;
+ USHORT AppLen;
+ USHORT PifLen;
+ USHORT CurDirectoryLen;
+ USHORT VDMState;
+ ULONG fComingFromBat;
+} BASE_GET_NEXT_VDM_COMMAND, *PBASE_GET_NEXT_VDM_COMMAND;
+
+typedef struct
+{
+ HANDLE ConsoleHandle;
+ ULONG iWowTask;
+ HANDLE WaitObjectForVDM;
+} BASE_EXIT_VDM, *PBASE_EXIT_VDM;
+
+typedef struct
+{
+ ULONG FirstVDM;
+} BASE_IS_FIRST_VDM, *PBASE_IS_FIRST_VDM;
+
typedef struct
{
HANDLE ConsoleHandle;
HANDLE hParent;
- ULONG ExitCode;
+ ULONG ExitCode;
} BASE_GET_VDM_EXIT_CODE, *PBASE_GET_VDM_EXIT_CODE;
typedef struct
{
- DWORD Level;
- DWORD Flags;
-} BASE_SET_PROCESS_SHUTDOWN_PARAMS, *PBASE_SET_PROCESS_SHUTDOWN_PARAMS;
+ HANDLE ConsoleHandle;
+ ULONG fIncDec;
+} BASE_SET_REENTER_COUNT, *PBASE_SET_REENTER_COUNT;
+
+typedef struct
+{
+ ULONG ShutdownLevel;
+ ULONG ShutdownFlags;
+} BASE_GETSET_PROCESS_SHUTDOWN_PARAMS, *PBASE_GETSET_PROCESS_SHUTDOWN_PARAMS;
typedef struct
{
- DWORD Level;
- DWORD Flags;
-} BASE_GET_PROCESS_SHUTDOWN_PARAMS, *PBASE_GET_PROCESS_SHUTDOWN_PARAMS;
+ HANDLE ConsoleHandle;
+ PCHAR lpszzCurDirs;
+ ULONG cchCurDirs;
+} BASE_GETSET_VDM_CURDIRS, *PBASE_GETSET_VDM_CURDIRS;
+
+typedef struct
+{
+ HANDLE ConsoleHandle;
+ ULONG fBeginEnd;
+} BASE_BAT_NOTIFICATION, *PBASE_BAT_NOTIFICATION;
+
+typedef struct
+{
+ HANDLE hwndWowExec;
+} BASE_REGISTER_WOWEXEC, *PBASE_REGISTER_WOWEXEC;
typedef struct
{
typedef struct
{
+ UNICODE_STRING IniFileName;
+} BASE_REFRESH_INIFILE_MAPPING, *PBASE_REFRESH_INIFILE_MAPPING;
+
+typedef struct
+{
+ ULONG Flags;
UNICODE_STRING DeviceName;
- UNICODE_STRING TargetName;
- DWORD dwFlags;
+ UNICODE_STRING TargetPath;
} BASE_DEFINE_DOS_DEVICE, *PBASE_DEFINE_DOS_DEVICE;
typedef struct _BASE_API_MESSAGE
{
BASE_CREATE_PROCESS CreateProcessRequest;
BASE_CREATE_THREAD CreateThreadRequest;
+ BASE_GET_TEMP_FILE GetTempFileRequest;
BASE_EXIT_PROCESS ExitProcessRequest;
- BASE_GET_TEMP_FILE GetTempFile;
- BASE_CHECK_VDM CheckVdm;
- BASE_UPDATE_VDM_ENTRY UpdateVdmEntry;
- BASE_GET_VDM_EXIT_CODE GetVdmExitCode;
- BASE_SET_PROCESS_SHUTDOWN_PARAMS SetShutdownParametersRequest;
- BASE_GET_PROCESS_SHUTDOWN_PARAMS GetShutdownParametersRequest;
+ BASE_CHECK_VDM CheckVDMRequest;
+ BASE_UPDATE_VDM_ENTRY UpdateVDMEntryRequest;
+ BASE_GET_NEXT_VDM_COMMAND GetNextVDMCommandRequest;
+ BASE_EXIT_VDM ExitVDMRequest;
+ BASE_IS_FIRST_VDM IsFirstVDMRequest;
+ BASE_GET_VDM_EXIT_CODE GetVDMExitCodeRequest;
+ BASE_SET_REENTER_COUNT SetReenterCountRequest;
+ BASE_GETSET_PROCESS_SHUTDOWN_PARAMS ShutdownParametersRequest;
+ BASE_GETSET_VDM_CURDIRS VDMCurrentDirsRequest;
+ BASE_BAT_NOTIFICATION BatNotificationRequest;
+ BASE_REGISTER_WOWEXEC RegisterWowExecRequest;
BASE_SOUND_SENTRY SoundSentryRequest;
+ BASE_REFRESH_INIFILE_MAPPING RefreshIniFileMappingRequest;
BASE_DEFINE_DOS_DEVICE DefineDosDeviceRequest;
} Data;
} BASE_API_MESSAGE, *PBASE_API_MESSAGE;
INT IconIndex; // Index of the icon
} CONSOLE_START_INFO, *PCONSOLE_START_INFO;
-typedef struct _CONSOLE_CONNECTION_INFO
+typedef struct _CONSRV_API_CONNECTINFO
{
BOOL ConsoleNeeded; // Used for GUI apps only.
HANDLE InputWaitHandle;
LPTHREAD_START_ROUTINE CtrlDispatcher;
LPTHREAD_START_ROUTINE PropDispatcher;
-} CONSOLE_CONNECTION_INFO, *PCONSOLE_CONNECTION_INFO;
+} CONSRV_API_CONNECTINFO, *PCONSRV_API_CONNECTINFO;
typedef struct
NTAPI
CpGetByte(IN PCPPORT Port,
OUT PUCHAR Byte,
- IN BOOLEAN Wait)
+ IN BOOLEAN Wait,
+ IN BOOLEAN Poll)
{
UCHAR Lsr;
ULONG LimitCount = Wait ? TIMEOUT_COUNT : 1;
return CP_GET_ERROR;
}
+ /* If only polling was requested by caller, return now */
+ if (Poll) return CP_GET_SUCCESS;
+
/* Otherwise read the byte and return it */
*Byte = READ_PORT_UCHAR(Port->Address + RECEIVE_BUFFER_REGISTER);
FILE_SYNCHRONOUS_IO_NONALERT | FILE_NON_DIRECTORY_FILE);
if (!NT_SUCCESS(Status))
{
- DPRINT1("Failed to read image file from disk\n");
+ DPRINT1("Failed to read image file from disk, Status = 0x%08X\n", Status);
return Status;
}
hFile);
if (!NT_SUCCESS(Status))
{
- DPRINT1("Failed to create section for image file\n");
+ DPRINT1("Failed to create section for image file, Status = 0x%08X\n", Status);
}
ZwClose(hFile);
/* FUNCTIONS *****************************************************************/
+FORCEINLINE
+KIRQL
+HdlspAcquireGlobalLock(VOID)
+{
+ KIRQL OldIrql;
+
+ /* Don't acquire the lock if we are bugchecking */
+ if (!HeadlessGlobals->InBugCheck)
+ {
+ KeAcquireSpinLock(&HeadlessGlobals->SpinLock, &OldIrql);
+ }
+ else
+ {
+ OldIrql = 0xFF;
+ }
+
+ return OldIrql;
+}
+
+FORCEINLINE
+VOID
+HdlspReleaselobalLock(IN KIRQL OldIrql)
+{
+ /* Only release the lock if we aren't bugchecking */
+ if (OldIrql != 0xFF)
+ {
+ KeReleaseSpinLock(&HeadlessGlobals->SpinLock, OldIrql);
+ }
+ else
+ {
+ ASSERT(HeadlessGlobals->InBugCheck == TRUE);
+ }
+}
+
VOID
NTAPI
-HdlspSendStringAtBaud(
- IN PUCHAR String
- )
+HdlspSendStringAtBaud(IN PUCHAR String)
{
- /* Send every byte */
- while (*String++ != ANSI_NULL)
- {
- InbvPortPutByte(HeadlessGlobals->TerminalPort, *String);
- }
+ /* Send every byte */
+ while (*String++ != ANSI_NULL)
+ {
+ InbvPortPutByte(HeadlessGlobals->TerminalPort, *String);
+ }
}
NTSTATUS
NTAPI
-HdlspEnableTerminal(
- IN BOOLEAN Enable
- )
+HdlspEnableTerminal(IN BOOLEAN Enable)
{
- /* Enable if requested, as long as this isn't a PCI serial port crashing */
- if ((Enable) &&
- !(HeadlessGlobals->TerminalEnabled) &&
- !((HeadlessGlobals->IsMMIODevice) && (HeadlessGlobals->InBugCheck)))
- {
- /* Initialize the COM port with cportlib */
- HeadlessGlobals->TerminalEnabled = InbvPortInitialize(
- HeadlessGlobals->TerminalBaudRate,
- HeadlessGlobals->TerminalPortNumber,
- HeadlessGlobals->TerminalPortAddress,
- &HeadlessGlobals->TerminalPort,
- HeadlessGlobals->IsMMIODevice);
- if (!HeadlessGlobals->TerminalEnabled) return STATUS_UNSUCCESSFUL;
-
- /* Cleanup the screen and reset the cursor */
- HdlspSendStringAtBaud((PUCHAR)"\x1B[2J");
- HdlspSendStringAtBaud((PUCHAR)"\x1B[H");
-
- /* Enable FIFO */
- InbvPortEnableFifo(HeadlessGlobals->TerminalPort, TRUE);
- }
- else if (!Enable)
- {
- /* Specific case when headless is being disabled */
- InbvPortTerminate(HeadlessGlobals->TerminalPort);
- HeadlessGlobals->TerminalPort = 0;
- HeadlessGlobals->TerminalEnabled = FALSE;
- }
- return STATUS_SUCCESS;
+ /* Enable if requested, as long as this isn't a PCI serial port crashing */
+ if ((Enable) &&
+ !(HeadlessGlobals->TerminalEnabled) &&
+ !((HeadlessGlobals->IsMMIODevice) && (HeadlessGlobals->InBugCheck)))
+ {
+ /* Initialize the COM port with cportlib */
+ HeadlessGlobals->TerminalEnabled = InbvPortInitialize(HeadlessGlobals->
+ TerminalBaudRate,
+ HeadlessGlobals->
+ TerminalPortNumber,
+ HeadlessGlobals->
+ TerminalPortAddress,
+ &HeadlessGlobals->
+ TerminalPort,
+ HeadlessGlobals->
+ IsMMIODevice);
+ if (!HeadlessGlobals->TerminalEnabled)
+ {
+ DPRINT1("Failed to initialize port through cportlib\n");
+ return STATUS_UNSUCCESSFUL;
+ }
+
+ /* Cleanup the screen and reset the cursor */
+ HdlspSendStringAtBaud((PUCHAR)"\x1B[2J");
+ HdlspSendStringAtBaud((PUCHAR)"\x1B[H");
+
+ /* Enable FIFO */
+ InbvPortEnableFifo(HeadlessGlobals->TerminalPort, TRUE);
+ }
+ else if (!Enable)
+ {
+ /* Specific case when headless is being disabled */
+ InbvPortTerminate(HeadlessGlobals->TerminalPort);
+ HeadlessGlobals->TerminalPort = 0;
+ HeadlessGlobals->TerminalEnabled = FALSE;
+ }
+
+ /* All done */
+ return STATUS_SUCCESS;
}
VOID
NTAPI
INIT_FUNCTION
-HeadlessInit(
- IN PLOADER_PARAMETER_BLOCK LoaderBlock
- )
+HeadlessInit(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
{
- PHEADLESS_LOADER_BLOCK HeadlessBlock;
-
- HeadlessBlock = LoaderBlock->Extension->HeadlessLoaderBlock;
- if (!HeadlessBlock) return;
- if ((HeadlessBlock->PortNumber > 4) && (HeadlessBlock->UsedBiosSettings)) return;
-
- HeadlessGlobals = ExAllocatePoolWithTag(
- NonPagedPool,
- sizeof(HEADLESS_GLOBALS),
- 'sldH');
- if (!HeadlessGlobals) return;
-
- /* Zero and copy loader data */
- RtlZeroMemory(HeadlessGlobals, sizeof(HEADLESS_GLOBALS));
- HeadlessGlobals->TerminalPortNumber = HeadlessBlock->PortNumber;
- HeadlessGlobals->TerminalPortAddress = HeadlessBlock->PortAddress;
- HeadlessGlobals->TerminalBaudRate = HeadlessBlock->BaudRate;
- HeadlessGlobals->TerminalParity = HeadlessBlock->Parity;
- HeadlessGlobals->TerminalStopBits = HeadlessBlock->StopBits;
- HeadlessGlobals->UsedBiosSettings = HeadlessBlock->UsedBiosSettings;
- HeadlessGlobals->IsMMIODevice = HeadlessBlock->IsMMIODevice;
- HeadlessGlobals->TerminalType = HeadlessBlock->TerminalType;
- HeadlessGlobals->SystemGUID = HeadlessBlock->SystemGUID;
-
- /* These two are opposites of each other */
- if (HeadlessGlobals->IsMMIODevice) HeadlessGlobals->IsNonLegacyDevice = TRUE;
-
- /* Check for a PCI device, warn that this isn't supported */
- if (HeadlessBlock->PciDeviceId != PCI_INVALID_VENDORID)
- {
- DPRINT1("PCI Serial Ports not supported\n");
- }
-
- /* Log entries are not yet supported */
- DPRINT1("FIXME: No Headless logging support\n");
-
- /* Allocate temporary buffer */
- HeadlessGlobals->TmpBuffer = ExAllocatePoolWithTag(NonPagedPool, 80, 'sldH');
- if (!HeadlessGlobals->TmpBuffer) return;
-
- /* Windows seems to apply some special hacks for 9600 bps */
- if (HeadlessGlobals->TerminalBaudRate == 9600)
- {
- DPRINT1("Please use other baud rate than 9600bps for now\n");
- }
+ PHEADLESS_LOADER_BLOCK HeadlessBlock;
+
+ /* Only initialize further if the loader found EMS enabled */
+ HeadlessBlock = LoaderBlock->Extension->HeadlessLoaderBlock;
+ if (!HeadlessBlock) return;
+
+ /* Ignore invalid EMS settings */
+ if ((HeadlessBlock->PortNumber > 4) && (HeadlessBlock->UsedBiosSettings)) return;
+
+ /* Allocate the global headless data */
+ HeadlessGlobals = ExAllocatePoolWithTag(NonPagedPool,
+ sizeof(*HeadlessGlobals),
+ 'sldH');
+ if (!HeadlessGlobals) return;
+
+ /* Zero and copy loader data */
+ RtlZeroMemory(HeadlessGlobals, sizeof(*HeadlessGlobals));
+ HeadlessGlobals->TerminalPortNumber = HeadlessBlock->PortNumber;
+ HeadlessGlobals->TerminalPortAddress = HeadlessBlock->PortAddress;
+ HeadlessGlobals->TerminalBaudRate = HeadlessBlock->BaudRate;
+ HeadlessGlobals->TerminalParity = HeadlessBlock->Parity;
+ HeadlessGlobals->TerminalStopBits = HeadlessBlock->StopBits;
+ HeadlessGlobals->UsedBiosSettings = HeadlessBlock->UsedBiosSettings;
+ HeadlessGlobals->IsMMIODevice = HeadlessBlock->IsMMIODevice;
+ HeadlessGlobals->TerminalType = HeadlessBlock->TerminalType;
+ HeadlessGlobals->SystemGUID = HeadlessBlock->SystemGUID;
+ DPRINT1("EMS on Port %d (0x%lx) at %d bps\n",
+ HeadlessGlobals->TerminalPortNumber,
+ HeadlessGlobals->TerminalPortAddress,
+ HeadlessGlobals->TerminalBaudRate);
+
+ /* These two are opposites of each other */
+ if (HeadlessGlobals->IsMMIODevice) HeadlessGlobals->IsNonLegacyDevice = TRUE;
+
+ /* Check for a PCI device, warn that this isn't supported */
+ if (HeadlessBlock->PciDeviceId != PCI_INVALID_VENDORID)
+ {
+ DPRINT1("PCI Serial Ports not supported\n");
+ }
+
+ /* Log entries are not yet supported */
+ DPRINT1("FIXME: No Headless logging support\n");
+
+ /* Allocate temporary buffer */
+ HeadlessGlobals->TmpBuffer = ExAllocatePoolWithTag(NonPagedPool, 80, 'sldH');
+ if (!HeadlessGlobals->TmpBuffer) return;
+
+ /* Windows seems to apply some special hacks for 9600 bps */
+ if (HeadlessGlobals->TerminalBaudRate == 9600)
+ {
+ DPRINT1("Please use other baud rate than 9600bps for now\n");
+ }
+
+ /* Enable the terminal */
+ HdlspEnableTerminal(TRUE);
+}
- /* Enable the terminal */
- HdlspEnableTerminal(TRUE);
+VOID
+NTAPI
+HdlspPutData(IN PUCHAR Data,
+ IN ULONG DataSize)
+{
+ ULONG i;
+ for (i = 0; i < DataSize; i++)
+ {
+ InbvPortPutByte(HeadlessGlobals->TerminalPort, Data[i]++);
+ }
}
VOID
NTAPI
-HdlspPutString(
- IN PUCHAR String
- )
+HdlspPutString(IN PUCHAR String)
{
PUCHAR Dest = HeadlessGlobals->TmpBuffer;
UCHAR Char = 0;
NTSTATUS
NTAPI
-HdlspDispatch(
- IN HEADLESS_CMD Command,
- IN PVOID InputBuffer,
- IN SIZE_T InputBufferSize,
- OUT PVOID OutputBuffer,
- OUT PSIZE_T OutputBufferSize
- )
+HdlspDispatch(IN HEADLESS_CMD Command,
+ IN PVOID InputBuffer,
+ IN SIZE_T InputBufferSize,
+ OUT PVOID OutputBuffer,
+ OUT PSIZE_T OutputBufferSize)
{
- //NTSTATUS Status = STATUS_NOT_IMPLEMENTED;
- ASSERT(HeadlessGlobals != NULL);
+ KIRQL OldIrql;
+ PHEADLESS_RSP_QUERY_INFO HeadlessInfo;
+ PHEADLESS_CMD_PUT_STRING PutString;
+ PHEADLESS_CMD_ENABLE_TERMINAL EnableTerminal;
+ PHEADLESS_RSP_GET_BYTE GetByte;
+ NTSTATUS Status = STATUS_NOT_IMPLEMENTED;
+ ASSERT(HeadlessGlobals != NULL);
// ASSERT(HeadlessGlobals->PageLockHandle != NULL);
- /* FIXME: This should be using the headless spinlock */
-
- /* Ignore non-reentrant commands */
- if ((Command != HeadlessCmdAddLogEntry) &&
- (Command != HeadlessCmdStartBugCheck) &&
- (Command != HeadlessCmdSendBlueScreenData) &&
- (Command != HeadlessCmdDoBugCheckProcessing))
- {
- if (HeadlessGlobals->ProcessingCmd) return STATUS_UNSUCCESSFUL;
-
- /* Don't allow these commands next time */
- HeadlessGlobals->ProcessingCmd = TRUE;
- }
+ /* Ignore non-reentrant commands */
+ if ((Command != HeadlessCmdAddLogEntry) &&
+ (Command != HeadlessCmdStartBugCheck) &&
+ (Command != HeadlessCmdSendBlueScreenData) &&
+ (Command != HeadlessCmdDoBugCheckProcessing))
+ {
+ OldIrql = HdlspAcquireGlobalLock();
+
+ if (HeadlessGlobals->ProcessingCmd)
+ {
+ HdlspReleaselobalLock(OldIrql);
+ return STATUS_UNSUCCESSFUL;
+ }
+
+ /* Don't allow these commands next time */
+ HeadlessGlobals->ProcessingCmd = TRUE;
+ HdlspReleaselobalLock(OldIrql);
+ }
+
+ /* Handle each command */
+ switch (Command)
+ {
+ case HeadlessCmdEnableTerminal:
+
+ /* Make sure the caller passed valid data */
+ if (!(InputBuffer) ||
+ (InputBufferSize != sizeof(*EnableTerminal)))
+ {
+ DPRINT1("Invalid buffer\n");
+ Status = STATUS_INVALID_PARAMETER;
+ break;
+ }
+
+ /* Go and enable it */
+ EnableTerminal = InputBuffer;
+ Status = HdlspEnableTerminal(EnableTerminal->Enable);
+ break;
- /* Handle each command */
- switch (Command)
- {
- case HeadlessCmdEnableTerminal:
- break;
case HeadlessCmdCheckForReboot:
break;
case HeadlessCmdPutString:
- /* Validate the existence of an input buffer */
- if (!InputBuffer)
- {
- //Status = STATUS_INVALID_PARAMETER;
- goto Reset;
- }
-
- /* Terminal should be on */
- if (HeadlessGlobals->TerminalEnabled)
- {
- /* Print each byte in the string making sure VT100 chars are used */
- PHEADLESS_CMD_PUT_STRING PutString = (PVOID)InputBuffer;
- HdlspPutString(PutString->String);
- }
+ /* Validate the existence of an input buffer */
+ if (!InputBuffer)
+ {
+ Status = STATUS_INVALID_PARAMETER;
+ break;
+ }
+
+ /* Terminal should be on */
+ if (HeadlessGlobals->TerminalEnabled)
+ {
+ /* Print each byte in the string making sure VT100 chars are used */
+ PutString = InputBuffer;
+ HdlspPutString(PutString->String);
+ }
+
+ /* Return success either way */
+ Status = STATUS_SUCCESS;
+ break;
+
+ case HeadlessCmdClearDisplay:
+
+ /* Send the VT100 clear screen command if the terminal is enabled */
+ if (HeadlessGlobals->TerminalEnabled)
+ {
+ HdlspSendStringAtBaud((PUCHAR)"\033[2J");
+ }
+
+ /* Return success either way */
+ Status = STATUS_SUCCESS;
+ break;
- /* Return success either way */
- //Status = STATUS_SUCCESS;
- break;
- case HeadlessCmdClearDisplay:
- break;
case HeadlessCmdClearToEndOfDisplay:
break;
case HeadlessCmdClearToEndOfLine:
break;
case HeadlessCmdTerminalPoll:
break;
- case HeadlessCmdGetByte:
- break;
+
+ case HeadlessCmdGetByte:
+
+ /* Make sure the caller passed valid data */
+ if (!(OutputBuffer) ||
+ !(OutputBufferSize) ||
+ (*OutputBufferSize < sizeof(*GetByte)))
+ {
+ DPRINT1("Invalid buffer\n");
+ Status = STATUS_INVALID_PARAMETER;
+ break;
+ }
+
+ /* Make sure the terminal is enabled */
+ GetByte = OutputBuffer;
+ if (HeadlessGlobals->TerminalEnabled)
+ {
+ /* Poll if something is on the wire */
+ if (InbvPortPollOnly(HeadlessGlobals->TerminalPort))
+ {
+ /* If so, read it */
+ InbvPortGetByte(HeadlessGlobals->TerminalPort,
+ &GetByte->Value);
+ }
+ else
+ {
+ /* Nothing is there, return 0 */
+ GetByte->Value = 0;
+ }
+ }
+ else
+ {
+ /* Otherwise return nothing */
+ GetByte->Value = 0;
+ }
+
+ /* Return success either way */
+ Status = STATUS_SUCCESS;
+ break;
+
case HeadlessCmdGetLine:
break;
case HeadlessCmdStartBugCheck:
case HeadlessCmdDoBugCheckProcessing:
break;
case HeadlessCmdQueryInformation:
- break;
+
+ /* Make sure the caller passed valid data */
+ if (!(OutputBuffer) ||
+ !(OutputBufferSize) ||
+ (*OutputBufferSize < sizeof(*HeadlessInfo)))
+ {
+ DPRINT1("Invalid buffer\n");
+ Status = STATUS_INVALID_PARAMETER;
+ break;
+ }
+
+ /* If we got here, headless is enabled -- we know this much */
+ HeadlessInfo = OutputBuffer;
+ HeadlessInfo->PortType = HeadlessSerialPort;
+ HeadlessInfo->Serial.TerminalAttached = TRUE;
+ HeadlessInfo->Serial.UsedBiosSettings = HeadlessGlobals->UsedBiosSettings;
+ HeadlessInfo->Serial.TerminalBaudRate = HeadlessGlobals->TerminalBaudRate;
+ HeadlessInfo->Serial.TerminalType = HeadlessGlobals->TerminalType;
+
+ /* Now check on what port/baud it's enabled on */
+ if ((HeadlessGlobals->TerminalPortNumber >= 1) ||
+ (HeadlessGlobals->UsedBiosSettings))
+ {
+ /* Get the EMS information */
+ HeadlessInfo->Serial.TerminalPort = HeadlessGlobals->
+ TerminalPortNumber;
+ HeadlessInfo->Serial.TerminalPortBaseAddress = HeadlessGlobals->
+ TerminalPortAddress;
+ }
+ else
+ {
+ /* We don't know for sure */
+ HeadlessInfo->Serial.TerminalPort = SerialPortUndefined;
+ HeadlessInfo->Serial.TerminalPortBaseAddress = 0;
+ }
+
+ /* All done */
+ Status = STATUS_SUCCESS;
+ break;
case HeadlessCmdAddLogEntry:
break;
case HeadlessCmdDisplayLog:
break;
- case HeadlessCmdSetBlueScreenData:
- break;
+ case HeadlessCmdSetBlueScreenData:
+
+ /* Validate the existence of an input buffer */
+ if (!InputBuffer)
+ {
+ Status = STATUS_INVALID_PARAMETER;
+ break;
+ }
+
+ /* Lie so that we can get Hdl bringup a little bit further */
+ UNIMPLEMENTED;
+ Status = STATUS_SUCCESS;
+ break;
case HeadlessCmdSendBlueScreenData:
break;
case HeadlessCmdQueryGUID:
break;
case HeadlessCmdPutData:
- break;
- default:
- break;
- }
-Reset:
- /* Unset prcessing state */
- if ((Command != HeadlessCmdAddLogEntry) &&
- (Command != HeadlessCmdStartBugCheck) &&
- (Command != HeadlessCmdSendBlueScreenData) &&
- (Command != HeadlessCmdDoBugCheckProcessing))
- {
- ASSERT(HeadlessGlobals->ProcessingCmd == TRUE);
- HeadlessGlobals->ProcessingCmd = FALSE;
- }
-
- //UNIMPLEMENTED;
- return STATUS_SUCCESS;
+ /* Validate the existence of an input buffer */
+ if (!(InputBuffer) || !(InputBufferSize))
+ {
+ Status = STATUS_INVALID_PARAMETER;
+ break;
+ }
+
+ /* Terminal should be on */
+ if (HeadlessGlobals->TerminalEnabled)
+ {
+ /* Print each byte in the string making sure VT100 chars are used */
+ PutString = InputBuffer;
+ HdlspPutData(PutString->String, InputBufferSize);
+ }
+
+ /* Return success either way */
+ Status = STATUS_SUCCESS;
+ break;
+
+ default:
+ break;
+ }
+
+ /* Unset processing state */
+ if ((Command != HeadlessCmdAddLogEntry) &&
+ (Command != HeadlessCmdStartBugCheck) &&
+ (Command != HeadlessCmdSendBlueScreenData) &&
+ (Command != HeadlessCmdDoBugCheckProcessing))
+ {
+ ASSERT(HeadlessGlobals->ProcessingCmd == TRUE);
+ HeadlessGlobals->ProcessingCmd = FALSE;
+ }
+
+ /* All done */
+ return Status;
}
/*
- * @unimplemented
+ * @implemented
*/
NTSTATUS
NTAPI
-HeadlessDispatch(
- IN HEADLESS_CMD Command,
- IN PVOID InputBuffer,
- IN SIZE_T InputBufferSize,
- OUT PVOID OutputBuffer,
- OUT PSIZE_T OutputBufferSize
- )
+HeadlessDispatch(IN HEADLESS_CMD Command,
+ IN PVOID InputBuffer,
+ IN SIZE_T InputBufferSize,
+ OUT PVOID OutputBuffer,
+ OUT PSIZE_T OutputBufferSize)
{
- /* Check for stubs that will expect something even with headless off */
- if (!HeadlessGlobals)
- {
- /* Don't allow the SAC to connect */
- if (Command == HeadlessCmdEnableTerminal) return STATUS_UNSUCCESSFUL;
-
- /* Send bogus reply */
- if ((Command == HeadlessCmdQueryInformation) ||
- (Command == HeadlessCmdGetByte) ||
- (Command == HeadlessCmdGetLine) ||
- (Command == HeadlessCmdCheckForReboot) ||
- (Command == HeadlessCmdTerminalPoll))
- {
- if (!(OutputBuffer) || !(OutputBufferSize)) return STATUS_INVALID_PARAMETER;
- RtlZeroMemory(OutputBuffer, *OutputBufferSize);
- }
- return STATUS_SUCCESS;
- }
-
- /* Do the real work */
- return HdlspDispatch(
- Command,
- InputBuffer,
- InputBufferSize,
- OutputBuffer,
- OutputBufferSize);
-}
+ /* Check for stubs that will expect something even with headless off */
+ if (!HeadlessGlobals)
+ {
+ /* Don't allow the SAC to connect */
+ if (Command == HeadlessCmdEnableTerminal) return STATUS_UNSUCCESSFUL;
+
+ /* Send bogus reply */
+ if ((Command == HeadlessCmdQueryInformation) ||
+ (Command == HeadlessCmdGetByte) ||
+ (Command == HeadlessCmdGetLine) ||
+ (Command == HeadlessCmdCheckForReboot) ||
+ (Command == HeadlessCmdTerminalPoll))
+ {
+ if (!(OutputBuffer) || !(OutputBufferSize))
+ {
+ return STATUS_INVALID_PARAMETER;
+ }
+
+ RtlZeroMemory(OutputBuffer, *OutputBufferSize);
+ }
+ return STATUS_SUCCESS;
+ }
+
+ /* Do the real work */
+ return HdlspDispatch(Command,
+ InputBuffer,
+ InputBufferSize,
+ OutputBuffer,
+ OutputBufferSize);
+}
/* EOF */
/* FUNCTIONS *****************************************************************/
+BOOLEAN
+NTAPI
+InbvPortPollOnly(IN ULONG PortId)
+{
+ UCHAR Dummy;
+
+ /* Poll a byte from the port */
+ return CpGetByte(&Port[PortId], &Dummy, FALSE, TRUE) == CP_GET_SUCCESS;
+}
+
+BOOLEAN
+NTAPI
+InbvPortGetByte(IN ULONG PortId,
+ OUT PUCHAR Char)
+{
+ /* Read a byte from the port */
+ return CpGetByte(&Port[PortId], Char, TRUE, FALSE) == CP_GET_SUCCESS;
+}
+
VOID
NTAPI
InbvPortEnableFifo(IN ULONG PortId,
//
// Headless Bugcheck Information
//
-typedef struct _HEADLESS_BLUE_SCREEN_DATA
+typedef struct _HEADLESS_CMD_SET_BLUE_SCREEN_DATA
{
- PUCHAR Property;
- PUCHAR XMLData;
- struct _HEADLESS_BLUE_SCREEN_DATA *Next;
-} HEADLESS_BLUE_SCREEN_DATA, * PHEADLESS_BLUE_SCREEN_DATA;
+ ULONG ValueIndex;
+ UCHAR Data[ANYSIZE_ARRAY];
+} HEADLESS_CMD_SET_BLUE_SCREEN_DATA, *PHEADLESS_CMD_SET_BLUE_SCREEN_DATA;
//
// Headless Control Structure, mostly for !SAC
PHEADLESS_LOG_ENTRY LogEntries;
PUCHAR TmpBuffer;
PUCHAR InputBuffer;
- PHEADLESS_BLUE_SCREEN_DATA BlueScreenData;
+ PHEADLESS_CMD_SET_BLUE_SCREEN_DATA BlueScreenData;
union
{
struct
};
} HEADLESS_RSP_QUERY_INFO, *PHEADLESS_RSP_QUERY_INFO;
+typedef struct _HEADLESS_CMD_ENABLE_TERMINAL
+{
+ BOOLEAN Enable;
+} HEADLESS_CMD_ENABLE_TERMINAL, *PHEADLESS_CMD_ENABLE_TERMINAL;
+
typedef struct _HEADLESS_CMD_PUT_STRING
{
UCHAR String[1];
} HEADLESS_CMD_PUT_STRING, *PHEADLESS_CMD_PUT_STRING;
+typedef struct _HEADLESS_RSP_GET_BYTE
+{
+ UCHAR Value;
+} HEADLESS_RSP_GET_BYTE, *PHEADLESS_RSP_GET_BYTE;
+
NTSTATUS
NTAPI
HeadlessDispatch(
IN BOOLEAN IsMMIODevice
);
+BOOLEAN
+NTAPI
+InbvPortPollOnly(
+ IN ULONG PortId
+);
+
+BOOLEAN
+NTAPI
+InbvPortGetByte(
+ IN ULONG PortId,
+ OUT PUCHAR Char
+);
+
extern BOOLEAN InbvBootDriverInstalled;
IN PCPPORT PortInformation,
OUT PUCHAR ByteReceived)
{
- return (CpGetByte(PortInformation, ByteReceived, FALSE) == CP_GET_SUCCESS);
+ return (CpGetByte(PortInformation, ByteReceived, FALSE, TRUE) == CP_GET_SUCCESS);
}
VOID
}
/*
-* @implemented
-*/
-NTSTATUS NTAPI
+ * @implemented
+ */
+NTSTATUS
+NTAPI
RtlGetVersion(IN OUT PRTL_OSVERSIONINFOW lpVersionInformation)
{
- LONG i;
- ULONG MaxLength;
+ PAGED_CODE();
- if (lpVersionInformation->dwOSVersionInfoSize == sizeof(RTL_OSVERSIONINFOW) ||
- lpVersionInformation->dwOSVersionInfoSize == sizeof(RTL_OSVERSIONINFOEXW))
- {
- lpVersionInformation->dwMajorVersion = NtMajorVersion;
- lpVersionInformation->dwMinorVersion = NtMinorVersion;
- lpVersionInformation->dwBuildNumber = NtBuildNumber;
- lpVersionInformation->dwPlatformId = VER_PLATFORM_WIN32_NT;
- RtlZeroMemory(lpVersionInformation->szCSDVersion, sizeof(lpVersionInformation->szCSDVersion));
-
- if(((CmNtCSDVersion >> 8) & 0xFF) != 0)
- {
- MaxLength = (sizeof(lpVersionInformation->szCSDVersion) / sizeof(lpVersionInformation->szCSDVersion[0])) - 1;
- i = _snwprintf(lpVersionInformation->szCSDVersion,
- MaxLength,
- L"Service Pack %d",
- ((CmNtCSDVersion >> 8) & 0xFF));
- if (i < 0)
- {
- /* Null-terminate if it was overflowed */
- lpVersionInformation->szCSDVersion[MaxLength] = L'\0';
- }
- }
+ /* Return the basics */
+ lpVersionInformation->dwMajorVersion = NtMajorVersion;
+ lpVersionInformation->dwMinorVersion = NtMinorVersion;
+ lpVersionInformation->dwBuildNumber = NtBuildNumber & 0x3FFF;
+ lpVersionInformation->dwPlatformId = VER_PLATFORM_WIN32_NT;
- if (lpVersionInformation->dwOSVersionInfoSize == sizeof(RTL_OSVERSIONINFOEXW))
- {
- PRTL_OSVERSIONINFOEXW InfoEx = (PRTL_OSVERSIONINFOEXW)lpVersionInformation;
- InfoEx->wServicePackMajor = (USHORT)(CmNtCSDVersion >> 8) & 0xFF;
- InfoEx->wServicePackMinor = (USHORT)(CmNtCSDVersion & 0xFF);
- InfoEx->wSuiteMask = (USHORT)(SharedUserData->SuiteMask & 0xFFFF);
- InfoEx->wProductType = SharedUserData->NtProductType;
- InfoEx->wReserved = 0;
- }
-
- return STATUS_SUCCESS;
+ /* Check if this is the extended version */
+ if (lpVersionInformation->dwOSVersionInfoSize == sizeof(RTL_OSVERSIONINFOEXW))
+ {
+ PRTL_OSVERSIONINFOEXW InfoEx = (PRTL_OSVERSIONINFOEXW)lpVersionInformation;
+ InfoEx->wServicePackMajor = (USHORT)(CmNtCSDVersion >> 8) & 0xFF;
+ InfoEx->wServicePackMinor = (USHORT)(CmNtCSDVersion & 0xFF);
+ InfoEx->wSuiteMask = (USHORT)(SharedUserData->SuiteMask & 0xFFFF);
+ InfoEx->wProductType = SharedUserData->NtProductType;
+ InfoEx->wReserved = 0;
}
- return STATUS_INVALID_PARAMETER;
+ /* Always succeed */
+ return STATUS_SUCCESS;
}
/* EOF */
DWORD dwFlags;
PWSTR lpBuffer;
- DPRINT("BaseSrvDefineDosDevice entered, Flags:%d, DeviceName:%wZ, TargetName:%wZ\n",
- DefineDosDeviceRequest->dwFlags,
+ DPRINT("BaseSrvDefineDosDevice entered, Flags:%d, DeviceName:%wZ, TargetPath:%wZ\n",
+ DefineDosDeviceRequest->Flags,
&DefineDosDeviceRequest->DeviceName,
- &DefineDosDeviceRequest->TargetName);
+ &DefineDosDeviceRequest->TargetPath);
Matched = AddHistory = FALSE;
HistoryEntry = NULL;
AdminSid = SystemSid = WorldSid = NULL;
SecurityDescriptor = NULL;
ListHead = &DosDeviceHistory;
- dwFlags = DefineDosDeviceRequest->dwFlags;
+ dwFlags = DefineDosDeviceRequest->Flags;
/* Validate the flags */
if ( (dwFlags & 0xFFFFFFF0) ||
if (!NT_SUCCESS(Status))
_SEH2_LEAVE;
- RequestLinkTarget = &DefineDosDeviceRequest->TargetName;
+ RequestLinkTarget = &DefineDosDeviceRequest->TargetPath;
lpBuffer = (PWSTR)RtlAllocateHeap(BaseSrvHeap,
HEAP_ZERO_MEMORY,
RequestDeviceName.MaximumLength + 5 * sizeof(WCHAR));
CSR_API(BaseSrvGetTempFile)
{
static UINT BaseGetTempFileUnique = 0;
- PBASE_GET_TEMP_FILE GetTempFile = &((PBASE_API_MESSAGE)ApiMessage)->Data.GetTempFile;
+ PBASE_GET_TEMP_FILE GetTempFile = &((PBASE_API_MESSAGE)ApiMessage)->Data.GetTempFileRequest;
/* Return 16-bits ID */
GetTempFile->UniqueID = (++BaseGetTempFileUnique & 0xFFFF);
CSR_API(BaseSrvGetProcessShutdownParam)
{
- PBASE_GET_PROCESS_SHUTDOWN_PARAMS GetShutdownParametersRequest = &((PBASE_API_MESSAGE)ApiMessage)->Data.GetShutdownParametersRequest;
+ PBASE_GETSET_PROCESS_SHUTDOWN_PARAMS ShutdownParametersRequest = &((PBASE_API_MESSAGE)ApiMessage)->Data.ShutdownParametersRequest;
PCSR_THREAD CsrThread = CsrGetClientThread();
ASSERT(CsrThread);
- GetShutdownParametersRequest->Level = CsrThread->Process->ShutdownLevel;
- GetShutdownParametersRequest->Flags = CsrThread->Process->ShutdownFlags;
+ ShutdownParametersRequest->ShutdownLevel = CsrThread->Process->ShutdownLevel;
+ ShutdownParametersRequest->ShutdownFlags = CsrThread->Process->ShutdownFlags;
return STATUS_SUCCESS;
}
CSR_API(BaseSrvSetProcessShutdownParam)
{
- PBASE_SET_PROCESS_SHUTDOWN_PARAMS SetShutdownParametersRequest = &((PBASE_API_MESSAGE)ApiMessage)->Data.SetShutdownParametersRequest;
+ PBASE_GETSET_PROCESS_SHUTDOWN_PARAMS ShutdownParametersRequest = &((PBASE_API_MESSAGE)ApiMessage)->Data.ShutdownParametersRequest;
PCSR_THREAD CsrThread = CsrGetClientThread();
ASSERT(CsrThread);
- CsrThread->Process->ShutdownLevel = SetShutdownParametersRequest->Level;
- CsrThread->Process->ShutdownFlags = SetShutdownParametersRequest->Flags;
+ CsrThread->Process->ShutdownLevel = ShutdownParametersRequest->ShutdownLevel;
+ CsrThread->Process->ShutdownFlags = ShutdownParametersRequest->ShutdownFlags;
return STATUS_SUCCESS;
}
--- /dev/null
+/*
+ * COPYRIGHT: See COPYING in the top level directory
+ * PROJECT: ReactOS Base API Server DLL
+ * FILE: subsystems/win/basesrv/vdm.c
+ * PURPOSE: Virtual DOS Machines (VDM) Support
+ * PROGRAMMERS: Hermes Belusca-Maito (hermes.belusca@sfr.fr)
+ */
+
+/* INCLUDES *******************************************************************/
+
+#include "basesrv.h"
+
+#define NDEBUG
+#include <debug.h>
+
+/* EOF */
PCSR_THREAD CsrThread = NULL;
PCSR_PROCESS CsrProcess = NULL;
NTSTATUS Status = STATUS_SUCCESS;
- PCSR_CONNECTION_INFO ConnectInfo = &ApiMessage->ConnectionInfo;
+ PCSR_API_CONNECTINFO ConnectInfo = &ApiMessage->ConnectionInfo;
BOOLEAN AllowConnection = FALSE;
REMOTE_PORT_VIEW RemotePortView;
HANDLE ServerPort;
{
DPRINT1("CSRSS: Creating %wZ port and associated threads\n", &CsrApiPortName);
DPRINT1("CSRSS: sizeof( CONNECTINFO ) == %ld sizeof( API_MSG ) == %ld\n",
- sizeof(CSR_CONNECTION_INFO), sizeof(CSR_API_MESSAGE));
+ sizeof(CSR_API_CONNECTINFO), sizeof(CSR_API_MESSAGE));
}
/* FIXME: Create a Security Descriptor */
/* Create the Port Object */
Status = NtCreatePort(&CsrApiPort,
&ObjectAttributes,
- sizeof(CSR_CONNECTION_INFO),
+ sizeof(CSR_API_CONNECTINFO),
sizeof(CSR_API_MESSAGE),
16 * PAGE_SIZE);
if (NT_SUCCESS(Status))
NTSTATUS
NTAPI
CsrSrvAttachSharedSection(IN PCSR_PROCESS CsrProcess OPTIONAL,
- OUT PCSR_CONNECTION_INFO ConnectInfo);
+ OUT PCSR_API_CONNECTINFO ConnectInfo);
NTSTATUS
NTAPI
NTSTATUS
NTAPI
CsrSrvAttachSharedSection(IN PCSR_PROCESS CsrProcess OPTIONAL,
- OUT PCSR_CONNECTION_INFO ConnectInfo)
+ OUT PCSR_API_CONNECTINFO ConnectInfo)
{
NTSTATUS Status;
ULONG ViewSize = 0;
FT_Face Face;
ANSI_STRING AnsiFaceName;
PFONT_ENTRY Entry;
- PSECTION_OBJECT SectionObject;
+ PVOID SectionObject;
ULONG ViewSize = 0;
LARGE_INTEGER SectionSize;
UNICODE_STRING FontRegPath = RTL_CONSTANT_STRING(L"\\REGISTRY\\Machine\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Fonts");
}
SectionSize.QuadPart = 0LL;
- Status = MmCreateSection((PVOID)&SectionObject, SECTION_ALL_ACCESS,
+ Status = MmCreateSection(&SectionObject, SECTION_ALL_ACCESS,
NULL, &SectionSize, PAGE_READONLY,
SEC_COMMIT, FileHandle, NULL);
if (!NT_SUCCESS(Status))
PWND spwndTray;
PWND spwndMessage;
PWND spwndTooltip;
- PSECTION_OBJECT hsectionDesktop;
+ PVOID hsectionDesktop;
PWIN32HEAP pheapDesktop;
ULONG_PTR ulHeapSize;
LIST_ENTRY PtiList;
HANDLE hModuleWin;
-PGDI_HANDLE_TABLE NTAPI GDIOBJ_iAllocHandleTable(OUT PSECTION_OBJECT *SectionObject);
+PGDI_HANDLE_TABLE NTAPI GDIOBJ_iAllocHandleTable(OUT PVOID *SectionObject);
BOOL NTAPI GDI_CleanupForProcess (struct _EPROCESS *Process);
NTSTATUS NTAPI UserDestroyThreadInfo(struct _ETHREAD *Thread);
HANDLE GlobalUserHeap = NULL;
-PSECTION_OBJECT GlobalUserHeapSection = NULL;
+PVOID GlobalUserHeapSection = NULL;
PSERVERINFO gpsi = NULL; // Global User Server Information.
extern HANDLE GlobalUserHeap;
PWIN32HEAP
-UserCreateHeap(OUT PSECTION_OBJECT *SectionObject,
+UserCreateHeap(OUT PVOID *SectionObject,
IN OUT PVOID *SystemBase,
IN SIZE_T HeapSize);
{
SIZE_T ViewSize = 0;
LARGE_INTEGER Offset;
- extern PSECTION_OBJECT GlobalUserHeapSection;
+ extern PVOID GlobalUserHeapSection;
/* HACK: This needs to be handled during startup only... */
ASSERT(Base == (PVOID)GlobalUserHeap);
}
static PWIN32HEAP
-IntUserHeapCreate(IN PSECTION_OBJECT SectionObject,
+IntUserHeapCreate(IN PVOID SectionObject,
IN PVOID *SystemMappedBase,
IN ULONG HeapSize)
{
}
PWIN32HEAP
-UserCreateHeap(OUT PSECTION_OBJECT *SectionObject,
+UserCreateHeap(OUT PVOID *SectionObject,
IN OUT PVOID *SystemBase,
IN SIZE_T HeapSize)
{
**************************************************************************/
NTSTATUS Status = STATUS_SUCCESS;
- PCONSOLE_CONNECTION_INFO ConnectInfo = (PCONSOLE_CONNECTION_INFO)ConnectionInfo;
+ PCONSRV_API_CONNECTINFO ConnectInfo = (PCONSRV_API_CONNECTINFO)ConnectionInfo;
PCONSOLE_PROCESS_DATA ProcessData = ConsoleGetPerProcessData(CsrProcess);
if ( ConnectionInfo == NULL ||
ConnectionInfoLength == NULL ||
- *ConnectionInfoLength != sizeof(CONSOLE_CONNECTION_INFO) )
+ *ConnectionInfoLength != sizeof(CONSRV_API_CONNECTINFO) )
{
DPRINT1("CONSRV: Connection failed\n");
return STATUS_UNSUCCESSFUL;