#include "precomp.h"
+static void
+_MarshallUpAddJobInfo(PADDJOB_INFO_1W pAddJobInfo1)
+{
+ // Replace relative offset addresses in the output by absolute pointers.
+ pAddJobInfo1->Path = (PWSTR)((ULONG_PTR)pAddJobInfo1->Path + (ULONG_PTR)pAddJobInfo1);
+}
+
static void
_MarshallUpJobInfo(PBYTE pJobInfo, DWORD Level)
{
PJOB_INFO_1W pJobInfo1;
PJOB_INFO_2W pJobInfo2;
- // Replace absolute pointer addresses in the output by relative offsets.
+ // Replace relative offset addresses in the output by absolute pointers.
if (Level == 1)
{
pJobInfo1 = (PJOB_INFO_1W)pJobInfo;
AddJobW(HANDLE hPrinter, DWORD Level, PBYTE pData, DWORD cbBuf, PDWORD pcbNeeded)
{
DWORD dwErrorCode;
- PADDJOB_INFO_1W pAddJobInfo1;
PSPOOLER_HANDLE pHandle = (PSPOOLER_HANDLE)hPrinter;
if (!pHandle)
RpcEndExcept;
if (dwErrorCode == ERROR_SUCCESS)
- {
- // Replace relative offset addresses in the output by absolute pointers.
- pAddJobInfo1 = (PADDJOB_INFO_1W)pData;
- pAddJobInfo1->Path = (PWSTR)((ULONG_PTR)pAddJobInfo1->Path + (ULONG_PTR)pAddJobInfo1);
- }
+ _MarshallUpAddJobInfo((PADDJOB_INFO_1W)pData);
Cleanup:
SetLastError(dwErrorCode);