40 ERR(
"RevertToPrinterSelf failed with error %lu!\n",
res);
113 if (!pXcv || !pInputData || !pcbOutputNeeded)
119 *pcbOutputNeeded = 0;
133 ERR(
"RevertToPrinterSelf failed with error %lu!\n", dwErrorCode);
141 ERR(
"RegOpenKeyExW failed with status %lu!\n", dwErrorCode);
152 ERR(
"RegSetValueExW failed with status %lu!\n", dwErrorCode);
197 ERR(
"RevertToPrinterSelf failed with error %lu!\n",
res);
227 FIXME(
"LcmXcvDeletePort removed Port Entry\n");
269 if (!pInputData || !pcbOutputNeeded)
275 if (cbOutputData < *pcbOutputNeeded)
309 if (!pOutputData || !pcbOutputNeeded)
312 *pcbOutputNeeded =
sizeof(
DWORD);
315 if (cbOutputData < *pcbOutputNeeded)
344 const WCHAR wszMonitorUI[] =
L"LocalUI.dll";
347 if (!pcbOutputNeeded)
350 *pcbOutputNeeded =
sizeof(wszMonitorUI);
353 if (cbOutputData < *pcbOutputNeeded)
360 CopyMemory(pOutputData, wszMonitorUI,
sizeof(wszMonitorUI));
388 if (!pInputData || !pOutputData || !pcbOutputNeeded)
391 *pcbOutputNeeded =
sizeof(
BOOL);
394 if (cbOutputData < *pcbOutputNeeded)
411 TRACE(
"HandlePortIsValid : detected as %u\n",
res);
457 *pcbOutputNeeded = 0;
476 ERR(
"RevertToPrinterSelf failed with error %lu!\n", dwErrorCode);
485 ERR(
"SetDefaultCommConfigW failed with error %lu!\n", dwErrorCode);
495 if (pwszPortNameWithoutColon)
506 TRACE(
"LocalmonXcvClosePort(%p)\n",
hXcv);
528 FIXME(
"LocalmonXcvDataPort(%p, %S, %p, %lu, %p, %lu, %p)\n",
hXcv, pszDataName, pInputData, cbInputData, pOutputData, cbOutputData, pcbOutputNeeded);
535 if (
wcscmp(pszDataName,
L"AddPort") == 0)
538 if (
wcscmp(pszDataName,
L"ConfigureLPTPortCommandOK") == 0)
541 if (
wcscmp(pszDataName,
L"DeletePort") == 0)
544 if (
wcscmp(pszDataName,
L"GetDefaultCommConfig") == 0)
547 if (
wcscmp(pszDataName,
L"GetTransmissionRetryTimeout") == 0)
550 if (
wcscmp(pszDataName,
L"MonitorUI") == 0)
553 if (
wcscmp(pszDataName,
L"PortExists") == 0)
554 return _HandlePortExists(pInputData, pOutputData, cbOutputData, pcbOutputNeeded);
556 if (
wcscmp(pszDataName,
L"PortIsValid") == 0)
559 if (
wcscmp(pszDataName,
L"SetDefaultCommConfig") == 0)
573 FIXME(
"LocalmonXcvOpenPort(%p, %S, %lu, %p)\n", hMonitor, pwszObject,
GrantedAccess, phXcv);
576 if (!pLocalmon || !phXcv)
583 cbObject = (
wcslen(pwszObject) + 1) *
sizeof(
WCHAR);
static UNICODE_STRING PortName
#define RegCloseKey(hKey)
#define ERROR_NOT_ENOUGH_MEMORY
#define ERROR_INSUFFICIENT_BUFFER
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
LONG WINAPI RegOpenKeyW(HKEY hKey, LPCWSTR lpSubKey, PHKEY phkResult)
LONG WINAPI RegSetValueExW(_In_ HKEY hKey, _In_ LPCWSTR lpValueName, _In_ DWORD Reserved, _In_ DWORD dwType, _In_ CONST BYTE *lpData, _In_ DWORD cbData)
LONG WINAPI RegDeleteValueW(HKEY hKey, LPCWSTR lpValueName)
#define ERROR_INVALID_PARAMETER
#define INVALID_HANDLE_VALUE
#define ERROR_ACCESS_DENIED
BOOL WINAPI SetDefaultCommConfigW(LPCWSTR lpszDevice, LPCOMMCONFIG lpCommConfig, DWORD dwSize)
BOOL WINAPI GetDefaultCommConfigW(LPCWSTR lpszName, LPCOMMCONFIG lpCC, LPDWORD lpdwSize)
static const WCHAR Cleanup[]
#define RemoveEntryList(Entry)
#define InsertTailList(ListHead, Entry)
#define IsListEmpty(ListHead)
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
#define ERROR_ALREADY_EXISTS
static DWORD _HandleGetTransmissionRetryTimeout(PBYTE pOutputData, DWORD cbOutputData, PDWORD pcbOutputNeeded)
BOOL WINAPI LocalmonXcvOpenPort(HANDLE hMonitor, PCWSTR pwszObject, ACCESS_MASK GrantedAccess, PHANDLE phXcv)
static DWORD _HandleDeletePort(PLOCALMON_XCV pXcv, PBYTE pInputData, PDWORD pcbOutputNeeded)
static DWORD _HandleSetDefaultCommConfig(PLOCALMON_XCV pXcv, PBYTE pInputData, PDWORD pcbOutputNeeded)
BOOL WINAPI LocalmonXcvClosePort(HANDLE hXcv)
static DWORD _HandlePortIsValid(PBYTE pInputData, PBYTE pOutputData, DWORD cbOutputData, PDWORD pcbOutputNeeded)
static DWORD _HandleGetDefaultCommConfig(PBYTE pInputData, PBYTE pOutputData, DWORD cbOutputData, PDWORD pcbOutputNeeded)
static DWORD _HandlePortExists(PBYTE pInputData, PBYTE pOutputData, DWORD cbOutputData, PDWORD pcbOutputNeeded)
DWORD WINAPI LocalmonXcvDataPort(HANDLE hXcv, PCWSTR pszDataName, PBYTE pInputData, DWORD cbInputData, PBYTE pOutputData, DWORD cbOutputData, PDWORD pcbOutputNeeded)
static DWORD _HandleConfigureLPTPortCommandOK(PLOCALMON_XCV pXcv, PBYTE pInputData, PDWORD pcbOutputNeeded)
static DWORD _HandleAddPort(PLOCALMON_XCV pXcv, PBYTE pInputData, PDWORD pcbOutputNeeded)
static DWORD _HandleMonitorUI(PBYTE pOutputData, DWORD cbOutputData, PDWORD pcbOutputNeeded)
HANDLE WINAPI RevertToPrinterSelf(VOID)
BOOL WINAPI ImpersonatePrinterClient(_In_ HANDLE hToken)
_Check_return_ _CRTIMP int __cdecl wcscmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
base of all file and directory entries
struct _LIST_ENTRY * Flink
PLOCALMON_HANDLE pLocalmon
PLOCALMON_HANDLE pLocalmon
ACCESS_MASK GrantedAccess
#define CONTAINING_RECORD(address, type, field)
BOOL WINAPI DllFreeSplMem(PVOID pMem)
PVOID WINAPI DllAllocSplMem(DWORD dwBytes)
DWORD GetTypeFromName(LPCWSTR name)
struct _LOCALMON_XCV LOCALMON_XCV
DWORD GetPortNameWithoutColon(PCWSTR pwszPortName, PWSTR *ppwszPortNameWithoutColon)
struct _LOCALMON_HANDLE * PLOCALMON_HANDLE
struct _LOCALMON_XCV * PLOCALMON_XCV
DWORD GetLPTTransmissionRetryTimeout(VOID)
BOOL DoesPortExist(PCWSTR pwszPortName)
struct _COMM_CONFIG COMMCONFIG
DWORD WINAPI GetLastError(void)
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
struct _COMM_CONFIG * LPCOMMCONFIG
_In_ void _In_ PCCERT_CONTEXT _In_opt_ LPFILETIME _In_ DWORD _In_ DWORD dwTimeout
#define HKEY_LOCAL_MACHINE
#define SERVER_ACCESS_ADMINISTER
_In_ PSECURITY_SUBJECT_CONTEXT _In_ BOOLEAN _In_ ACCESS_MASK _In_ ACCESS_MASK _Outptr_opt_ PPRIVILEGE_SET _In_ PGENERIC_MAPPING _In_ KPROCESSOR_MODE _Out_ PACCESS_MASK GrantedAccess