MCPcopy Create free account
hub / github.com/HoShiMin/Kernel-Bridge / KbWritePortString

Function KbWritePortString

Kernel-Bridge/Kernel-Bridge/IOCTLHandlers.cpp:225–256  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

223 }
224
225 NTSTATUS FASTCALL KbWritePortString(IN PIOCTL_INFO RequestInfo, OUT PSIZE_T ResponseLength)
226 {
227 UNREFERENCED_PARAMETER(ResponseLength);
228
229 if (RequestInfo->InputBufferSize <= sizeof(KB_WRITE_PORT_STRING_IN))
230 return STATUS_INFO_LENGTH_MISMATCH;
231
232 auto Input = static_cast<PKB_WRITE_PORT_STRING_IN>(RequestInfo->InputBuffer);
233 if (!Input) return STATUS_INVALID_PARAMETER;
234
235 if (Input->BufferSize < Input->Count * Input->Granularity)
236 return STATUS_INFO_LENGTH_MISMATCH;
237
238 switch (Input->Granularity) {
239 case sizeof(UCHAR): {
240 IO::RW::WritePortByteString(Input->PortNumber, reinterpret_cast<unsigned char*>(Input->Buffer), Input->Count);
241 break;
242 }
243 case sizeof(USHORT): {
244 IO::RW::WritePortWordString(Input->PortNumber, reinterpret_cast<unsigned short*>(Input->Buffer), Input->Count);
245 break;
246 }
247 case sizeof(ULONG): {
248 IO::RW::WritePortDwordString(Input->PortNumber, reinterpret_cast<unsigned long*>(Input->Buffer), Input->Count);
249 break;
250 }
251 default:
252 return STATUS_INVALID_PARAMETER;
253 }
254
255 return STATUS_SUCCESS;
256 }
257
258 NTSTATUS FASTCALL KbCli(IN PIOCTL_INFO RequestInfo, OUT PSIZE_T ResponseLength)
259 {

Callers

nothing calls this directly

Calls 3

WritePortByteStringFunction · 0.85
WritePortWordStringFunction · 0.85
WritePortDwordStringFunction · 0.85

Tested by

no test coverage detected