89{
96
97
98 if ((InSize < 0) || (OutSize < 0) || (UnsafeInData ==
NULL && InSize != 0))
99 {
101 return -1;
102 }
103
105 {
107 {
108
110 return -1;
111 }
112
114 if (!ppdev)
115 {
117 return -1;
118 }
119
120
122
124 if (!psurf)
125 {
128 return 0;
129 }
131 }
132 else
133 {
136 {
138 return -1;
139 }
140
141
142 ppdev = pDC->ppdev;
144
146
147
148 psurf = pDC->dclevel.pSurface;
149 if (!psurf)
150 {
154 return 0;
155 }
157
158
160 }
161
162
164 {
167 }
168
169 if (InSize)
170 {
172 if (SafeInData ==
NULL)
173 {
176 }
178 {
181 }
183 {
187 }
189 }
190
191 if (OutSize)
192 {
193 if (UnsafeOutData !=
NULL)
194 {
196 {
198 }
200 {
204 }
206 }
207
209 if (SafeOutData ==
NULL)
210 {
213 }
214 }
215
216
220 InSize,
221 SafeInData,
222 OutSize,
223 SafeOutData);
224
225 if (OutSize != 0 && UnsafeOutData !=
NULL && SafeOutData !=
NULL)
226 {
228 {
230 }
232 {
236 }
238 }
239
244
245 if (SafeInData !=
NULL)
246 {
248 }
249
250 if (SafeOutData !=
NULL)
251 {
253 }
254
256}
#define ERROR_NOT_ENOUGH_MEMORY
#define ERROR_INVALID_PARAMETER
#define ExAllocatePoolWithTag(hernya, size, tag)
VOID NTAPI ProbeForRead(IN CONST VOID *Address, IN SIZE_T Length, IN ULONG Alignment)
VOID NTAPI ProbeForWrite(IN PVOID Address, IN SIZE_T Length, IN ULONG Alignment)
VOID WINAPI EngReleaseSemaphore(IN HSEMAPHORE hsem)
#define EXCEPTION_EXECUTE_HANDLER
#define ExFreePoolWithTag(_P, _T)
FORCEINLINE PVOID ExAllocatePoolZero(ULONG PoolType, SIZE_T NumberOfBytes, ULONG Tag)
PPDEVOBJ NTAPI EngpGetPDEV(_In_opt_ PUNICODE_STRING pustrDeviceName)
VOID NTAPI PDEVOBJ_vRelease(_Inout_ PPDEVOBJ ppdev)
FORCEINLINE VOID PDEVOBJ_vReference(_In_ PPDEVOBJ ppdev)
#define _SEH2_GetExceptionCode()
#define _SEH2_EXCEPT(...)
#define _SEH2_YIELD(__stmt)
DRIVER_FUNCTIONS DriverFunctions
#define RtlCopyMemory(Destination, Source, Length)
VOID FASTCALL SetLastNtError(_In_ NTSTATUS Status)
#define SURFACE_ShareUnlockSurface(pBMObj)
FORCEINLINE VOID SURFACE_ShareLockByPointer(PSURFACE psurf)
ENGAPI VOID APIENTRY EngAcquireSemaphore(_Inout_ HSEMAPHORE hsem)
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO